【问题标题】:How to fix Xcode's code sign issues on Jenkins?如何在 Jenkins 上修复 Xcode 的代码签名问题?
【发布时间】:2015-12-29 20:18:29
【问题描述】:

我已经完成了使 xcodebuild 在 jenkins 上工作的常规步骤,这将是安装“钥匙串和配置文件”插件,在插件的配置中上传正确的钥匙串 + 配置文件,并使用 security -v unlock-keychain 和 @ xcodebuild 命令中的 987654324@。

构建继续进行,甚至运行在 Xcode 项目中定义的 postbuild 脚本,并创建包含所有必要内容的 .app 文件夹,但在这里失败...

/Users/Shared/Jenkins/Home/jobs/iOS_feature/workspace/build/Applications/MyApp.app/Frameworks/libswiftUIKit.dylib: User interaction is not allowed.
*** error: Couldn't codesign /Users/Shared/Jenkins/Home/jobs/iOS_feature/workspace/build/Applications/MyApp.app/Frameworks/libswiftUIKit.dylib: codesign failed with exit code 1

任何想法可能导致这种情况?据我了解,Keychain+ProvisioningProfiles 已经到位,因为构建不会失败here

【问题讨论】:

  • 您是否将密码传递给security -v unlock-keychain?因为否则它不会在没有用户交互的情况下做任何事情。我们已经看过几次了,我将在下面添加我们的解决方案,看看它是否适合您
  • 当然,我使用来自钥匙串插件security -v unlock-keychain -p "${KEYCHAIN_PASSWORD}" "${KEYCHAIN_PATH}"的两个参数

标签: ios xcode jenkins


【解决方案1】:

CodeSign 是否有权使用私钥?

每当我看到这个错误时,这通常是解决方案:

https://stackoverflow.com/a/22637896/78496

【讨论】:

    【解决方案2】:

    首先,您是否将钥匙串密码传递给security -v unlock-keychain 命令(使用-p)?这绝对不是一个理想的解决方案,因为它可能需要在构建服务器上以明文形式公开您的密码。

    我们解决此问题的方法是登录到实际机器(远程屏幕共享或本地坐在机器旁)。从桌面运行单个构建,无论是命令行还是在 Xcode 中。 (您可能会被要求“始终允许”,但我不能 100% 确定在哪种情况下会发生这种情况)。

    从那时起,您的所有远程 CI 构建都应该成功通过代码签名。

    【讨论】:

    • 好的,我会尝试在工作区上运行 Xcode 看看会发生什么
    【解决方案3】:

    这不是由于 Jenkins 机器上的反向 DNS 失败或自签名证书造成的吗?

    我们在 Jenkins 上没有类似的问题,但 Xcode 7 做了我们发现的这两项额外检查。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-08-26
      • 1970-01-01
      • 2015-02-21
      • 2020-04-13
      • 2016-08-24
      • 2014-03-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多