本篇是CI系列的最后一篇,主题是介绍jenkins如何实现iOS项目的自动化部署,在上一篇jenkins+gogs实现Android项目自动化部署(三)开篇提到了slave节点,iOS打包需要借助slave节点来完成打包,接下来我就一步步的教大家如何做。
一、配置MacOS slave
Jenkins有个强大的功能,配置Slave(奴隶)服务器,来实现分布式部署构建。具体步骤如下:
1、配置Mac电脑
在系统偏好设置 > 共享 中开启 远程登录,如下图
2、创建节点
Jenkins > 系统管理 > 节点管理 > 新建节点,输入节点名称,记得勾选 固定节点
,点击OK。
3、配置节点
其中要保证/Users/longdw/Documents/jenkins
目录的权限为ssh链接的用户可读写。
Credentials可以添加一个,这里我选择的是SSH Username with private key 注意这里的Username要选择ssh登录的用户名
下面的部分很重要:
PATH环境变量,需要在Mac上通过
echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Applications/VMware Fusion.app/Contents/Public:/Users/longdw/Library/Android/sdk/platform-tools:/Users/longdw/Library/Android/sdk/tools:/Users/longdw/flutter/bin:/usr/local/Cellar/apache-maven-3.5.4:/usr/local/Cellar/apache-maven-3.5.4/bin:/usr/local/mysql/bin:/Users/longdw/apache-ant-1.10.5/bin
获取,然后copy过去。
Keychains and Provisioning Profiles路径要填写正确。没有这个选项的安装Keychains and Provisioning Profiles Management插件。
4、保存
如果看到
即添加Mac Slave成功,且Mac Slave在线。若连不上,请反复确认远程工作目录的权限。
二、配置Jenkins系统设置
1、上传证书和描述文件
在 Jenkins > 系统管理 > Keychains and Provisioning Profiles Management中上传打包用的证书和描述文件。如下图:
Save。其中login.keychain 在目录/Users/longdw/Library/Keychains/login.keychain下,Password填写自己Mac电脑的登录密码
2、在 Jenkins > 系统管理 > 系统设置 中设置
很关键。Keychain的路径和密码需要填写Mac中登录用户的密码。
3、在 Jenkins > 系统管理 > 全局安全配置 中配置
开启Safe HTML。
三、配置iOS项目
1、安装description setter
插件
2、新建任务
3、General
这里指定Mac Slave服务器作为构建Xcode工程的Slave服务器,Xcode打包构建全部交给这个节点(Slave服务器)来完成。
4、配置源码
这里就不介绍了,前几篇有说明
5、构建环境
把之前上传的证书和描述文件添加上。
设置Build名称,这里添加了自定义名称。注意,高级里面只勾选第一个,不要勾选 Set build name after build ends
,否则会报错。
7、构建
脚本如下
export LANG="en_US.UTF-8" security -v unlock-keychain -p "dwd" ipa_name="FotileCSS" build_path="${WORKSPACE}/build/" fastlane gym --workspace FotileCSS.xcworkspace --scheme FotileCSS --clean --configuration Release --export_method enterprise --output_name ${ipa_name} --output_directory ${build_path}
这里用到了fastlane来打包
说到gym,就要先说一下fastlane。
fastlane是一套自动化打包的工具集,用 Ruby 写的,用于 iOS 和 Android 的自动化打包和发布等工作。gym是其中的打包命令。
fastlane 的官网看这里, fastlane 的 github 看这里
要想使用gym,先要安装fastlane。sudo gem install fastlane –verbose
最重要、最重要、最重要:
Linux服务器上的Jenkins调用Mac Slave时,是通过之前设置的SSH登录的方式,而Apple为了安全,在ssh登录时,是不允许读取Keychains(钥匙串)的,所以 security -v unlock-keychain -p "yourpassword"
这行命令就很重要了。在构建打包前,先解锁Keychains。
当然这里 fastlane 已经提前通过Homebrew安装好了,这里不再赘述。
整体脚本的流程是,先解锁Keychain,然后用fastlane快速打包。
文章整体部分采用的是这位大神的博客,转入大神的博客
iOS常见打包错误
(1)fastlane gym error: Unable to locate Xcode
(2)Command /usr/bin/codesign failed with exit code 1
版权声明:本文为博主原创文章,未经博主允许不得转载。http://www.longdw.com/jenkinsgogsios/
你好,我正在集成iOS + jenkins + Gogs 自动化打包 在集成的过程中有一些疑问,研究了一下你的文章还是不得解,想请教一下!
什么问题?