懒人做iOS系列之jenkins+git+fir打包

Posted Cocoa开发者社区

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了懒人做iOS系列之jenkins+git+fir打包相关的知识,希望对你有一定的参考价值。

本人处女文章就奉献在这了,我的第一次啊。。。。。。


做人嘛就得懒,只有你想懒的时候才能想出懒人解决问题的方法。最近真是被打包搞烦了,因为本人特别懒,连切个分支打个包这么简单的活都不想干,所以找到了Jenkins这个神器。真是懒人必备神器,妈妈再也不用担心我同时为多人打包了。废话不多说,开始教程。


网上也是先找了一些教程,但多多少少还是遇到了一些坑。所以想把自己整个流程写在这里吧。


第一步,安装Jenkins


两种方法,1.下载安装包,2.命令行


推荐命令行,因为安装包直接运行有可能什么反应都没有,命令行起码还有一些输出信息方便找问题。


方法1:



我的版本是2.60.2



懒人做iOS系列之jenkins+git+fir打包


懒人做iOS系列之jenkins+git+fir打包


运行Jenkins:


open /Applications/Jenkins/Jenkins.war


ps:我本着省事原则一开始用的方法一,但是后来发现缺少java,就先安装了brew,然后又安装了java


安装Java环境:


brew cask install java


或者:


方法2:


安装 home-brew()


ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"


安装 Jenkins


$ brew install jenkins


运行 Jenkins


$ jenkins


ps:这里可能提示你先安装java,安装完了java,接着安装jenkins


安装总结:这里因为我是本地有其他服务环境所以占用了8080端口,所以运行jenkins的时候提示我端口占用,解决方法在这里:


java -jar 路径 --httpPort=端口号


我这里用的是方法一安装的路径,没用命令行安装的Jenkins,命令行只是确保安装了Jenkins需要的必要环境。


所以我的命令如下:


java -jar /Applications/Jenkins/Jenkins.war --httpPort=8787


具体帖子参考:



第二步,运行并使用Jenkins


浏览器输入:http://localhost:8787/(我的是8787,没占用应该是8080)


初始化的图忘截取了。。。反正大概的意思就是输入一个从命令行获取的密码,随时去看一下命令行就对了,然后把这个一长串的密码记在小本本上,以后可能会用。然后就是自定义插件还是系统默认插件,当然选择默认插件,插件后续还能改。然后就进入了下图:


懒人做iOS系列之jenkins+git+fir打包


ps:恭喜恭喜,离成功只剩下一大步了。


第三步,安装插件和配置


系统管理->插件管理


懒人做iOS系列之jenkins+git+fir打包


我们要用到的插件


1.Xcode integration(xcode打包用)


2.Git plugin(git管理,svn类似)


3.Post-Build Script Plug-in(用来构建ipa后执行脚本传到fir或其它平台的)


4.github plugin(这个github的我应该没用到)


多说一句,在某个版本之后Post-Build Script Plug-in这个插件被下架了,我是废了好大劲找到了




这个安装方式比较特殊:系统管理-》插件管理 里面的高级选项卡 下的上传插件,选择hpi即可。


第四步,新建构建项目


前戏刚刚结束,这才是真正的开始,慢慢享受。


构建分6个块:


1.General


这部分主要就是对一些基本信息填写,项目名称,描述基本选择,我这里选项都没选,直接上图,


懒人做iOS系列之jenkins+git+fir打包


2.源码管理


这部分主要是从哪获取代码,SVN或者GIT,这里我是GIT



然后选择一个认证(credentials),


然后选择分支


懒人做iOS系列之jenkins+git+fir打包


这里划重点:(看文字和下图3)


这里重点说一下credentials,这个不是随便建个用户名就行的,是要和当初配置GIT一样,正常应该是SSH的,


下面图里选择SSH Username with privatekey


Username应该不是随便添的,反正我是GIT的账号名字


PrivateKey就是在ssh目录下获取的,目录是~/.ssh/id_rsa,把中间一段复制进来


Passphprase就是当时生成PrivateKey时的密码,如果不填,稍后拉分支代码时会在命令行提示Enter passphrase for key。


懒人做iOS系列之jenkins+git+fir打包


PS:到这里保存完了,构建项目正常应该可以拉到代码了。(保存返回上个页面点击立即构建)


但这里肯能会有个小问题,就是10分钟超时,如果项目过大,10分钟拉不下来就超时失败了,看下错误信息如果timeout,那么可以这么改,在图2,源码管理选项卡中,点击“add”,点击 "Advanced clone behaviours",然后设置Timeout (in minutes) for clone and fetch operation单位分钟。


3.构建触发器


说明:这个可以根据需求来设置或不设置


这里在网上粘了一段关于pull scm时间设置的:


This field followsthesyntaxofcron (withminor differences). Specifically,eachlineconsistsof5fields separatedbyTABorwhitespace:


MINUTE HOUR DOM MONTH DOW


MINUTE Minuteswithinthehour (0-59)


HOUR The houroftheday (0-23)


DOM The dayofthemonth (1-31)


MONTH The month (1-12)


DOW The dayoftheweek (0-7) where0and7are Sunday.


To specify multiple valuesforonefield,thefollowing operators are available. Intheorderofprecedence,


*'*'can be usedtospecify all valid values.


*'M-N'can be usedtospecifyarange, suchas"1-5"*'M-N/X'or'*/X'can be usedtospecify skipsofX''svaluethroughtherange, suchas"*/15"intheMINUTE fieldfor"0,15,30,45"and"1-6/2"for"1,3,5"*'A,B,...,Z'can be usedtospecify multiple values, suchas"0,30"or"1,3,5"Emptylinesandlinesthat startwith'#'will be ignoredascomments.


In addition, @yearly, @annually, @monthly, @weekly, @daily, @midnight, @hourly are supported.


举两个例子:


// every minute** ** *


// every 5 mins past the hour5* ** *


懒人做iOS系列之jenkins+git+fir打包


4.构建环境


我没做什么配置。。。


5.构建


Target与Xcode项目中Target名字对应


Clean before build 设置为YES


Configuration Release的时候Archive


.ipa filename pattern 随便起个名字不带后缀


Outout directory 为ipa的输出路径,我这里是${WORKSPACE}/build/


这里说下${WORKSPACE}这个环境变量:


我这里代表的是:/Users/用户名/.jenkins/workspace


懒人做iOS系列之jenkins+git+fir打包


懒人做iOS系列之jenkins+git+fir打包


上图的Team ID在下图这里找到


懒人做iOS系列之jenkins+git+fir打包


PS:如果使用了cocoapods,需要配置Advanced Xcode build options


Workspace File(不用加.xcworkspace)


xcode workspace file的路径:


我这里的绝对路径是:/Users/用户名/.jenkins/workspace/build_ipa/test.workspace


build_ipa是上面填写的项目名称,所以我这里填写test就可以了


懒人做iOS系列之jenkins+git+fir打包


以上保存,然后构建正常应该可以生成ipa了。现在还差最后一步,传fir或者做别的事情。


6.构建后操作


上传fir:


1)fir插件


这个我用了,但是一直报错:Can not found mapping or dysm file,谁成功了,说下咋弄的,谢啦。


但也说下我的步骤吧,安装插件:


安装完了,构建后操作会有upload to fir:


懒人做iOS系列之jenkins+git+fir打包


2)执行脚本上传


执行脚本之前需要安装fir上传用的命令:


sudo gem install -n /usr/local/bin fir-cli --no-ri --no-rdoc


上面的命令来自 fir.im 的工具 fir-cli,这是他们的官方使用说明


还记得上面装的Post-Build Script Plug-in插件么,这次派上用场了,


点击add generic script,然后content里输入


#!/bin/sh


fir p ipa路径 -T fir的token -Q


我这里的ipa路径是./Build/xxx.ipa


懒人做iOS系列之jenkins+git+fir打包


到这里应该就可以完美的构建并上传到fir上了。


参考文章:



(或点击阅读原文,直达CocoaChina商城)


一周精选

CocoaChina

全球最大苹果开发中文社区


以上是关于懒人做iOS系列之jenkins+git+fir打包的主要内容,如果未能解决你的问题,请参考以下文章

剑指架构师系列-持续集成之Maven+Nexus+Jenkins+git+Spring boot

玩转Jenkins - 使用Jenkins给Git自动打Tag

手把手教你用 Jenkins 构建 iOS 项目

如何在新打git tag入库后自动触发Jenkins任务

Jenkins系列之Jenkins的安装

Jenkins+Gradle+Git自动打apk包,并上传到ftp