当前位置: 首页 > 面试题库 >

Jenkins-Xcode构建作品CodeSign失败

后星河
2023-03-14
问题内容

下面是我的构建脚本(不使用xcodebuild插件)。

  1. 建立步骤工程
  2. 我使用所需的证书和私钥创建了一个单独的钥匙串,它们在“钥匙串访问”中可见
  3. 钥匙串命令不会在脚本中失败
  4. 安全列表钥匙串将其显示为有效钥匙串

就像解锁命令并没有真正成功一样。当我尝试通过命令行从命令行运行codesign时

codesign -f -s "iPhone Developer: mycert" -v sample.app/ --keychain /Users/Shared/Jenkins/Library/Keychains/JenkinsCI.keychain

我懂了

CSSM_SignData returned: 000186AD
sample.app/: unknown error -2070=fffffffffffff7ea

尽管我不确定我是否可以从命令行正确模拟,因为您充其量只能

sudo -u jenkins bash

xcodebuild ONLY_ACTIVE_ARCH="NO" CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED="NO" -scheme "MySchemeName" CONFIGURATION_BUILD_DIR="`pwd`"
security list-keychains -s /Users/Shared/Jenkins/Library/Keychains/JenkinsCI.keychain
+ security default-keychain -d user -s /Users/Shared/Jenkins/Library/Keychains/JenkinsCI.keychain
+ security unlock-keychain -p jenkins /Users/Shared/Jenkins/Library/Keychains/JenkinsCI.keychain
+ security list-keychains
    "/Users/Shared/Jenkins/Library/Keychains/JenkinsCI.keychain"
    "/Library/Keychains/System.keychain"
+ security default-keychain
    "/Users/Shared/Jenkins/Library/Keychains/JenkinsCI.keychain"
+ codesign -f -s '$IDENTITY_GOES_HERE.' -v sample.app/
sample.app/: User interaction is not allowed.

任何帮助是极大的赞赏。


问题答案:

我们不使用Jenkins,但是我之前在构建自动化中已经看到了这一点。解决方法如下:

1)创建构建钥匙串。这将包含用于代码签名的私钥/证书:

security create-keychain -p [keychain_password] MyKeychain.keychain

keychain_password由您决定。您稍后将使用它在构建过程中解锁钥匙串。

2)导入您的CodeSign身份的私钥(* .p12):

security import MyPrivateKey.p12 -t agg -k MyKeychain.keychain -P [p12_Password] -A

此处的关键是“ -A”标志。这将允许在没有警告的情况下访问钥匙串。这就是为什么您看到“不允许用户交互”错误的原因。如果您尝试通过Xcode
UI进行此构建,则这将提示您“允许访问”钥匙串。

3)但是,您要保存钥匙串(例如:将其签入源代码管理),请确保您的构建用户可写和可执行该钥匙串。

准备好构建时,请在运行xcodebuild之前添加以下内容:

# Switch keychain
security list-keychains -s "/path/to/MyKeyhain.keychain"
security default-keychain -s "/path/to/MyKeychain.keychain"
security unlock-keychain -p "[keychain_password]" "/path/to/MyKeychain.keychain"

如果您在本地运行,则可能需要在构建脚本的末尾添加一些内容,以切换回登录钥匙串(〜/ Library / Keychains /
login.keychain),例如:

# Switch back to login keychain
security list-keychains -s "~/Library/Keychains/login.keychain"
security default-keychain -s "~/Library/Keychains/login.keychain"

试试看。我们为我们使用的每个身份创建一个单独的钥匙串(我们自己的代表客户构建)。就我们公司而言,我们同时拥有一个AppStore和Enterprise帐户。这可能会导致在代码签名时发生命名冲突(例如:两个帐户都解析为“
iPhone发行版:ACME Corporation”)。通过将这些身份保存在单独的钥匙串中,我们避免了这种冲突。



 类似资料:
  • 问题内容: 我使用Jenkins与XCode插件进行持续集成,Jenkins坚持了一个项目: / usr / bin / codesign –force –sign ...... 然后是旋转器,并且永远旋转,我以前从未见过,有人见过吗?是配置文件问题还是证书问题?在Jenkins上,正确配置了配置文件和证书,并在管理器中显示了绿色的勾号,因此我不知道是什么原因导致此问题。 问题答案: 检查您的Ma

  • 问题内容: 我试图构建新项目,但是当我单击构建时,构建每次都会失败。 我尝试删除我的项目并再次创建它,但是仍然没有帮助。 警告 错误 这些是Xcode向我显示的错误消息。项目名称为“ MyFirstApp”,我在该错误消息上剪切了一些文件路径。那么我如何建立这个项目呢? 问题答案: 在终端中尝试:

  • ----maven-enforcer-plugin:1.0.1:enforce(default)@cli---添加ignore:org.eclipse.jetty.spdy.* ----maven-enforcer-plugin:1.0.1:enforce(enforce-bang-dependencies)@cli-- ---build-helper-maven-plugin:1.7:times

  • 问题内容: 我在Ubuntu的Aws实例上运行Jenkins Master并将Mac笔记本电脑创建为slave,当我在Mac loptop生成中使用Xcode运行成功时,但是当我从Jenkins触发它时,它给出了。 Ps: 我已经尝试阅读以前的文章,但是其中大多数都让Jenkins在MAC上运行,而且xcode在同一台服务器上运行,这不是我的情况。 因为我能够在xcode中运行项目,所以我认为我的

  • 问题内容: 每当我尝试使用Jenkins进行构建时,都会出现以下错误 无法应用插件[id’io.fabric’]无法创建类型为’CrashlyticsPlugin’的插件。 从Gradle中删除Crashlytics可以解决此问题 问题答案: 所以我想我通过结合使用这个答案这些是您需要遵循的最终命令: 这是这种情况的相关调试日志: 和@TarahWheelerVanVlack答案来解决它,我不得不

  • 我是詹金斯的新手。然而,这个问题看起来很容易,但它对我不起作用。我的源代码是在GIT中,我正在使用GIT存储库。我得到下面的错误。 提前谢了。 由用户abc在工作区/var/lib/jenkins/workspace/hello World中的master上构建启动 从以下内容获取上游更改 git--版本#timeout=10使用.gitcredentials设置凭据git config--本地凭