iOS基于Jenkins持续集成

2019-08-26  本文已影响0人  KrisMarko

先到Jenkins官网下载Jenkins应用,安装完成后在终端中执行jenkins即可启动Jenkins服务,打开浏览器,输入http://localhost:8080打开Jenkins管理页面。(https://jenkins.io

暂时忽略源码管理部分

构建触发器

如名,当达到条件时,触发Jenkins跑构建过程。我这里面选用的Poll SCM这一项,这里面设置好构建时间后,会在对应时间触发Jenkins获取项目版本管理,查看是否有新提交的代码,若有,则获取最新代码,跑后续的构建过程,若无,则不做任何操作。如图1所示,项目会在八点去检查代码仓库是否有更新,然后在去做后续操作。

图1

构建环境

这里面使用安装了一个插件去获取本次构建和上一次构建的版本变化,对应的时候在我的另一篇文章“获取Jenkins构建时Git Change Log”中有详细说明。下面给出对应配置的贴图(图2)。

图2

构建

构建过程我选择自己写命令行脚本去执行Archive以及Export,点击配置->构建->增加构建步骤、选择Execute shell。我们这里使用Xcode默认安装的命令行工具xcodebuild,本文主要说如何搭建持续继承环境,对xcodebuild工具不做多冗述,只会写出最基本的使用。但还是建议读者对这个工具去做更多了解。另外,因我们项目工程使用了CocoaPods去管理依赖,项目中使用xcworkspace,下面写出的命令行是以此为前提。

清理上次编译构建的缓存

xcodebuild clean -workspace DTSClassRoom.xcworkspace -scheme DTSClassRoom

编译打包成Archive文件

build_time=`date +%F-%H:%M:%S`
build_date=`date +%F`
xcodebuild archive -workspace DTSClassRoom.xcworkspace \
                   -scheme DTSClassRoom \
                   -configuration AdHoc \
                   -archivePath /Users/macmini/Desktop/dtc_ios/archive_collect/${build_date}/${build_time}/archive_jenkins

将Archive文件导出生成.ipa包

xcodebuild -exportArchive -exportOptionsPlist /Users/macmini/Desktop/dtc_ios/exportOptionPlists/ExportOptions.plist \
                          -archivePath /Users/macmini/Desktop/dtc_ios/archive_collect/${build_date}/${build_time}/archive_jenkins.xcarchive \
                          -exportPath /Users/macmini/Desktop/dtc_ios/dual_teacher_ipas/dual_teacher_jenkins_ipa

上传到蒲公英

我们在配置->增加构建后操作->Execute Scripts->Add post build step->add build step->Execute Scripts。(如图3)

curl -F "file=@/Users/macmini/Desktop/dtc_ios/dual_teacher_ipas/dual_teacher_jenkins_ipa/DTSClassRoom.ipa" \
     -F "uKey=蒲公英文档中找到自己的uKey" \
     -F "_api_key=蒲公英文档中找到自己的ApiKey" \
     -F "$(printf "updateDescription=${SCM_CHANGELOG}")" \
     https://qiniu-storage.pgyer.com/apiv1/app/upload

小坑

因为我们是用curl命令将包上传,-F中的参数需要先通过解释器解释。例如我们SCM_CHANGELOG变量为字串"fixbug\n bug",如果以如下写法作为参数直接给curl上传,会在蒲公英应用更新说明处如图4显示,并不会按照我们预想的那样换行。网上也有一个人遇到同样的问题,他作出了更详细的解释,http://www.it1352.com/589450.html

-F "updateDescription=${SCM_CHANGELOG}"
图4
上一篇 下一篇

猜你喜欢

热点阅读