Jenkins实现svn代码管理下IOS自动化打包+发布fir实践

前几天有个朋友给我分享了篇使用Jenkins实现自动打包发布的文章,我一看这不就是前东家用的那一套么,刚好我之前一篇总结“ios自动化构建”实现了shell脚本打包,可以将两者合起来一起用,好玩~~~废话少说,奔主题~

工欲善其事必先利其器,先准备好需要用到的工具:JenkinsJDK(Jenkins用到)、fir命令行工具。另外,在这里我用Jenkins分别尝试了Xcode打包(3.1)shell脚本打包(3.2) 两种不同方式。

注. fir命令行工具可直接运行:sudo gem install fir-cli –no-ri –no-rdoc   安装。

1、Jenkins的安装

打开安装包后显示以下界面,选择继续

《Jenkins实现svn代码管理下IOS自动化打包+发布fir实践》 1

选择自定义,进入下一步

《Jenkins实现svn代码管理下IOS自动化打包+发布fir实践》 2

取消“Start at boot as “jenkins”,点击安装就可以了

《Jenkins实现svn代码管理下IOS自动化打包+发布fir实践》 3

安装完后可以点击/Applications/Jenkins/jenkins.war启动jenkins

或直接在在终端中输入命令行打开Jenkins:

open /Applications/Jenkins/jenkins.war

这时候如果还没安装JDK的话,可能会弹出下面这个窗口提示你安装

《Jenkins实现svn代码管理下IOS自动化打包+发布fir实践》

点击”等多信息“会跳到相应下载页面,下载安装完JDK重新启动Jenkins就能运行了。

2、配置Jenkins

启动Jenkins用浏览器打开: http://localhost:8080/

就能进入Jenkins配置页面了,如果端口冲突可以通过下面命令修改端口

defaults write /Library/Preferences/org.jenkins-ci httpPort 7070

《Jenkins实现svn代码管理下IOS自动化打包+发布fir实践》

其中红色框框部分是我已经建立好的两个项目,第一次进入Jenkins的时候是没有的。

安装插件:

第一次进入Jenkins需要安装好下面几个插件:Xcode integration、Post-Build Script Plug-in。如果你使用的是git管理的代码,还需要再装下:GIT plugin和GitHub plugin。

《Jenkins实现svn代码管理下IOS自动化打包+发布fir实践》 1

选择“系统管理” -> “管理插件” -> “可选插件”,在过滤框中输入插件名称,勾选后点击“直接安装”就可以了

《Jenkins实现svn代码管理下IOS自动化打包+发布fir实践》 2

3、创建、配置项目

新建 -> 输入项目名称 -> 选择“构建一个自由风格的软件项目” -> 点击ok就行了。

这里有个点需要注意,项目名称最好不要包含空格或特殊符号,不然后面使用shell脚本进行打包的时候会给自己挖坑。

《Jenkins实现svn代码管理下IOS自动化打包+发布fir实践》

创建好项目之后点击进入配置

《Jenkins实现svn代码管理下IOS自动化打包+发布fir实践》 2

到这里一个项目算创建好了,先剧透下Jenkins从svn上拉下来的代码文件目录结构长啥样:

《Jenkins实现svn代码管理下IOS自动化打包+发布fir实践》 3

其中workspace文件夹就是Jenkins环境变量“${WORKSPACE}”对应的目录,可以在终端输入命令:

open ~/.jenkins/jobs/

打开

3.1 配置使用Xcode自动打包发布fir

第一个创建的项目叫“我去炒股1.2.0”,用来配置xcode自动打包发布。

《Jenkins实现svn代码管理下IOS自动化打包+发布fir实践》 1

选择svn填好路径,第一次配置会要求输入账户密码,以后就会自动记住了。

Check-out Strategy最好选择每次update最新代码前都revert下,而不是“Use ‘svn update’ as much as possible” ,因为我使用的是cocoa pod管理的第三方,每次打包运行pod install会修改了工程配置文件,如果下次自动打包前不先revert再update的话会出现冲突。

《Jenkins实现svn代码管理下IOS自动化打包+发布fir实践》 2

因为我使用的是cocoa pod管理的第三方,打包前先运行

pod install –verbose –no-repo-update

安装下第三方库

《Jenkins实现svn代码管理下IOS自动化打包+发布fir实践》 3

《Jenkins实现svn代码管理下IOS自动化打包+发布fir实践》 4

其中“${HOME}/Library/Keychains/login.keychain”是钥匙串路径,这是固定的。

《Jenkins实现svn代码管理下IOS自动化打包+发布fir实践》 5
《Jenkins实现svn代码管理下IOS自动化打包+发布fir实践》 6

下面添加的是打包成功后让Jenkins继续执行的操作,我们的目的是使用fir命令行把生成ipa包发布到fir.im上去

《Jenkins实现svn代码管理下IOS自动化打包+发布fir实践》 7

执行fir命令,其中fbea410df57d9d7536f43c74f8700ff2是我的fir账号生成的api token。

《Jenkins实现svn代码管理下IOS自动化打包+发布fir实践》 8

到这一步,Jenkins配置使用Xcode自动打包发布fir已经全部完成了,切回主页面

《Jenkins实现svn代码管理下IOS自动化打包+发布fir实践》 9

点击1会进入到状态2,标明正在打包。或如下图,进入项目里面选择“立即构建”,也会开始打包。编号50代表这是我第50次尝试构建打包。

《Jenkins实现svn代码管理下IOS自动化打包+发布fir实践》 10

直到动画结束,表示打包完成

《Jenkins实现svn代码管理下IOS自动化打包+发布fir实践》 11

可是如果编号前面的小圆圈是红的,则说明打包失败,可以点击进去查看失败log。

《Jenkins实现svn代码管理下IOS自动化打包+发布fir实践》 12

打开fir.im登录到我的账户,进去,可以看到未打包成功前是这样

《Jenkins实现svn代码管理下IOS自动化打包+发布fir实践》 13

打包成功后,刷新下页面就可以看到Jennkins已经帮我把测试包自动上传上去了

《Jenkins实现svn代码管理下IOS自动化打包+发布fir实践》 14

3.2 Jenkins配置使用shell脚本打包发布fir

使用shell脚本打包需要配置的东西比xcode要少,麻烦的就是需要自己写个shell脚本。为了尝试,我又创建了个“我去炒股1.2._script”工程。

《Jenkins实现svn代码管理下IOS自动化打包+发布fir实践》 1

svn的配置跟3.1保持一致

《Jenkins实现svn代码管理下IOS自动化打包+发布fir实践》 2

唯一的区别就是,打包、签名、上传fir等粗重或我都交给shell脚本来干了:

《Jenkins实现svn代码管理下IOS自动化打包+发布fir实践》 3

从Jenkins拉下来的代码目录来看,我的shell脚本在工作目录下的YTStockTradin文件夹下面。

《Jenkins实现svn代码管理下IOS自动化打包+发布fir实践》 4

好人做到底,附上我写的shell脚本:其中打不同包只需要修改“PROFILE_NAME”指定不同概要配置文件即可。

《Jenkins实现svn代码管理下IOS自动化打包+发布fir实践》 5

最后,吐槽下前面提到的“项目名称不要使用空格或特殊符号”的问题,我刚开始命名的是“我去炒股 1.2.0”,中间带了个空格,结果发现在Jenkins的工作空间里shell脚本只能无法定位到当前,用“echo | pwd”命令打印当前目录结果如下:

《Jenkins实现svn代码管理下IOS自动化打包+发布fir实践》 6

说明shell脚本只能定位到当前用户目录而已,这就郁闷了。。。

我又把脚本copy一份放到desktop,echo | pwd 运行打印出来的路径完全正确,真是日了狗~~~

shell命令我本身就不熟,查了很久,问了几个同事都没找到原因,最后还是坪哥给力,一下子就找到问题所在:路径名称不规范。

改了项目名之后就ok了,运行结果参照 3.1 。

特别感谢:苏波波和坪哥给了我不少指导和帮助 !!

参考:

iOS 下如何自动化打包 App

Jenkins+GitHub+Xcode+fir搭了一个持续集成环境

*jenkins*iOS项目持续集成(SVN+Cocoapods+Workspace)实战扩展(修改版)

Jenkins(二) 安装、新建Jobs与删除及SVN配置

    原文作者:boboWave123
    原文地址: https://www.jianshu.com/p/c7ce660c0d2a
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞