美文网首页自动部署自动化打包
Jenkins+Fastlane实践(iOS项目持续集成)

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

作者: 翻炒吧蛋滚饭 | 来源:发表于2018-07-16 19:23 被阅读114次

    什么是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上是否有新的提交,如果检查到新的提交,就会开始构建。



      定时构建和轮询可以一起使用。

    相关文章

      网友评论

        本文标题:Jenkins+Fastlane实践(iOS项目持续集成)

        本文链接:https://www.haomeiwen.com/subject/yjfkpftx.html