【问题标题】:Xcode 8 Fastlane build with TeamCity codesign failed with exit code 1使用 TeamCity 代码设计的 Xcode 8 Fastlane 构建失败,退出代码为 1
【发布时间】:2017-06-07 03:38:35
【问题描述】:

我在 macOS Sierra 上使用 Xcode 8.3.2 时遇到了一个奇怪的严重问题。我可以使用 fastlane 或手动执行命令在构建机器上本地构建应用程序。开发和临时构建都可以在本地创建。

 $ fastlane <lane_name>

但是当从 TeamCity 尝试相同的操作时,它会引发以下错误。

 [exec]/usr/bin/codesign --force --sign 5609CEE02FBF256EDBF60DB28C1A2995A2153B5B --entitlements /Users/<username>/Library/Developer/Xcode/DerivedData/<AppName>-frpvxgdtafatrrgbjqbbepgfzvak/Build/Intermediates/ArchiveIntermediates/SabaMeeting/IntermediateBuildFilesPath/<AppName>.build/Release-iphoneos/<AppName>.build/<AppName>.app.xcent --timestamp=none /Users/<username>/Library/Developer/Xcode/DerivedData/<AppName>-frpvxgdtafatrrgbjqbbepgfzvak/Build/Intermediates/ArchiveIntermediates/SabaMeeting/InstallationBuildProductsLocation/Applications/<AppName>.app
 [exec] /Users/<username>/Library/Developer/Xcode/DerivedData/SabaMeeting-frpvxgdtafatrrgbjqbbepgfzvak/Build/Intermediates/ArchiveIntermediates/SabaMeeting/InstallationBuildProductsLocation/Applications/<AppName>.app: unknown error -1=ffffffffffffffff
 [exec] Command /usr/bin/codesign failed with exit code 1
 [exec] 
 [exec] ** ARCHIVE FAILED **
 [exec] 
 [exec] 
 [exec] The following build commands failed:
 [exec]     CodeSign /Users/<username>/Library/Developer/Xcode/DerivedData/SabaMeeting-frpvxgdtafatrrgbjqbbepgfzvak/Build/Intermediates/ArchiveIntermediates/<AppName>/InstallationBuildProductsLocation/Applications/SabaMeeting.app
 [exec] (1 failure)

TeamCity 提取代码甚至执行命令但失败。 构建步骤:使用自定义脚本设置 TeamCity 命令行。 尝试了以下方法但不起作用:

  1. Xcode Preferences ->Accounts->删除已经添加的账号并重新添加
  2. 生成新的分发和开发者证书并安装在 KeyChain 中。新的 Provisioning Profiles 并安装在 Xcode 中。
  3. 通过“允许所有应用程序访问此项目”验证了对私钥的钥匙串访问。将证书从登录名移至系统,并对所有人进行访问控制。
  4. 重装xcode 8.3.2,重启机器。
  5. 已安装 Apple 全球开发者关系证书颁发机构。
  6. 应用程序和派生数据目录中不允许使用已验证的资源分叉、查找器信息或类似的碎屑。 https://developer.apple.com/library/content/qa/qa1940/_index.html
  7. 该项目不使用 CocoaPods。
  8. 已尝试清除 DerivedData。

还有更多的研发。任何帮助将不胜感激。

【问题讨论】:

  • 看起来代码签名与您的本地机器不匹配......您能分享更多信息吗? Xcode 项目的配置文件部分的屏幕截图,这个失败来自健身房、比赛、叹息之后的什么 fastlane 命令?你在快速文件中使用use_legacy_build_api:true 吗?
  • 我没有使用自动代码签名。 use_legacy_build_api:true 自 Xcode 8 起已弃用,因此我没有使用它。正如我所说,fastlane 正在构建机器上本地执行和创建构建,但不是在从 TeamCity 触发时。 imgur.com/a/lI63T

标签: ios teamcity xcode8 macos-sierra codesign


【解决方案1】:

你的车道在你的 fastfile 上看起来如何?请分享它...

我的猜测;

3 通过“允许所有应用程序访问此项目”验证对私钥的钥匙串访问。将证书从登录移动到系统,对所有人进行访问控制。

Teamcity 可能无法访问您的证书并且失败。

试试这个;

  1. 将证书移回系统登录。
  2. 在您的 gym 或任何正在构建 .ipa 的 fastlane 命令之前添加以下内容。这将让 teamcity 解锁并访问钥匙串。

lane :beta 做 |options|

  unlock_keychain(path:"login.keychain", password:"yoursystempassword") 
  sh "security set-keychain-settings -t 3600 -l ~/Library/Keychains/login.keychain"   
  gym(scheme: "yourapp", workspace:"probably you dont have a wokrspace so no need")   
end  

【讨论】:

  • 我现在保持快速通道简单,如下所示:app_distribution do gym( scheme: , export_method: "ad-hoc", clean: true, output_directory: "./build", buildlog_path: "./build/logs" ) end 让我试试你的建议。
  • 感谢@u.gen,它成功了。系统钥匙串有问题吗?过去的许多系统只对我有用。
  • Jenkins 或 Teamcity 脚本总是无法访问钥匙串,我不知道为什么。所以解锁钥匙链并设置一个大数字的超时工作。
猜你喜欢
  • 2011-12-24
  • 2011-04-11
  • 1970-01-01
  • 1970-01-01
  • 2016-03-03
  • 2017-10-20
  • 1970-01-01
  • 1970-01-01
  • 2016-02-27
相关资源
最近更新 更多