转载

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

前言

本篇是CI系列的最后一篇,主题是介绍jenkins如何实现iOS项目的自动化部署,在上一篇 jenkins+gogs实现Android项目自动化部署(三) 开篇提到了slave节点,iOS打包需要借助slave节点来完成打包,接下来我就一步步的教大家如何做。

一、配置MacOS slave

Jenkins有个强大的功能,配置Slave(奴隶)服务器,来实现分布式部署构建。具体步骤如下:

1、配置Mac电脑

系统偏好设置共享 中开启  远程登录 ,如下图

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

2、创建节点

Jenkins  >  系统管理  >  节点管理  >  新建节点,输入节点名称,记得勾选 固定节点 ,点击OK。

3、配置节点

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

其中要保证 /Users/longdw/Documents/jenkins 目录的权限为ssh链接的用户可读写。

Host是Mac的ip地址,Credentials是ssh登录Mac时需要的账户和密码。可以添加一个

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

下面的部分很重要:

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

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、保存

如果看到

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

即添加Mac Slave成功,且Mac Slave在线。若连不上,请反复确认 远程工作目录 的权限。

二、配置Jenkins系统设置

1、上传证书和描述文件

Jenkins系统管理Keychains and Provisioning Profiles Management 中上传打包用的证书和描述文件。如下图:

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

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

Save。

2、在 Jenkins > 系统管理 > 系统设置 中设置

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

很关键。 Keychain 的路径和密码需要填写Mac中登录用户的密码。

3、在 Jenkins > 系统管理 > 全局安全配置 中配置

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

开启Safe HTML。

三、配置iOS项目

1、安装 description setter 插件

2、新建任务

3、General

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

这里指定Mac Slave服务器作为构建Xcode工程的Slave服务器,Xcode打包构建全部交给这个节点(Slave服务器)来完成。

4、配置源码

这里就不介绍了,前几篇有说明

5、构建环境

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

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

把之前上传的证书和描述文件添加上。

设置Build名称,这里添加了自定义名称。注意,高级里面只勾选第一个,不要勾选 Set build name after build ends ,否则会报错。

7、构建

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

脚本如下

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 /

原文  http://www.longdw.com/jenkinsgogsios/
正文到此结束
Loading...