jenkins+gogs实现iOS项目自动化部署(四)

本篇是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常见打包错误

1fastlane gym error Unable to locate Xcode 

2Command /usr/bin/codesign failed with exit code 1

版权声明:本文为博主原创文章,未经博主允许不得转载。http://www.longdw.com/jenkinsgogsios/ ‎

《jenkins+gogs实现iOS项目自动化部署(四)》上有2条评论

  1. 你好,我正在集成iOS + jenkins + Gogs 自动化打包 在集成的过程中有一些疑问,研究了一下你的文章还是不得解,想请教一下!

评论已关闭。