iOS持续集成使用Jenkins实现自动化打包

Jenkins是一款由Java编写的开源的持续集成工具。Jenkins运行依赖Java JDK,如果你未安装JDK,需要先去安装。

Jenkins启动页面

一:安装Jenkins

首先我们安装Jenkins,我们可以通过Homebrew安装,也可以通过客户端安装,这里推荐大家使用Homebrew安装,因为通过客户端安装,后面配置过程中,你可能会遇到权限配置问题。

如果你的Mac未安装Homebrew,需要先安装Homebrew。

1.安装Homebrew,在终端输入(如果已安装,可跳过):

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

2.安装Jenkins,在终端输入安装命令:

brew install jenkins

安装成功结果:

Jenkins安装成功

可以看到结果提示,如果想在开机就启动Jenkins,可以使用命令 brew services start jenkins 来启动Jenkins,否则直接使用命令 jenkins 来启动。

二:启动Jenkins

1.在终端输入启动命令:

jenkins

第一次启动Jenkins,终端会打印出Jenkins管理员初始登录密码,复制这个密码,我们后面要使用

启动Jenkins

2.在浏览器输入:http://localhost:8080,访问Jenkins主页。结果如下:

启动Jenkins

根据页面提示我们可以在路径 /Users/wf/.jenkins/secrets/initialAdminPassword 文件里找到Jenkins初始登录密码,也可以使用我们上一步复制的密码。这两处的密码是一样的。

3.在上一步输入密码,然后点击“继续”,进入插件安装页面

启动Jenkins

我们点击第一个”安装推荐的插件”(这里推荐选择第一个,我们安装Jenkins推荐的所有插件,否则后面我们要一个一个去安装好多插件),选择之后进入安装页面

Jenkins安装中...

插件安装中,这里需要点时间,稍等一会。

4.安装成功后,我们需要创建一个管理员用户

创建Jenkins管理员

填写你想输入的信息,然后“保存并完成”,进入下一个页面(这里你可以在你的记事本上把用户名和密码备份一下,如果你忘记了,后面再配置的话,会很麻烦)

5.实例配置使用默认,不用修改,然后“保存并完成”。进入下一个页面

Jenkins实例配置

6.开始页面,点击“开始使用jenkins”

开始使用jenkins

三:进入Jenkins主页

Jenkins主页

1.在创建新任务之前,我们先安装一个插件。点击左侧的 Manage Jenkins -> Manage Plugins(插件管理)

Manage Jenkins
Manage Plugins(插件管理)

2.选择可选插件,在右上角搜索框,输入插件名称:Git Parameter,然后勾选,点击“直接安装”

Git Parameter

安装成功后,返回首页

四:创建任务

1.点击“创建一个新任务”,进入创建页面

创建任务

2.输入项目名称,选择 Freestyle project(构建一个自由风格的项目) ,然后”确定”,进入配置页面

创建任务

General配置

输入简单的项目描述

项目描述

源码管理配置

1.在左侧勾选Git,然后输入你项目的Git仓库地址。然后我们需要添加一个账号(这里的账号就是你Git的用户名和密码,Jenkins会用来登录Git仓库拉取代码),点击“添加”

源码管理

2.添加页面:输入Git用户名和密码,点击”添加“。

添加账号

3.添加成功后,然后选择你刚才添加的账号。在分支栏你可以修改分支名称,这里我们先使用master,后面我们会做成动态的,根据用户手选分支,而不是写死。

添加账号

4.修改超时时间:如果你的工程比较大,那么建议修改一下Git的克隆和拉取时间,不然Jenkins拉取代码的时候会超时。在下面点击”新增“->选择”Advanced Clone behaviours“

Advanced Clone behaviours

然后根据下面,输入配置信息

修改超时时间

构建配置

在构建配置选择 Execute shell,然后输入打包命令。打包命令可以去这里下载。具体的iOS打包命令含义可以去这里学习iOS自动打包ipa。

Execute shell

输入构建命令

构建命令

然后保存,回到项目首页。

五:构建项目

1.点击左侧 Build Now(立即构建)

构建项目

2.构建中...

构建中...

3.构建成功,此时打开你的蒲公英,就会看到刚才打的新包

构建成功

六:参数化构建

经过上面的步骤我们已经可以实现自动化打包,并上传到蒲公英。可是实际上的需求是:我们希望打包的时候可以手动选择某个分支,然后再选择某个环境,然后再自动化构建对应的包。这时就需要使用参数化构建。

1.点击左侧”配置“,我们重新进入刚才的配置页面

配置

2.勾选参数化构建

参数化构建

添加参数,选择Git Parameter

Git Parameter

然后配置Git构建参数信息:

Git Parameter

再次添加参数,选择Choice Parameter

Choice Parameter

配置打包环境参数信息

打包环境参数

3.修改源码管理,将分支名称修改为我们上面Git Parameter里配置的Key名称(其实代表的就是分支名称)

Git Parameter

4.然后修改打包脚本,我们可以根据上面设置的名称 SRERVICE_ENVIRONMENT 来获取用户选择的环境,然后我们需要根据环境修改对应的代码。这里有两种方式:

第一种:多Target打包,每个环境对应一个Target,我们打包的时候,根据SRERVICE_ENVIRONMENT的值打对应的Target就可以。

第二种:根据SRERVICE_ENVIRONMENT,我们修改对应环境的代码。

这里我们使用第二种方法:

先看项目里的代码,我们的目的就是通过脚本修改常量 ENVIRONMENT 的值,看代码我们可以修改为DEV、TEST、Production 其中一项,变量 appEnv 会根据 ENVIRONMENT 的值返回对应的环境。

AppEnv.swift

看了代码,其实也就明白了,上面配置的打包环境字符串参数的值和代码里字符串值是对应的

AppEnv.swift

5.我们加入了分支选择和环境选择,所以需要修改打包脚本,去这里下载

脚本

脚本讲解

脚本一:file_app_path是要修改代码的swift文件路径,也就是我们会使用脚本修改这个文件里的 ENVIRONMENT 常量的值。

file_app_path="./Test/AppEnv.swift"

AppEnv.swift

脚本二:找到我们要修改代码的swift文件,然后将 默认的字符串SRERVICE_ENVIRONMENT修改为打包时所选对应的定义好的字符串。

# 更改打包环境

environment="SRERVICE_ENVIRONMENT"

target_environment=${SRERVICE_ENVIRONMENT}

sed -i '' 's/'${environment}'/'${target_environment}'/g' $file_app_path

environment变量:是我们项目里默认的字符串

target_environment变量:是我们上面选择的环境对应的字符串

最后一行脚本的作用就是替换,将 environment 替换为 target_environment 。

脚本三:再打包完成之后,我们又将字符串替换回去,相当于恢复我们刚刚修改的代码,刚好和上面的相反

# 更改打包环境

sed -i '' 's/'${target_environment}'/'${environment}'/g' $file_app_path

然后保存,此时之前的 Build Now 已经变成 Build with Parameters,点击

6.然后保存,回到项目首页。

七:再次构建项目

在左侧选择”Build with parameters“,然后选择对应的分支,对应的环境,开始构建

构建成功,再次打开你的蒲公英,就会看到刚才打的指定分支、指定环境的新包。

你也可以扩展一些其他功能,比如打包完成后,给测试人员发送邮件。

你可能感兴趣的:(iOS持续集成使用Jenkins实现自动化打包)