MAC jekins SVN 自动化部署

每一次新版本要发布,都被测试部门催成狗,测试部也耐不住了,想自己打包,研发只管提交代码,听到这个消息,还是很开心的,终于不用打包了。跟同事折腾Jenkins三天,终于正常导出ipa包了!!

因为网上教程多是依靠Github,而且很多是在Jenkins中配置Xcode参数,相当的麻烦,我们是用Shell 脚本,非常的easy。在这里记录下环境搭建的过程,希望能帮他人减少一点坑。

1 安装Jenkins

Jenkins是基于Java开发的一种持续集成工具。所以呢,要使用Jenkins必须使用先安装JDK。

JDK安装

JDK下载地址

jdk 1.8.png

安装JDK的过程略,别说你不会安装(如有不会安装的,自行百度)。

Jenkins安装

Jenkins下载地址

Jenkins安装文件.png

点击图中 Mac OS X,会自动下载【jenkins-1.644.pkg】

安装过程略(双击jenkins-1.644.pkg后,下一步就OK了)。

注意: 1、Jenkins 安装成功后,会创建一个Jenkins用户,而Jenkins的工作区间默认是在【/用户/共享/Jenkins/Home/jobs】目录下,可以用Finder-->前往,进入。

2、Jenkins目录下的文件夹的读写权限只对Jenkins用户开放,所以后面apple证书等必须在Jenkins用户下安装,项目的ipa导出也得在Jenkins用户下操作。(或者用管理员权限修改该目录针对用户的权限)

3、Jenkins的使用是每一个用户都可以使用,所以有可能导致构建版本的时候报错,还是老老实实在Jenkins用户下操作吧。

测试Jenkins安装成功

打开浏览器,输入http://localhost:8080,如果能够正常打开Jenkins,则Jenkins安装成功。

2 安装Jenkins插件

Jenkins里有相当多的插件,使用什么工具就安装什么工具的插件。

比如我们这里使用SVN,就安装SVN的插件,如果你使用Git就安装Git的插件。

因为我已经安装了SVN,所以安装插件的过程就用Git来演示。

安装插件第一步.png

安装插件第二步.png

第三步,搜索,安装插件.png

第四步,安装过程.png

第五步,查看已安装插件.png

3 Xcode以及开发证书设置

因为要使用Xcode命令,所以必须保证Xcode command Line已安装。

3.1 设置apple development 证书

在原来Xcode开发所在用户下,导出发布证书,如果要打企业包(299刀)和公司/个人版包(99刀),则两种证书都要导出,然后拷贝到Jenkins用户环境下,双击安装到Mac 的钥匙串中。

证书设置第一步.png

证书设置第二步.png

注意:因为用户访问钥匙串中的证书需要权限,而用jenkins构建时,不管是用Xcode插件配置还是shell 脚本,都不能输入用户密码,所以必须设置证书的【访问控制】为允许所有应用程序访问此项目。

3.2 安装mobileprovision描述文件

同样需要在Jenkins用户下,安装好打包需要的手机描述文件。

4 配置构建项目

下面讲解构建项目的配置,可以使用本地的项目,也可以使用SVN上的项目(只需要填入svn上工程地址即可),然后输入shell 脚本就可以开始构建了。

4.1 使用本地项目构建

步骤如下:

配置项目,第一步.png

点击OK,在【/用户/共享/Jenkins/Home/jobs】目录下会生成HelloJenkins的目录。

配置项目第二步.png

配置第三步.png

其他的设置项,均不用设置,只需要设置下脚本即可,脚本详细的内容如下:

# 工程名APP_NAME="HelloJenkins"# 证书CODE_SIGN_DISTRIBUTION="iPhone Distribution: XXXXXXXXXXXX"# info.plist路径project_infoplist_path="./${APP_NAME}/Info.plist"if[ ! -f"$project_infoplist_path"]thenecho"*************************************"echo"***      plist文件路径错误!    ****"echo"***      plist文件路径错误!    ****"echo"*************************************"exitfi#取版本号bundleShortVersion=$(/usr/libexec/PlistBuddy -c"print CFBundleShortVersionString""${project_infoplist_path}")#取build值bundleVersion=$(/usr/libexec/PlistBuddy -c"print CFBundleVersion""${project_infoplist_path}")DATE="$(date +%Y%m%d%H%M%S)"IPANAME="${APP_NAME}_V${bundleShortVersion}_${DATE}.ipa"# 导出路径IPA_PATH=~/"${IPANAME}"echo"=================clean================="xcodebuild -target"${APP_NAME}"-configuration'Release'cleanecho"+++++++++++++++++build+++++++++++++++++"xcodebuild -target"${APP_NAME}"-sdk iphoneos -configuration'Release'CODE_SIGN_IDENTITY="${CODE_SIGN_DISTRIBUTION}"SYMROOT='$(PWD)'xcrun -sdk iphoneos PackageApplication"./Release-iphoneos/${APP_NAME}.app"-o"${IPA_PATH}"if[ -f"$IPA_PATH"]thenecho"*************************************"echo"*            iPa 导出成功          *"echo"*            iPa 导出成功          *"echo"*            iPa 导出成功          *"echo"*            iPa 导出成功          *"echo"*************************************"echo"安装文件路径:${IPA_PATH}"#要上传到蒲公英的ipa文件路径echo"${IPA_PATH}">> text.txtelseecho"*************************************"echo"*            iPa 导出失败          *"echo"*            iPa 导出失败          *"echo"*            iPa 导出失败          *"echo"*            iPa 导出失败          *"echo"*************************************"echo"安装文件路径:${IPA_PATH}"fi

注意1:【-o ~/$IPANAME】表示导出的ipa文件在当前用户的目录下,即【/用户/共享/Jenkins/】下。

其中CODE_SIGN_IDENTITY="iPhone Distribution: xxxxxxxxxx"是你打包使用的证书在钥匙串中的常用名称。

导出的ipa,叫【HelloJenkins_V1.2_20160118.ipa】。

注意2:如果如上图【配置项目第二步.png】那样,在xcodeproj相同目录下,新建一个sh脚本文件,用【sh xxx.sh】命令的话,见下一篇介绍。

如果你的项目中用到了cocoapods,那脚本有几个参数需要调整一下,详情见下一篇。

注意3(2016.02.17更新):CODE_SIGN_IDENTITY 这个属性可以不设置,直接设置profile就可以了,编译时会自动去匹配对应的CODE_SIGN_IDENTITY,需要注意的是设置profile时,设置的是其UUID值。例如【PROVISIONING_PROFILE='f035763e-e847-4db8-ac10-0004809fdc90'】

点击保存,然后点击左侧菜单,立即构建,即可开始构建。

立即构建.png

构建成功.png

构建结果.png

4.2 使用svn地址构建

第一步,新建项目,与上面的一样。

第二步,不用将工程拷贝到jobs目录下了,直接在配置里源码管理那一栏设置svn地址

SVN配置.png

这里如果想要构建svn 上某个版本的工程,只需要再路径后面加上@版本号即可。

例如:http://192.168.1.1:8999/svn/iOS/TestDemo@150

第三步,设置shell 脚本,与上面的一样。

第四步,立即构建即可。

提示:构建成功后,还有一些选项可以设置,比如自动上传到蒲公英或者fir.im,或者邮件通知等。

还可以设置构建触发器,设置在某个时刻自动构建等条件。因为这些设置都挺简单的,而我们目前还未用到,大家自行研究一下吧。

作者:Jun Misugi

链接:https://www.jianshu.com/writer#/notebooks/23316838/notes/29973951

來源:简书

简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

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

推荐阅读更多精彩内容

  • 今天和一个小男生聊天,最后他让我想到一句话“欲戴王冠,必承其重。”事情很简单,小男生想在本职工作外开源。 刚开始他...
    一只小财喵阅读 322评论 2 6
  • 停机整顿已经五天了,今天终于可以休班了。 晚上,忙淘宝店铺,设计了一个logo。 电脑很卡,早晨用电脑管家杀毒了
    皮球上的大象阅读 210评论 0 0
  • 今天吃午饭和晚饭,呼唤贝贝多次不饭啦,都在那里心不在焉的!磨磨蹭蹭的,要么吃饭的时候,看东看西,吃饭的时间有点久,...
    健康守护贝妈阅读 77评论 0 0
  • 何鑫叫它"蒜花",挺有意思的。
    赵文茜阅读 563评论 0 0
  • 杨洋手里有两把钥匙。一把是父亲的,一把是儿子的。一把象征过去,一把向征未来。杨洋手握两把钥匙,仿若自己是一个承接。...
    时光恰巧阅读 587评论 0 4