Jenkins持续集成实战笔记

更新于2016.02.24:
1.No scheme问题的解决
2.Code Sign Error问题的解决
3.关于.ipa打包的问题解决方案
2016.02.25 ->Homebrew
2016.02.26 ->Fir.im以及蒲公英

安装Jenkins

点击Jenkins进入Jenkins官网,右边有个mac os x点击下载。
下载之后会有个jenkins.war包(后台服务),双击打开会提示

需要有jdk才能使用此工具。

点击更多信息进入页面选择JDK,然后会进入此页面Java SE Development Kit 8 Downloads

选中Accept License Agreement授权,然后选择Mac OS X x64下载dmg文件。

安装好JDK之后,直接点击jenkins.war运行或者使用命令行java -jar jenkins.war运行,然后浏览器访问http://localhost:8080/即可进入Jenkins界面。关于Jenkins的一些配置详情可以参考Starting and Accessing Jenkins

安装插件

插件管理

点击系统管理->插件管理->Tab搜索Xcode,勾选下载安装,然后重启就可以使用了。
如果你想集成Github的Pull Request,需要安装Github PluginGitHub pull request builder plugin,还想使用Testflight就需要再安装git pluginTestfilght plugin

新建Job

新建一个自由风格的软件项目

一般会勾选丢弃旧的构建,这样会清理build文件夹。

源码管理

如果使用的是svn,就选择subversion

增加Xcode构建

如果有workspace的高级配置:

注:通过之后的深入了解,Code Signing Idenity以及SDK的配置是可以不要的,至于Code Signing Idenity的配置也不是这样的,如果需要配置这个的话,见下面的内容。

Build

Build过程总是失败,控制台输出报如下错误:

根据提示:/Application/Xcode 2.app/Contents/Developer路径不存在,通过一番折腾,搞死人>.<,这个坎终于过了,只要在命令行输入sudo xcode-select -s /Applications/Xcode.app/执行就好了,可是问题又来了 TT.TT

找到问题所在,开始配置的iOS SDk:iphoneos9.0不对,修改为iphoneos9.2再次构建,然后又报错T.T(欲哭无泪)。
又折腾半天,心累!找到Jenkins下面的项目运行一下,svn下下来的工程.a文件全部没有......

想起以前给svn添加过.a文件,SVN上传.a文件

以为这次能成,结果:

卡死在这里,一直这样,又不报错,~~~(>_<)~~~

更新

经过一段时间的摸索与参考,此处推荐lp_马建成的几篇Jenkins搭建博客CI第一篇:Jenkins+github->fir.im/蒲公英pgyer.comCI第二篇 集成项目(SVN)workspace编译生成ipa到fir-蒲公英(jenkins)CI第二篇续 issues

上面的问题主要就是关于No scheme的,而解决这个问题只需在scheme管理share一下再上传项目就可以了。No scheme 的解决办法

之后又失败了一次:

从报错可以看出,是code design的问题,上面lp_马建成的博客有提到,但是最后尝试了很多次都不对,然后查找资料,最后找到一种方式:自己配置Keychains and Provisioning Profiles,这需要用到Keychains and Provisioning Profiles Plugin,具体的配置方法在链接里面可以找到。

SUCCEEDED!!! 终于构建成功了,OMG!

但是打包成ipa失败了:

然后参考了一步一步构建iOS持续集成:Jenkins+GitLab+蒲公英+FTP,失败原因是不支持Mac10.10以上的打包。所以需要用脚本来实现iOS打包:(请配置自己的workspaceschemeCODE_SIGN_IDENTITYProvisioningProfile

if [ -d "${WORKSPACE}/build" ]; then rm -rf ${WORKSPACE}/build; fi;
mkdir ${WORKSPACE}/build;
if [ -d "${WORKSPACE}/build/${BUILD_NUMBER}" ]; then rm -rf ${WORKSPACE}/build/${BUILD_NUMBER}; fi;
mkdir ${WORKSPACE}/build/${BUILD_NUMBER};
xcodebuild -workspace ${WORKSPACE}/Wecube.xcworkspace -scheme "Wecube" -sdk iphoneos archive -archivePath ${WORKSPACE}/build/${BUILD_NUMBER}/archive CODE_SIGN_IDENTITY="iPhone Distribution: ******"
xcodebuild -exportArchive -exportFormat IPA -archivePath ${WORKSPACE}/build/${BUILD_NUMBER}/archive.xcarchive -exportPath ${WORKSPACE}/build/${BUILD_NUMBER}/${JOB_NAME}.ipa -exportProvisioningProfile "XC Ad Hoc: com.***.***"

注:这里使用shell脚本打包,就把之前的Xcode插件配置全部删掉了,如果有更好的方法请告知一声,谢谢!

通过从别人那里的了解,mac 10.10以上可以打包ipa,见stackoverflow

通过这种方式果真也可以打包成ipa。

或者是这样,不勾选Pack application and build .ipa,build成功之后增加一个Execute shell:

/bin/mkdir $(PWD)/build/OUTPUT    
/usr/bin/xcrun -sdk iphoneos PackageApplication -v $(PWD)/build/MyApplication.app -o $(PWD)/build/OUTPUT/MyApplication.ipa

其中,MyApplication替换成你APP的名称。

Homebrew

查阅资料的过程中,很多都使用了Homebrew这种Mac上的第三方库管理工具,这使得mac上的包管理非常方便,具体安装很简单,只需在终端输入:

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

完成之后,在终端输入brew help就可以查看到homebrew的用法:

Example usage:
  brew [info | home | options ] [FORMULA...]
  brew install FORMULA...
  brew uninstall FORMULA...
  brew search [foo]
  brew list [FORMULA...]
  brew update
  brew upgrade [FORMULA...]
  brew pin/unpin [FORMULA...]

Troubleshooting:
  brew doctor
  brew install -vd FORMULA
  brew [--env | config]

Jenkins使用Homebrew安装:

brew install jenkins

Fir.im以及蒲公英

Fir.im Jenkins插件的使用方法见Fir.im网站的博客传送门

至于上传到蒲公英的使用方法下面扩展链接上有,就不赘述。

以上就是我配置Jenkins的辛酸历程,可能有好的方法,但是我已入坑,希望能帮助到遇到同样问题的童鞋。

扩展链接:

IOS使用Jenkins进行持续集成

让程序员变懒的工具 : Jenkins + 蒲公英

Jenkins+Github+Testflight在Mac下搭建持续集成环境

IOS使用jenkins进行持续集成2

Jenkins、Git、CocoaPods、Fir.im 实现 iOS 应用持续集成

iOS可持续化集成: Jenkins+bundler+cocoapods+fastlane

使用fastlane实现iOS持续集成

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 156,907评论 4 360
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 66,546评论 1 289
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 106,705评论 0 238
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,624评论 0 203
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 51,940评论 3 285
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,371评论 1 210
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,672评论 2 310
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,396评论 0 195
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,069评论 1 238
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,350评论 2 242
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,876评论 1 256
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,243评论 2 251
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,847评论 3 231
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,004评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,755评论 0 192
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,378评论 2 269
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,266评论 2 259

推荐阅读更多精彩内容

  • 前言 众所周知,现在App的竞争已经到了用户体验为王,质量为上的白热化阶段。用户们都是很挑剔的。如果一个公司的推广...
    偏偏就是祢阅读 8,886评论 34 59
  • 前言 众所周知,现在App的竞争已经到了用户体验为王,质量为上的白热化阶段。用户们都是很挑剔的。如果一个公司的推广...
    闲云清烟阅读 2,479评论 1 4
  • 来源:伯乐在线专栏作者 - 一缕殇流化隐半边冰霜链接:http://ios.jobbole.com/87576/ ...
    飞天猪Pony阅读 2,900评论 0 20
  • 我在滨河公园的小路里慢慢的走,昏暗的路灯照着黑幽幽的灌木丛,有虫子的声音从黑暗中传来。我经常在这里走,希望一个艳遇...
    冰眉铁面阅读 278评论 0 0
  • 不管你是真文艺还是装文艺,长江索道可以让你找寻到重庆的前世今生。晃在长江湍急的水流之上,怀旧的情愫晕染开来…… 一...
    月色的笔尖阅读 324评论 0 0