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“,然后选择对应的分支,对应的环境,开始构建

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

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

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,569评论 4 363
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,499评论 1 294
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,271评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,087评论 0 209
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,474评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,670评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,911评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,636评论 0 202
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,397评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,607评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,093评论 1 261
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,418评论 2 254
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,074评论 3 237
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,092评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,865评论 0 196
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,726评论 2 276
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,627评论 2 270

推荐阅读更多精彩内容