【iOS 开发】使用 Jenkins + Fastlane 持续集成 iOS 项目

Jenkins

持续集成(Continuous Integration 简称 CI)。Jenkins 是一个开源项目,提供了一种易于使用的持续集成系统,使开发者从繁杂的集成中解脱出来,专注于更为重要的业务逻辑实现上。具体就不多说了,想要更多的了解可以去查一下,下面是集成方法。


本文最终目的:

  • 测试人员可登录 Jenkins 网页自行选择 开发分支打包类型 ,然后自动打包完成并自动上传至 蒲公英iTunes Connect ,不再需要开发人员手动安装或上传。

1. 配置 Fastlane

由于项目的编译打包以及上传全部要依赖 Fastlane 来进行,所以在配置 Jenkins 之前要保证项目已经配置好了 Fastlane ,这里看我的另一篇文章:【iOS 开发】使用 Fastlane 自动化打包并发布 iOS 项目

2. 安装 Jenkins

  • Jenkins 依赖于 Java 运行环境,因此需要先保证电脑已经安装了 Java JDK ,如果没有的话前往 这里 下载安装即可。

  • 我这里是使用 homebrew 安装 Jenkins ,没有安装 homebrew 的输入以下命令安装一下。

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
  • 千万不要去 Jenkins 官网下载 pkg 安装包安装,因为用安装包安装会自动生成一个共享用户 jenkins,而这个用户的权限和系统登录用户的权限不同,会造成大量的权限问题,我已经被坑惨了,用 homebrew 装是不会生成共享用户的。

  • homebrew 安装完成后输入以下命令安装 Jenkins

brew install jenkins
安装
  • 如果想要卸载直接执行以下命令即可卸载 Jenkins
brew uninstall jenkins
  • 安装完成后输入以下命令链接 launchd 配置文件。
ln -sfv /usr/local/opt/jenkins/*.plist ~/Library/LaunchAgents
  • 然后执行以下命令启动 Jenkins
launchctl load ~/Library/LaunchAgents/homebrew.mxcl.jenkins.plist
  • Jenkins 默认是开机自动启动的,如果想关闭就执行以下命令即可关闭。
launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.jenkins.plist
Jenkins
  • Jenkins 默认端口号是 8080 ,如果想要更改端口号的话可以用 Xcode 打开以下文件,将 httpPort 后面的 8080 改成你想要的端口号即可,如果想要别人访问你的 Jenkins 服务器,只要把 httpListenAddress 改为 0.0.0.0 即可,改完重启后生效。
/usr/local/opt/jenkins/homebrew.mxcl.jenkins.plist
修改端口

3. 配置 Jenkins

  • 等待启动完成后 ,会出现以下界面让你输入密码解锁。
Jenkins
  • 密码就在上面提示的 /Users/Jonzzs/.jenkins/secrets/initialAdminPassword 文件中,打开 initialAdminPassword 文件将密码复制到浏览器解锁即可,然后点击第一个 Install suggested plugins
Jenkins
  • 然后等待插件全部安装完成。
Jenkins
  • 安装完成后会跳出创建用户界面,按照提示创建用户即可。
Jenkins
  • 最后到这个页面就算是安装完成了。
Jenkins

4. 安装插件

  • 在建任务之前需要先安装几个插件,前往 系统管理 - 管理插件 ,在 可选插件 中搜索 GitLab PluginGitlab Hook PluginXcode integration 这三个插件,然后安装。
Jenkins

5. 配置环境变量

  • 前往 系统管理 - 系统设置 找到 全局属性 ,然后添加以下三个环境变量。
LANG
en_US.UTF-8
LANGUAGE
en_US.UTF-8
LC_ALL
en_US.UTF-8
环境变量
  • 这三个环境变量是用来修改编码格式的,如果不加下面脚本执行 fastlane 命令时会报错。

6. 创建任务

  • 插件安装完成以后就可以开始创建项目了,点击新建任务,输入你的项目名称。
Jenkins
  • 勾选 参数化构建过程 ,添加一个 String Parameter 和一个 Choice Parameter ,第一个 ARCHIVE_BRANCH 主要是输入要打包的项目分支,第二个 ARCHIVE_TYPE 是选择打包的类型,我这边 beta 是打包发布到 蒲公英release 是打包发布到 iTunes Connect ,如果你不需要这些参数可以跳过。
Jenkins
  • 源码管理 输入你的仓库地址,地址为 SSH 方式,然后需要在点击 Add 添加 SSH Key
Jenkins
  • 选择 SSH Username with private key 类型,Username 随便填,然后选择 From the Jenkins master ~/.ssh ,添加完之后在 Credentials 那里选择即可。
Jenkins
  • 如果自己电脑没有生成过 SSH Key ,就自己去查一下吧,这里就不重复了。

  • 最后在 构建 中增加一个 Execute Shell ,主要用来填写脚本内容。

Jenkins
  • 填写以下脚本命令,xxx 处填写自己项目相应文件夹名,因为在执行 fastlane 指令之前需要进入 fastlane 文件夹所在目录,如果你的 git 根目录就是在项目目录的话,可以不用这句,然后点击 保存 即可。
git checkout ${ARCHIVE_BRANCH}
git pull
cd ./xxx
fastlane ${ARCHIVE_TYPE}

7. 开始打包

  • 进入你创建的任务,点击 Build with Parameters ,然后输入要打包的项目分支以及类型,然后点击 开始构建 即可开始打包。
Jenkins
  • 如果构建失败,也可以在 Build History 中点击 Console Output 查看控制台输出记录,找到错误原因。
Jenkins

配置方法到这里就完成了,有不明白的地方可以留言。

将来的你,一定会感激现在拼命的自己,愿自己与读者的开发之路无限美好。

我的传送门: 博客简书微博GitHub

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

推荐阅读更多精彩内容