jenkins+xcode+蒲公英实现ipa自动化打包

一、简述

公司特意配了一台mac机给测试用,并且打包发布这些功能都要在这台测试机上完成,老大特意让我去研究一下jenkins实现自动化打包,好吧,那就去看吧。
百度搜一下,Mark一下简介:jenkins是一个广泛用于持续构建的可视化web工具,持续构建即各种项目的”自动化”编译、打包、分发部署。jenkins可以很好的支持各种语言(比如:Java, c#, PHP等)的项目构建,也完全兼容ant、maven、gradle等多种第三方构建工具,同时跟svn、Git能无缝集成,也支持直接与知名源代码托管网站,比如github、bitbucket直接集成。

二、Jenkins的安装

1、Jenkins本身是用java语言开发的,所以安装Jenkins之前,要保证你的电脑有jdk,如果没有,请到如下链接下载:http://rj.baidu.com/soft/detail/25851.html?ald ,另外建议git、ant、maven、gradle、groovy等工具也一并安装好,方便与这些构建工具集成。
2、进入Jenkins的官网 https://jenkins.io/index.html ,然后下载并安装Jenkins。此处有两种安装方法,使用命令行安装和使用jenkins.pkg安装,建议使用后一种
3、下载
1)点击链接进入官网

84E967A9-7F8D-4C9E-90F7-901950D46D55.jpg

2)点击download

D76CB828-8659-4BE5-BA95-3E45C5AC46FB.jpg

3)我选择的是Mac OS X

B89463C6-D93E-4302-9995-C6E7AF8C4209.jpg

4)下载完成后,得到 jenkins-2.19.4.pkg 文件,点击直接安装即可,在下图中,选择自定,取消 start at boot as“jenkins”,一般不需要自启动

{FE3B7757-441D-A430-8F85-172F0657495E}.png

5)安装完成后,会直接跳转到如下界面,如果没有跳转或者跳转失败,可通过执行如下命令 ” open /Applications/Jenkins/jenkins.war ” 进入到该界面

{B8FC56C6-117D-CE4B-0B0A-DBB9D650F905}.png

如果打开没有反应,启动不了,就在浏览器直接打开:http://localhost:8080/ ,就可以进入到上面界面了。
6)观察图中的路径,然后打开你的终端,执行如下命令(注意:该命令仅在安装Jenkins的过程中执行才有效;安装成功后,再在终端中执行是无效的):

7)然后将我们得到的password输入到“Administrator password“中,即可进入如下界面,接着安装一些建议的插件,安装过程中,有的插件可能会安装失败,可以跳过,之后需要对应的插件时,再重新安装即可,具体后面会讲到:

8)插件安装完成后,可能会卡在如下界面,不会自动跳转,刷新下界面即可:
插件

9)在刷新后的界面中注册,输入用户名和密码,如下:

10)注册成功后,点击”Start using Jenkins”

三、Jenkins的使用

1、安装成功后,会进入到如下界面:
jenkins首页

2、新建项目

1)点击新建,创建一个项目

2)输入项目名称,并选择构建一个自由风格的软件项目,点击下方的OK。

3)General 中建议写上一些项目描述,这里启用项目安全是指管理员对对应登录用户设置的一些权限。


图片.png

4)这里设置的是构建项目(即用jenkins打包ipa时)的参数设置。

图片.png

具体的使用是在项目页点击

图片.png

然后进入页面,BR就是刚刚设置的参数名称,master就是你对应项目的分支,在所有的设置都设置好了时就可以点击开始构建。

图片.png

5)由于我们在配置jenkins用到了JDK,这里对应的是JDK的名称,第二个勾选项是配置的打包的项目关联的mac电脑名称(自己设置)。


图片.png

具体的在首页中可看到

图片.png

点击进去


图片.png

6)源码管理,公司的项目是放在gitlab上的,这里Repository URL填的是项目的路径,Credentials添加的是gitlab上登录的用户名和密码, Branch Specifier (blank for 'any')这里就是上面提到的构建时的分支设置参数。

图片.png

输入对应的用户名和密码后,并在Credentials中选择该帐号。

7)由于项目是在另一台mac机上构建的,则这里配置身份验证令牌。

图片.png

8)构建设置
在下图的Target中,保证该Target和Xcode项目工程中的Target同名。建议勾选Clean before build?,并将Configuration设为Release。勾选Pack application and build .ipa?,同时为即将输出的ipa文件命名并指定输出路径。
• Target:就是我们在项目中建立的Target
如果不清楚有哪些Target的情况下可以到xcodeproj或xcworkspace的目录下运行如下命令 xcodebuild -list 即可看到Targets,其中是所有可以用的target。
• Clean before build?:这个是在编译前是否clean一次,一般是选择YES。
• Configuration: 对应的是xcodebuild命令里的-configuration的参数,可选项为[Debug、Release],一般都填Debug,这样就可以将打包后的ipa交付给测试人员测试
• Pack application and build .ipa?:这个是在结束是是否要产生对应的ipa文件,一般都是打上勾的
• .ipa filename pattern:这个配置项是配置所产生ipa的文件名,其中有一些可用的全局变量
其中${VERSION}和${SVN_REVISION}都是可以直接用的环境变量,如果想看还有哪些环境变量而已用可以点击在Execute shell下方有个 "See the list of available environment variables"进行查看,这里就不进行列出来了。
• Output directory:这个配置了ipa的输出目录(默认Build output directory所在路径,见下图)

图片.png

Code signing & OS X keychain options (签名的设置)
Codee Signing Identity:所使用的签名
如果不知道具体填什么可以到钥匙串访问中寻找 iPhone Distribution:开头的所使用的证书,然后选中后点击右键选择显示简介,在弹出的窗口中找到常用名称,将其复制填入即可。 或者可以在命令行中输入security find-identity -p codesigning -v来查找iPhone Distribution:开头的签名即可,找到后将双引号中的内容复制。
• Unlock Keychain?: Jenkins需要访问Keychain,获取响应的key,所以需要授权。选上就自动解锁。需要提供密码。
• Keychain path: 默认都是${HOME}/Library/Keychains/login.keychain
• Keychain password: 钥匙串的密码
注意:这个可以在 系统管理-》系统设置-》Xcode-》BuilderKeychains-》添加,在配置中可以选取

图片.png

Advanced Xcode build options(xcodebuild命令的配置)
• Clean test report?:这个是如果要用到xcode测试的时候才用到,意思就跟英语一样
• Xcode Scheme File: 关于这个其实对应的就是xcodebuild命令中的-scheme的参数
如果您不知道要填写什么的话, 可以通过xcodebuild -list来查询。是不是觉得这条命令很熟悉,没错前面查找target的时候也是用这个命令!
• SDK:这里是xcodebuild命令中的-sdk的参数,指定编译和打包的sdk号。如果不懂可以填写哪些可以通过xcodebuild -showsdks来查看。
• SYMROOT:该变量是编译和打包产生结果的输出目录( .a, .zip, .ipa, .hmap等产生文件的位置),其中该目录其实是包括了CONFIGURATION BUILD DIR和OBJROOT这两个目录,默认的路径是所编译的xcodeproj所在目录,如主项目和POD项目整合后,则会在主项目的和POD项目的XCODEPROJ所在目录
如果在指定了OBJROOT的位置后,编译过程中产生的文件不会在该目录体现 如果在指定CONFIGURATION_BUILD_DIR的位置后,该变量则变成无效化
• Custom xcodebuild arguments:这个就是xcodebuild命令中的指定buildsetting的命令的参数,至于可以指定哪些参数请不要问我,可以找度娘或者谷哥
• Xcode Workspace File:该配置是指明了xcodebuild中的-workspace的变量,其实就是如果您需要编译打包一个workspace时候的时候指定那个后缀名为xcworkspace的文件, 如果指定了该配置,那么Xcode project file配置项将无效
• Xcode Project Directory:该目录是指明了包含xcodeproj文件的目录(这个我是没用用到如果用了该参数可能最开始第一步的构建就没用了------不过我还没证实,欢迎小伙伴证实后告诉我)
• Xcode Project File: 如果需要构建一个project而不是一个workspace的话则指定文件的名称(后缀名为xcodeproj的文件)
• Build output directory:该参数只是指明了最终需要产生的动态包,ipa,app等文件默认路径为所编译的xcodeproj所在目录,如主项目和POD项目整合后,则会在主项目的和POD项目的XCODEPROJ所在目录(编译产生的相关文件所在目录,默认为$SYMROOT/$CONFIGURATION)
• 值得说的是有一个参数也是挺常用的就是OBJROOT,该参数是产生 .a和 .hmap文件的目录,默认路径为所编译的xcodeproj所在目录,如主项目和POD项目整合后,则会在主项目的和POD项目的XCODEPROJ所在目录,关于OBJROOT、CONFIGURATION BUILD DIR以及SYMROOT三个路径之间的关系大家可以去查看官方的文档。

图片.png

3、添加上传到第三方分发平台(这里选择蒲公英平台作为例子)
蒲公英上的User Key
uKey="41ed0a30a0cdf9296501232e69b5a66b"
蒲公英上的API Key
apiKey="ece94057dd3d5bd3d570ae509a0c3e3d"
要上传的ipa文件路径
IPA_PATH="${WORKSPACE}/build/PPCSDKTest.ipa"
密码
PASSWORD="123456"
MSG=git log -1 --pretty=%B
执行上传至蒲公英的命令
echo "++++++++++++++upload+++++++++++++"
curl -F "file=@${IPA_PATH}" -F "uKey=${uKey}" -F "_api_key=${apiKey}" -F "updateDescription=${MSG}" -F "password=${PASSWORD}" http://www.pgyer.com/apiv1/app/upload

图片.png

到此为止关于Jenkins整合Xcode的配置项并自动上传到蒲公英差不多就说好了。那么可以稍微构建一下项目试试了,构建完项目后,你就会发现测试人员不需要天天来烦你,再也不需要听到“开发狗,赶紧给我安装一个最新的版本”了。

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

推荐阅读更多精彩内容