美文网首页iOS开发系列iOS开发坚持写
Jenkins+Cocoapods+Coding+Git+Fir

Jenkins+Cocoapods+Coding+Git+Fir

作者: Jvaeyhcd | 来源:发表于2016-08-09 10:46 被阅读1673次

    原文地址发布在我自己的独立博客上:http://www.jvaeyhcd.cc/2016/05/21/%E4%BD%BF%E7%94%A8Jenkins%E6%9E%84%E5%BB%BAiOS%E6%8C%81%E7%BB%AD%E9%9B%86%E6%88%90%E8%87%AA%E5%8A%A8%E6%89%93%E5%8C%85/,顺便说一下,简书居然不支持markdown,真的应该给个差评。

    持续集成是一种软件开发实践,即团队开发成员经常集成它们的工作,通过每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽早地发现集成错误。

    为什么使用持续集成

    1、减少重复繁琐的打包过程

    2、任何时间、任何地点测试都可以获取到新包

    3、增强项目的可见性

    做持续集成对我们开发者来说是一件一劳永益的事情,对于发包这个问题,相信是每个程序员GG心中挥之不去的痛,而测试MM们也在每次马上就发出来的承诺中得出一个结论就是“你是个大骗子”。

    所以每次被测试MM追着要包,产品经理说给我装一个新包瞧瞧呗,后台GG说给我装一个老版本调试一下啊。。。这个时候我们的内心是奔溃的,然后我们不得不暂停手下的工作,切换到某个版本,Archive。。。其实对于打包发包这种事情根本就不是开发需要做的,因为这是一个简单没有技术含量且浪费时间的工作。时间就是金钱,所以为了不再浪费我们开发宝贵的时间,自动化构建这件事情必须得提上日程了。

    常见的持续集成工具

    * Jenkins CI

    * Travis CI

    * Hudson CI

    * Circle CI

    持续集成的工具有很多,不过最好用的还是Jenkins,Travis能够对Github上的开源项目做很好的集成,考虑到Jenkins的稳定性,我们还是选择Jenkins来开始我的iOS持续集成。

    工程结构

    本事例项目工程代码存放在coding,使用Cocoapods管理第三方库,存在在coding上的项目目录结构如下: 

    目录结构图

    由于cocoapods文件过多,所以没有必要上传到git仓库中,只用将Podfile文件传上去即可。

    Jenkins的安装

    由于Jenkins是Java开发的,所以首先我们需要先安装好Java环境,然后去Jenkins的[官网](http://jenkins-ci.org/)下载最新的war包。下载完成后,打开终端,进入到war包所在目录,执行以下命令:

    java -jar jenkins.war --httpPort=8888

    httpPort指的就是Jenkins所使用的http端口,这里指定8888,可根据具体情况来修改。待Jenkins启动后,在浏览器页面输入以下地址:

    http://localhost:8888

    这样就可以打开Jenkins页面了。

    `--httpPort=8888`可以不输入,不输入默认端口号为8080

    打开链接后,先要设置一些安装信息,这里就不再啰嗦,因为十分简单,接下来我们来看安装成功后的相关配置。

    Jenkins的配置

    到Jenkins页面,Jenkins-系统管理-插件管理-可选插件中,安装一下插件:

    * GIT plugin

    * Git client plugin

    * Xcode integration

    * CocoaPods Jenkins Integration

    Git私有仓库配置

    按照如下方式添加SSH,因为项目代码是存放在coding上的所以,这个关于生成SSH可以以Coding为例:https://coding.net/help/doc/git/ssh-key.html

    秘钥配置

    创建Job

    这里的步骤我准备全部一图片的形式展示出来。

    点击“Jenkins”-“新建”:

    创建Job

    源码管理

    选择刚刚创建的项目,点击“配置”:

    设置源码地址

    这里最好使用SSH,这个工程是私有项目,如果出现错误肯定是由你自己配置错误造成的。

    构建步骤设置

    选择构建步骤,记得添加Xcode插件,选择添加Execute Shell和Xcode,有先后顺序。

    添加构建步骤

    设置Execute Shell

    Execute Shell

    Xcode General build settings

    Xcode General build settings Code signing & OS X keychain options

    Keychain path填写`${HOME}/Library/Keychains/login.keychain`

    Keychain password对应的密码可以在钥匙串中查看:

    OS X keychain password

    Advanced Xcode build options

    Advanced Xcode build options

    fir.im Jenkins 插件安装

    上面的构建配置好了后,如果顺利的话就已经能够编译出ipa文件了,但是编译出来的ipa只能放在本地,不能给大家安装,所以编译完成后我们还需要将ipa文件上传到fir.im。

    fir插件的安装方法详情请移步:《fir.im Jenkins 插件使用方法》

    构建后上传到fir.im

    安装好fir插件后在“构建后操作”中点击“添加构建后操作步骤”,可以看到:

    添加构建后上传fir步骤

    点击“upload to fir.im”,然后会出现如下界面:

    设置fir.im的Token

    Fir.im的Token获取地址:http://fir.im/apps/apitoken

    手动构建

    选中你要构建的项目,然后点击“立即构建”

    选择正在构建的Build,然后点击“Console Output”可以查看build过程中打印的一些信息,如果遇到什么报错信息都可以在这里面查看。

    控制台输出

    自动构建设置

    构建触发器有一下几种触发方式:

    * 触发远程构建 (例如,使用脚本)

    * Build after other projects are built

    * Build periodically

    * Poll SCM

    这里我只用到了Build periodically

    Build periodically触发自动构建

    总结

    为了搭建这个Jenkins我看了很多博客,不过大多比较难懂,一直都没有成功,经过各种尝试后最终搭建成功,我在此将整个过程记录下来,以来是对自己知识的一个积累,二来如果能够给将要搭建Jenkins的iOS持续集成的朋友们一点帮助也是极好的。

    参考文档:

    [一步一步构建iOS持续集成:Jenkins+GitLab+蒲公英+FTP]

    [使用 Xcodebuild + Jenkins + Apache 做 iOS 持续集成]

    相关文章

      网友评论

      • 珂兰钻石: > git rev-parse refs/remotes/origin/master^{commit} # timeout=10
        > git rev-parse refs/remotes/origin/origin/master^{commit} # timeout=10
        Checking out Revision c2bc85e12a8c674358a7dad94a9c00103be3f6b3 (refs/remotes/origin/master)
        > git config core.sparsecheckout # timeout=10
        > git checkout -f c2bc85e12a8c674358a7dad94a9c00103be3f6b3
        > git rev-list c2bc85e12a8c674358a7dad94a9c00103be3f6b3 # timeout=10
        [ScimallIos] $ /bin/sh -xe /Users/Shared/Jenkins/tmp/jenkins807197505757438300.sh
        + pod setup
        /Users/Shared/Jenkins/tmp/jenkins807197505757438300.sh: line 2: pod: command not found
        Build step 'Execute shell' marked build as failure
        Finished: FAILURE

        楼主,我按照您的做法,到Xcode配置的时候,我也不知道哪里出错了,就是构建不成功,你能帮我看看嘛!谢谢
      • fir_im官方:欢迎试用 flow.ci :) https://flow.ci/
        配置上会简单很多~
        fir_im官方:@珂兰钻石 不支持。当时支持 coding.net 的时候还未出企业团队版,现在这个需求已经列入开发计划中了。
        珂兰钻石:您好,您家支持coding企业版管理的源码吗?
      • balabalabala:你好,ssh密钥让输入密码 是输入什么密码?ssh是没有密码的吧
        Jvaeyhcd:可以不输的,配置git的ssh网上有很多教程的
      • 木子_cocoa:你好 看了你文章配置了下,keyChain那块出了点问题,好像是keychain密码不对,有遇到过这种情况吗
      • 上天入地无所不能无所不晓:博主,我想问下你安装CocoaPods Jenkins Integration后但是没用到,直接用shell命令来更新pod,这是什么原因,我测试的时候发现CocoaPods Jenkins Integration不能用。
        Jvaeyhcd:@CaptainSirZero 可以
        CaptainSirZero:用 shell 来 更新 pod ,能成功吗
        Jvaeyhcd:对!因为不能用所以我用shell命令更新pod,具体什么原因我也不清楚
      • Ryan文濤:赞,我待会试试。:smile:
      • Ryan文濤:赞,我待会试试。:smile:

      本文标题:Jenkins+Cocoapods+Coding+Git+Fir

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