Jenkins+Fastlane实践(iOS项目持续集成)

什么是Jenkins?

  Jenkins是一个功能强大的应用程序,允许持续集成和持续交付项目,无论用的是什么平台。这是一个免费的源代码,可以处理任何类型的构建或持续集成。集成Jenkins可以用于一些测试和部署技术。
  上面摘自一个Jenkins教程网站Jenkins教程。依我个人理解、实践,Jenkins简单理解就是一个Server端的自动化工具,帮助我们完成持续集成(CI:Continuous Integration)的相关工作。
  本文将通过Jenkins+Fastlane的方式,实现Serve端持续集成(本篇文章基于local server,也就是server在本机上)。

工作流程

  在开始之前,我们先看一下,我们可以做到什么地步?
  一次完整的交付流程如下:


  Jenkins的作用:拉取Git代码、调用Fastlane;Fastlane的作用:编译项目、打包、上传ipa包到。所以Jenkins需要做的工作很少。

关于Fastlane

  Fastlane是一些工具的合集,帮助我们实现持续交付(CD:Continuous Delivery),关于Fastlane如何实现自动化打包,可以参考我之前的关于Fastlane的文章:使用Fastlane对iOS项目持续集成(自动打包)

安装Jenkins

  Jenkins是一款基于Web的软件,需要部署在Server上,我们这里就以本机为Server,所以将Jenkins上安装在本机上,通过localhost+端口号的方式进行访问,Jenkins的安装请看这里:通过homebrew安装Jenkins
  安装好后,终端输入jenkinsjenkins start,Jenkins的服务就跑起来了。


  Jenkins默认占用了本地的8080端口,所以在浏览器中访问http://localhost:8080,就是Jenkins的页面了。
  出于安全起见,Jenkins一开始锁住的,我们去Jenkins提供的路径下,找到密码以解锁:

  输入密码后,来到Jenkins的设置页面:

  Jenkins支持很多插件,比如Xcode打包、项目签名等,因为这里我们依赖于Fastlane打包,所以我们暂时先不安装打包相关的插件,这里先选择Install suggested plugins就好,然后等待这些插件安装完成就好了。

  有些插件会安装失败,不过没关系,等所有插件都安装完后(要么成功、要么失败),刷新页面,然后右下角选择continue就可以了。接着会创建一个管理员用户,正常创建就好了。紧接着登录用户,就来到了Jenkins的主页面:

  如果忘记了用户名密码,可以找到~/.jenkins/secrets/initialAdminPassword这个文件中的密码,通过用户名admin进行登录

创建一个新任务

  Jenkins中需要创建任务以完成各种自动化功能,这里我们点击创建一个新任务,然后选择构建自由风格的软件项目


  进入到配置项目的页面后,就可以对这个任务进行一些配置了。这里针对我们公司的项目中用到的设置进行讲解。
构建参数

源码管理

  上面两项设置,就做到了对指定git仓库的拉取,并且允许我们在拉取的时候选择git的分支,当然参数是可以不用设置的,根据项目的需求进行配置即可。
  拉取完成后,就可以调起Fastlane进行项目构建了。在构建这一步设置中选择执行shell

  Jenkins会将之前设置的git仓库上的项目代码checkout到本地,所以我们尽量让Fastlane也在git仓库上(fastlane文件夹在git上的项目的目录下),这样shell脚本只需要两步,就可以直接调起Fastlane了,1、cd到Jenkins checkout下来的项目的fastlane目录下;2、执行Fastlane命令。所以shell脚本内容如下,这里用到了之前设置的参数env,使用了shell的if-else语句,写起来还比较简单:

if [ $env == "测试环境" ]; then
        # fastlane构建测试环境的ipa
    Fastlane ios dev
else
        # fastlane构建线上环境的ipa
    Fastlane ios formal
fi

  这里可以看一下我们项目的目录结构(工作空间本来是看不到的,执行过一次左侧的Build with Parameters才会有,可以先往后面看,之后再回来看这一部分的内容),我们的fastlane文件夹就在项目的根目录下,所以我们无需cd就可以直接执行fastlane,如果你们的项目的fastlane文件夹在更深的目录下,则需要cd到相应的相对路径


  这样一个新的任务就配置完了,接着点应用,然后保存,就好了。退出来后,我们构建一下我们的项目,这样git上的代码就会checkout到本地了。

  左下角可以看到Jenkins已经开始构建了:

  点进去可以看到构建的详情:

  Fastlane执行的也是测试的lane:

  最终项目会编译完打包上传到蒲公英。

总结

  以上就实现了Jenkins+Fastlane的持续集成(CI),如果想做到公司里的每个人都可以打包,则需要弄一个server,Jenkins在server上配置好,大家访问server上的Jenkins页面,就可以进行各种自动化操作了。另外Jenkins还支持对git进行hook操作、定期打包等功能,大家感兴趣可以自己去尝试尝试。

彩蛋

  如果在文章的开头,就对Jenkins的老旧的UI没有了兴致,就关闭了本篇文章,那你就错过好东西了。Jenkins提供了另外一个插件Blue Ocean,一个皮肤插件,让Jenkins看起来更舒服。
  找到Jenkins的系统管理->插件管理->可选插件,搜索Blue Ocean,勾选后选择直接安装就可以了。等待所有插件都安装完成,点击返回首页,会发现多了一个Open Blue Ocean的选项:


  然后就开始享受清新的船新UI吧:

用法补充

定时构建

  如果想定期对项目进行构建,比如想每天下班前打包、每隔几个小时打一个包等,则可以设置定时构建:


  以上实现了每天18点进行一次构建的功能。
  关于具体的日程的格式,可以参考:
Jenkins定时构建

Git轮询

  另外如果想Git有新的提交时才打包,就可以使用Git轮询功能了:



  这样每个小时会去查询Git上是否有新的提交,如果检查到新的提交,就会开始构建。



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

推荐阅读更多精彩内容