Jenkins iOS证书问题的解决方案

Jenkins 是一个强大的持续集成工具,我们用它来执行定时的出包和上传任务。然而在iOS的出包中,一旦涉及到Certificate和Provision profile的变更,自动出包任务总是会以失败而告终。

经过一番Google之后,我找到了Steve Zhang在2012年写的一篇文章: Fix the iOS code signing issue when using Jenkins 。这篇文章讲述了常见的两个问题,并给出了解决方案。由于这篇文章写于6年以前,所以时效性略差,本文将在它的基础上进行补充和完善。

无法在keychain中找到有效证书和私钥

报错信息

There are no valid certificate/private key pairs in the default keychain

解决方案

打开钥匙串(Keychain Access),然后把登录(Login)那一栏的出包证书,右击拷贝,然后选中系统(System),将其粘贴过去。

Jenkins iOS证书问题的解决方案

如果仍不行,进入Jenkins的管理页(Manage Jenkins),在Xcode Builder下将keychain的路径写为: ${HOME}/Library/Keychains/login.keychain-db ,同时写上打开密码。

Jenkins iOS证书问题的解决方案

然后在出包项目的设置中,勾上自动unlock keychain。

Jenkins iOS证书问题的解决方案

无法找到匹配的Provisioning profile

报错信息

Provisioning profile 'xxx' can't be found
Provisioning profile 'xxx' doesn't include signing certificate "iPhone Developer: xxx"

解决方案

Xcode 8.3之前的版本

所有在Mac上的Provision profile都存放在这个目录下:~/Library/MobileDevice/Provisioning Profiles。在Jenkins账户下,如果没有这个目录的话,则创建一个:/Users/Shared/Jenkins/Library/MobileDevice/Provisioning Profile。

先打开目录~/Library/MobileDevice/Provisioning Profile,将里面的所有老的Provision profile全部删除干净。

然后进Xcode -> Preferences -> 选中账户 -> 选中对应的Team -> Download Manual Profile。这样就把所有的profile下载到目录~/Library/MobileDevice/Provisioning Profile,再打开这个目录,复制刚刚下好的所有profile到Jenkins的profile目录/Users/Shared/Jenkins/Library/MobileDevice/Provisioning Profile下。

Jenkins iOS证书问题的解决方案

Xcode 8.3之后的版本

如果你用的是 Xcode 8.3以后 的版本话,Xcode默认会自动帮你管理Provision profile(此处是坑)。

所以如果是标记为 Automatically manage signning ,打开Xcode的项目设置,在Bundle Identifier下先 填好你出包的Bundle ID ,选好Team,然后坐等Xcode自动帮你下一个最新的Provision profile。

Jenkins iOS证书问题的解决方案

如果下载结束,你会在~/Library/MobileDevice/Provisioning Profile目录下发现一个新的profile,将其复制到Jenkins的profile目录/Users/Shared/Jenkins/Library/MobileDevice/Provisioning Profile下即可。

后记

最近一整年都忙于工作,使得能分在博客上的时间少之又少。在2018年的末尾,写下这么一篇问题解决文章,个人并不是很满意。

如果能帮助到读者朋友们解决到问题,这是我所乐于看到的,也希望读者朋友们可以分享自己的经验。

原文 

https://wuzhiwei.net/jenkins-ios/

本站部分文章源于互联网,本着传播知识、有益学习和研究的目的进行的转载,为网友免费提供。如有著作权人或出版方提出异议,本站将立即删除。如果您对文章转载有任何疑问请告之我们,以便我们及时纠正。

PS:推荐一个微信公众号: askHarries 或者qq群:474807195,里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化这些成为架构师必备的知识体系。还能领取免费的学习资源,目前受益良多

转载请注明原文出处:Harries Blog™ » Jenkins iOS证书问题的解决方案

赞 (0)
分享到:更多 ()

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址