Jenkins+iOS持续集成细节记录

原文连接ios

前言

iOS持续集成采用Jenkins已是一个很是成熟的方案了,之前公司用过,本身还没尝试搭建过,此次尝试了一下,踩了不少坑,网上的不少文章都是早些年的,都9102年了,Jenkins也有了不少变化,Xcode也是10.x版本了。我分享一下我我的以为要注意的细节。git

环境介绍

  • 系统版本:macOS Mojave 10.14.4 (18E226)
  • Xcode版本:Version 10.1 (10B61)
  • Jenkins版本:Jenkins ver. 2.164.2

个人项目集成了cocoapods和2个Project,其中一个Project用了Git的submodule。github

开始搭建

Jenkins下载安装,完成后打开Jenkins的界面,下载一些插件,新建一个空的任务。接下来开始配置,配置我是分三步:一、下载源码 二、配置证书和打包选项 三、上传ipa。shell

下载源码

源码我使用的是Git,代码放在gitee,其实放哪都是相似的。设置Repository URL和SSH,若是配置错误的话,界面会一直报错。Submodule的配置,须要勾选上 Additional Behaviours 勾上Recursively update submodulesUse credentials from default remote of parent repository 其中第二项的意思是submodule的验证跟主项目一致,个人项目是一致的,能够勾上,若不是的话,须要在想办法,这里没有在深刻研究。 cocoapods的话须要在构建中加入shellapi

export LC_ALL=en_US.UTF-8
/usr/local/bin/pod install --verbose --no-repo-update 

复制代码

能够先尝试一下构建,若是成功。建议去工做空间,找到项目所在的目录,把整个项目复制出来,本身先编译一下,是否能编译过。xcode

注意:ui

  • 源码SSH必定要切换到jenkens帐户,不然一直报错,参考指定Git源代码时提示无权限
  • 当时我配置URL clone的方式,怎么都会报错,后来换成SSH就OK了。
  • export LC_ALL=en_US.UTF-8这句话得加,不然会报错

配置证书和打包选项

配置证书比较繁琐,首先去Jenkins Keychains and Provisioning Profiles Management上传本机的keychain和Provisioning Profiles,这个网上有教程,能够参考一下,这里介绍的比较详细。Provisioning Profiles拿到的都是UUID的文件名,能够去用xcode打开项目,build settings,搜索profiles,就能找到对应的UUID,上传便可。 添加完后,再到回到刚建的任务-设置-构建-增长构建步骤,新增一个xcode,开始配置xcode。spa

第一项General build settingsDevelopment Team ID这一项,若是不知道从哪里查的话,先用本身的xcode打个包,导出ipa的文件目录中有ExportOptions.plist中的team id。 把Generate Archive?设置为YES,又会多出不少选项,Output directory建议是${WORKSPACE}/Build,若是不在workspace的话,会报错。插件

第二项Code signing & OS X keychain options:我一开配置好的,而后选Read from Xcode Project,一直都是失败,建议不要勾选这个选项。勾选Manual signingUnlock Keychain?把该选的选上,Keychain password就是本机的登陆密码。code

第三项Advanced Xcode build options:这个也比较简单,若是项目是workspace,直接在Xcode Workspace File填上workspace的路径就好了,注意不须要填后缀。可是建议仍是把其余选项都填上,其中Xcode Project Directory会影响第四项的配置,不填的话,会找不到info.plist,致使没法更改CFBundleVersion

第四项Versioning:这一项是用于每次构建,动态变动build number的,通常在Technical version填上${BUILD_ID}

配置完成后,能够构建一下,看看能不能成功。若是失败的话,能够查看一下缘由,或者仿照第一步拉源码,把项目拷出来,用xcodebuild尝试打包,确保本身的项目是能够打包的,再查找Jenkins配置的问题。

上传ipa

这一部很是简单,我使用的是蒲公英,使用 Jenkins 实现持续集成 (iOS),先去Jenkins插件下一个Upload to pgyer,再到刚建的任务-设置-构建-增长构建步骤,增长一个Upload to pgyer with api v2pgyer api_key能够在蒲公英官网找到,scandir就是ipa所在的目录,file wildcard是指ipa的文件通配符,注意不是文件的全程,若是目录下只有一个ipa,使用*.ipa便可。

结语

每一个人的环境和需求都不同,若是配置过程当中出了问题,必定要多看控制台输出,看看哪里报错,报错的缘由是什么,错误信息仍是比较详细的,一步一步解决。

相关文章
相关标签/搜索