通过Jenkins和Fastlane构建iOS管道时出现CodeSign错误

soat7uwm  于 2023-11-17  发布在  Jenkins
关注(0)|答案(2)|浏览(149)

我正在尝试使用Jenkins和Fastlane构建iOS应用程序。Jenkins master是一台Linux机器,slave是一台macOS机器,都运行在AWS上。
项目仓库托管在Gitlab上。
当管道通过Jenkins运行时,它会给出以下错误:

以下构建命令失败:安装Swift正常arm 64 CodeSign /Users/ec2-user/Library/Developer/Xcode/DerivedData/AssociatedPress-fccudiwnsqoxlobymusvrmoonnxe/Build/Intermediates.noindex/ArchiveIntermediates/AssociatedPress/IntermediateBuildFilesPath/UninstalledProducts/iphoneos/AssociatedPress\ Notification\ Extension.appex

我的fasyfile的内容是:

node('macos') {
    {
        stage('Checkout') {
            checkout scm
        }

        stage('Resolve packages') {
            sh 'bash resolvePackages'
        }

        stage('Build Store') {
            sh 'fastlane store'
        }
    }
}

字符串
Fastfile如下:

default_platform :ios

platform :ios do

  desc "Build Store"
  lane :store do
    gym(workspace: "AssociatedPress.xcworkspace",
        scheme: "AssociatedPress",
        clean: true,
        output_directory: "./fastlane/Store",
        archive_path: "./fastlane/Store/AssociatedPressStore.xcarchive",
        buildlog_path: "./fastlane/Store/build_log",
        export_method: "app-store",
        export_options: {
            provisioningProfiles: { 
              "com.apnews.ipad.mobilenewsdevel" => "AP News Store",
              "com.apnews.ipad.mobilenewsdevel.watchkitapp" => "AP News WatchApp Store",
              "com.apnews.ipad.mobilenewsdevel.watchkitapp.watchkitextension" => "AP News WatchExtension Store",
              "com.apnews.ipad.mobilenewsdevel.notificationextension" => "AP News Notification Store",
            },
            uploadBitcode: false,
            compileBitcode: false
        })
  end   
end


仅当通过Jenkins运行时,编译才会在CodeSign上失败。当在macOS从节点上本地运行fastlane命令时,编译会成功。
版本:-

  • macOS:11.5.1
  • xocde版本:12.5.1
  • 快速通道:2.192.0

我已经尝试了一些解决方案,如在健身房前解锁钥匙链,运行set-key-partition-list命令,没有一个解决了这个问题。

9cbw7uwe

9cbw7uwe1#

任何人遇到同样的错误,我们发现iOS不允许您通过SSH访问密钥链。由于Jenkins主节点使用SSH访问Jenkins从节点,因此访问密钥链被拒绝,导致CodeSign错误。
在花了将近一周的时间试图解决这个问题后,我们转向了Gitlab CI/CD而不是Jenkins,并实现了我们的目标。

zazmityj

zazmityj2#

我也遇到过类似的情况,我使用ssh连接到slave。正如here所指出的,这是Apple安全问题。默认情况下,您无法通过ssh访问keychain。您必须解锁它。因此,在我的Jenkinsfile中,在构建ipa之前,我运行以下代码

sh(
      returnStdout: true, 
      script: """
                 cd ~ && security unlock-keychain -p ${env.KEYCHAIN_PASSWORD} || exit 1
              """
).trim()

字符串
不确定是否会有任何安全问题,虽然。

相关问题