社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Git

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

Cocoa开发者社区 • 7 年前 • 1736 次点击  

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


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


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


第一步,安装Jenkins


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


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


方法1:


下载地址:http://jenkins-ci.org/


我的版本是2.60.2





运行Jenkins:


open /Applications/Jenkins/Jenkins.war


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


安装Java环境:


brew cask install java


或者:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html


方法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


具体帖子参考:


http://blog.csdn.net/bosbear/article/details/43307899


第二步,运行并使用Jenkins


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


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



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


第三步,安装插件和配置


系统管理->插件管理



我们要用到的插件


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这个插件被下架了,我是废了好大劲找到了


贴个地址:(地址无效可以私信我)


http://www.filewatcher.com/m/postbuildscript.hpi.659688-0.html


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


第四步,新建构建项目


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


构建分6个块:


1.General


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



2.源码管理


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


输入GIT仓库地址,


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


然后选择分支



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


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


下面图里选择SSH Username with privatekey


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


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


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



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* ** *



4.构建环境


我没做什么配置。。。


5.构建


Target与Xcode项目中Target名字对应


Clean before build 设置为YES


Configuration Release的时候Archive


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


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


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


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




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



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


Workspace File(不用加.xcworkspace)


xcode workspace file的路径:


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


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



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


6.构建后操作


上传fir:


1)fir插件


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


但也说下我的步骤吧,安装插件:http://blog.fir.im/jenkins/


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



2)执行脚本上传


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


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


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


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


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


#!/bin/sh


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


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



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


参考文章:


http://www.jianshu.com/p/13e34671788f


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


一周精选

TIOBE 8 月编程语言排行榜:“后院”硝烟四起

程序员们证明智商的时候到了!一大波智力面试题正在靠近~

项目经理还是CTO?程序猿今后该怎么走?

iOS应用内跳转到系统设置页面

iOS进阶:Objective-C底层原理

公司开发者账号申请(2017最新版)

CocoaChina

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



今天看啥 - 高品质阅读平台
本文地址:http://www.jintiankansha.me/t/HGwKe5srGo
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/2952
 
1736 次点击