Jenkins自动化打包上传蒲公英、fir

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服务器

  1. 打开终端,设置密码,建议设置简单的,跟开机密码一样,后期需要使用
    sudo dscl . passwd /Users/jenkins
  2. 切换至Jenkins用户
    su jenkins
  3. 重新生成ssh key
    ssh-keygen -t rsa -C "邮箱"
  4. 获取公钥id_rsa.pub,并添加至git服务器
    cat /Users/Shared/Jenkins/.ssh/id_rsa.pub
  5. 获取秘钥id_rsa,并添加至Jenkins中创建的newCredentials
    cat /Users/Shared/Jenkins/.ssh/id_rsa


在Credentials中,点击下拉选择刚刚创建的Credentials,选择后报错不显示,可以成功访问,选择要打包项目的分支

构建触发器

最初可以暂时不做配置,后期因个人需求,再做配置


构建环境


第一个选择,是设置每次构建前自动清除上一个工作空间,也可以手动清除

点击下面保存,退出配置页面,左侧点击清除


第二个选择,是选择打包项目对应环境下的证书

  1. 返回至Jenkins首页,选择Manage Jenkins,添加Keychains and Provisioning Profiles Management




  2. 获取login.keychain
    终端输入/Users/xxx/Library/Keychains,获取的是login.keychain-db文件,需要复制粘贴至桌面,并修改其文件名,改为login.keychain
  3. 在Keychains and Provisioning Profiles Management页面,选择刚刚修改的文件,再进行upload
  4. 找到电脑的钥匙串访问,找到打包项目的生成证书与发布证书的名称,在Identities中各自填写
  5. 描述文件路径填写/Users/Shared/Jenkins/Library/MobileDevice/Provisioning Profiles,其中注意Provisioning Profiles之间的空格
  6. 点击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 uKeypgyer api_key在蒲公英平台获取,获取方式直接百度即可

点击保存

立即构建

在左侧点击立即构建,可以在Build History列表中看到构建历史,点击其中一个构建,可以在控制台输出看到构建进程信息




构建结果

  1. 构建状态
    Successful蓝色:构建完成,并且被认为是稳定的。
    Unstable黄色:构建完成,但被认为是不稳定的。
    Failed红色:构建失败。
    Disable灰色:构建已禁用
  2. 构建稳定性
    构建稳定性用天气表示:晴、晴转多云、多云、小雨、雷阵雨。天气越好表示构建越稳定,反之亦然。
  3. 构建历史界面
    console output: 输出构建的日志信息

结束语

目前就可以使用Jenkins进行持续集成了,就很棒!
我在学习配置的过程很曲折,走过了太多的坑,一直雷阵雨,时而转晴,当然了,风雨后必有彩虹,也很美。
Jenkins是一个强大的自动化工具,功能不仅仅如此,还有更多的功能需要我们去挖掘。如果后期有新增的功能,我也会持续更新文章,大家一起进步,有疑问也欢迎在下方留意。

最后,来一张很不错的思维导图,
转载"哥本哈根月光"

你可能感兴趣的:(Jenkins自动化打包上传蒲公英、fir)