蒲公英文档中心

蒲公英 -凯发k8地址

本文将教会你:

  1. 利用 jenkins 和 fastlane 实现 ios 项目的自动构建
  2. 自动打包 ios 的 ipa 文件并自动上传到蒲公英

注:本文的操作环境在 mac os 10.12 中进行。jenkins 的版本是 2.19.1,fastlane 的版本是 2.28.2

安装 fastlane

是一个快速将 ios 项目打包成 ipa 文件的工具。要安装 fastlane,请参考 fastlane 在 github 上的的,这里我们不再赘述。

安装 jenkins

在 mac 环境下,我们需要先安装 jdk,然后在 下载最新的 war 包。下载完成后,打开终端,进入到 war 包所在目录,执行以下命令:

java -jar jenkins.war --httpport=8080

待jenkins启动后,在浏览器页面输入以下地址:

http://localhost:8080

这样就打开jenkins管理页面了。

注意:使用其他方式安装的 jenkins 可能导致后续步骤失败,请确认使用我们推荐的方式来安装 jenkins。

自动化构建设置

在 jenkins 中,所有的任务都是以“item”为单位的。接下来我们就新建一个 ios 的项目来开始自动化构建。点击“新建”,输入 item 的名称,选择“构建一个自由风格的软件项目”,然后点击“ok”。

然后按下图设置构建信息:

源码管理:

这里主要是设置源码的仓库,以便让 jenkins 知道我们的 ios 项目的代码在哪里。因为我的代码放在自己搭建的 gitlab 仓库中(如果你用 github 等其他仓库也是类似),所以要先告诉 jenkins 如何获取代码。首先,我们需要配置 ssh,我们可以在 jenkins 的证书管理中添加 ssh。在 jenkins 管理页面,选择“credentials”,然后选择“global credentials (unrestricted)”,点击“add credentials”,如下图所示,我们填写自己的 ssh 信息,然后点击“save”,这样就把 ssh 添加到 jenkins 的全局域中去了。

接下来,我们再回到刚刚新建的任务中,在源码管理中,选择 git,按下图填好相关信息。注意:credentials 不需要选择。

构建触发器设置

因为此教程不涉及自动测试这块的流程,所以不需要设置触发器。

构建环境设置

这里我们是直接用 fastlane 这个工具,所以这里不需要特别设置。fastlane 会自动读取本地 ios 项目中设置的签名等信息,所以需要保证本地 ios 工程已经设置好了正确的签名信息和 provisioning profiles 等文件,并在 keychain 中已经加入了正确的证书。否则后续的操作中可能会出现错误。如果这里没有设置好,请用 xcode 打包工程进行相关设置即可。

  • 脚本设置

这一步主要用来打包 ipa 并上传到蒲公英。我们点击“增加构建步骤”,选择 "execute shell"。输入下列脚本:

ipaname="jinkens-myapp"
fastlane gym --export_method ad-hoc --output_name ${ipaname}
curl -f "[email protected]${ipaname}.ipa" -f "ukey=user_key" -f "_api_key=api_key" https://qiniu-storage.pgyer.com/apiv1/app/upload

注意:

  1. 其中,user_key 和 api_key 可以在蒲公英的「」中找到,之后进行相应替换。
  2. export_method 可以根据打包类型进行相应设置。可选的值有:app-storead-hocdevelopmententerprise。对于 xcode 8.3 以下的版本,则不需要设置 export_method

设置好之后,类似界面如下所示:

最后点击最下面的 save 按钮来保存所有设置。这样我们就简单的实现了自动打包,并上传到蒲公英的所有配置了。

接下来,我们可以测试一下。点击项目页面左侧的 build now,我们可以看到项目已经开始构建。在 console output 中,我们可以看到项目已经成功构建,并自动上传到了蒲公英。

started by user root
building in workspace /users/rexshi/.jenkins/workspace/monitor
 > git rev-parse --is-inside-work-tree # timeout=10
fetching changes from the remote git repository
 > git config remote.origin.url http://git.xxx.com/root/monitor.git # timeout=10
.......
[15:03:28]: $ xcodebuild -list -project ./monitor.xcodeproj
[15:03:30]: $ xcodebuild clean -showbuildsettings -scheme monitor -project ./monitor.xcodeproj
[15:03:32]: building monitor/monitor [release]
[15:03:32]: check dependencies
[15:03:32]: compiling appdelegate.m
[15:03:33]: compiling main.m
[15:03:38]: touching monitor.app
......
[15:03:41]: successfully exported and compressed dsym file
[15:03:41]: successfully exported and signed the ipa file:
[15:03:41]: /users/rexshi/.jenkins/workspace/monitor/jinkens-myapp.ipa
  curl -f [email protected] -f ukey=4a5bc52e6763795e18b69bd82dd23xxx -f _api_key=7f158b3d9063c73cd68f0ee40215xxxx https://qiniu-storage.pgyer.com/apiv1/app/upload
{"code":0,"message":"","data":{"appkey":"602979def164c47b9570f17656a4fxxxx","userkey":"4a5bc52e6763795e18b69bd82dd23xxx","apptype":"1","appislastest":"1"
......
finished: success

进阶用法

如果你只是想满足基本都持续集成,那么看到这里就可以了。但是,如果你想有一些更丰富的定制化功能,可以继续往下看。

上传到蒲公英时设置更新说明、访问密码

这里,假如我们想让 ipa 文件上传到蒲公英后,将 git 上最后一次提交的注释设置为蒲公英的更新说明,并且设置访问密码为 123456,那么可以将上面最后一步时的 shell 程序改成这样:

ipaname="jinkens-myapp"
fastlane gym --export_method ad-hoc --output_name ${ipaname}
msg=`git log -1 --pretty=%b`
password=123456
curl -f "[email protected]${ipaname}.ipa" -f "ukey=user_key" -f "_api_key=api_key" -f "updatedescription=${msg}" -f "password=${password}" https://qiniu-storage.pgyer.com/apiv1/app/upload

ipa 文件上传到蒲公英后通知其他人

如果开发者想让 jenkins 打包并上传 ipa 文件到蒲公英后,自动通知其他人(常用于通知 app 相关的测试者),那么可以利用蒲公英的通知功能。蒲公英本身已经支持了邮件通知、短信通知、微信通知。具体设置方法可以点击这里查看:接收应用更新通知

常见问题

出现 fastlane: command not found 怎么办?

解决方法一:这个情况一般是由于 jenkins 没有设置正确的 $path 环境变量导致的。正确设置的方法为:

  1. 在命令行下执行 echo $path,记录下输出的结果
  2. 在 jenkins 中系统管理-系统设置中,找到 环境变量(environment variables)
  3. 在 key 中填写 path,在 value 中填写第一步中输出的结果
  4. 保存即可。

解决方法二:请确认您安装 jenkins 的方式和我们在本文里推荐的方式一致。使用其他方式安装的 jenkins 也经常会出现此问题。