iOS项目准备
iOS项目,证书选择,取消自动,Debug与Release各自手机添加对应证书
iOS项目目录下,新增
ExportOptions.plist
文件,文件内容跟之前用xcode打包ipa文件夹内的ExportOptions.plist
一样,其中method
改为ad-hoc
。
新建任务
创建新的构建任务,任务名称可以自行设定,建议是项目名称,需要全局唯一,再选择自由风格的项目风格
General
构建任务的一些基本配置,如名称描述之类的
源码管理
git支持主流的gitlab与github代码管理,因公司团队用的是gitlab,选择git,并填写对应项目的git仓库URL
第一次新建任务填写仓库URL,会出现报错,提示Failed to connect to repository:xxx
(截图中没提示报错,因本人已配置ssh),这是因为私有仓库,没有权限直接访问,需要配置ssh获取访问权限。
Jenkins与git都需要配置ssh,因Jenkins服务器是独立的,是使用Jenkins账号登录的,所以需要切换至Jenkins用户重新生产ssh key,并把公钥添加到git服务器
- 打开终端,设置密码,建议设置简单的,跟开机密码一样,后期需要使用
sudo dscl . passwd /Users/jenkins
- 切换至Jenkins用户
su jenkins
- 重新生成ssh key
ssh-keygen -t rsa -C "邮箱"
- 获取公钥id_rsa.pub,并添加至git服务器
cat /Users/Shared/Jenkins/.ssh/id_rsa.pub
- 获取秘钥id_rsa,并添加至Jenkins中创建的newCredentials
cat /Users/Shared/Jenkins/.ssh/id_rsa
在Credentials中,点击下拉选择刚刚创建的Credentials,选择后报错不显示,可以成功访问,选择要打包项目的分支
构建触发器
最初可以暂时不做配置,后期因个人需求,再做配置
构建环境
第一个选择,是设置每次构建前自动清除上一个工作空间,也可以手动清除
点击下面保存,退出配置页面,左侧点击清除
第二个选择,是选择打包项目对应环境下的证书
返回至Jenkins首页,选择Manage Jenkins,添加Keychains and Provisioning Profiles Management
- 获取login.keychain
终端输入/Users/xxx/Library/Keychains
,获取的是login.keychain-db
文件,需要复制粘贴至桌面,并修改其文件名,改为login.keychain
- 在Keychains and Provisioning Profiles Management页面,选择刚刚修改的文件,再进行upload
- 找到电脑的钥匙串访问,找到打包项目的生成证书与发布证书的名称,在Identities中各自填写
- 描述文件路径填写
/Users/Shared/Jenkins/Library/MobileDevice/Provisioning Profiles
,其中注意Provisioning Profiles之间的空格- 点击save
构建
下拉选择Execute shell
,编写shell脚本
添加shell脚本
echo '++++++++提供拉取依赖库的代码++++++++'
export LANG=en_US.UTF-8
export LANGUAGE=en_US.UTF-8
export LC_ALL=en_US.UTF-8
cd ${WORKSPACE}/项目名称
/usr/local/bin/pod update --verbose --no-repo-update
echo '++++++++生成archive文件++++++++'
# keychain解锁,否则打包签名时会失效,详细问题可以查看后续的错误总结文章中
security unlock-keychain -p "开机密码" ~/Library/Keychains/login.keychain
if [ -d "${WORKSPACE}/builds" ]; then rm -rf ${WORKSPACE}/builds; fi;
mkdir ${WORKSPACE}/builds;
if [ -d "${WORKSPACE}/builds/${BUILD_NUMBER}" ]; then rm -rf ${WORKSPACE}/builds/${BUILD_NUMBER}; fi;
mkdir ${WORKSPACE}/builds/${BUILD_NUMBER};
xcodebuild -workspace ${WORKSPACE}/项目名称.xcworkspace -scheme "项目scheme" -sdk iphoneos archive -archivePath ${WORKSPACE}/builds/${BUILD_NUMBER}/archive
echo '++++++++将archive文件导出为ipa包++++++++'
xcodebuild -exportArchive -archivePath ${WORKSPACE}/builds/${BUILD_NUMBER}/archive.xcarchive -exportOptionsPlist ${WORKSPACE}/ExportOptions.plist -exportPath ${WORKSPACE}/builds/${BUILD_NUMBER}/${JOB_NAME}_${BUILD_NUMBER} PROVISIONING_PROFILE="iPhone Distribution: xxx (xxx)" -allowProvisioningUpdates
构建后操作
自动化构建后,需要上传对应测试的测试平台蒲公英、fir
其中
fir.im Token
在fir平台获取,pgyer uKey
、pgyer api_key
在蒲公英平台获取,获取方式直接百度即可
点击保存
立即构建
在左侧点击立即构建,可以在Build History列表中看到构建历史,点击其中一个构建,可以在控制台输出看到构建进程信息
构建结果
- 构建状态
Successful蓝色:构建完成,并且被认为是稳定的。
Unstable黄色:构建完成,但被认为是不稳定的。
Failed红色:构建失败。
Disable灰色:构建已禁用 - 构建稳定性
构建稳定性用天气表示:晴、晴转多云、多云、小雨、雷阵雨。天气越好表示构建越稳定,反之亦然。 - 构建历史界面
console output: 输出构建的日志信息
结束语
目前就可以使用Jenkins进行持续集成了,就很棒!
我在学习配置的过程很曲折,走过了太多的坑,一直雷阵雨,时而转晴,当然了,风雨后必有彩虹,也很美。
Jenkins是一个强大的自动化工具,功能不仅仅如此,还有更多的功能需要我们去挖掘。如果后期有新增的功能,我也会持续更新文章,大家一起进步,有疑问也欢迎在下方留意。