IOS 自动化部署 - 最新Jenkins + git +cocoapods + fir

前言


由于工作原因,近期项目需要集成Jenkins 。因此参考了网上很多的资料,但是发现网上的资料都不是很全面,都有或多或少的坑,所以在此我根据我自己个人配置的经验总结一下Jenkins具体的安装及使用(如果有什么错误的地方请留言指正,谢谢。)。

本文内容部分摘自://www.greatytc.com/p/7a2efc7c69fe          http://www.cocoachina.com/ios/20160804/17281.html。


Jenkins的主要作用及特点:

作用:

1.      持续、自动地构建/测试软件项目。

2.      监控一些定时执行的任务。

特点:

1.      易于安装-只要把jenkins.war部署到servlet容器,不需要数据库支持。

2.      易于配置-所有配置都是通过其提供的web界面实现。   集成RSS/E-mail通过RSS发布构建结果或当构建完成时通过e-mail通知。

3.      生成JUnit/TestNG测试报告。

4.      分布式构建支持Jenkins能够让多台计算机一起构建/测试。

5.      文件识别:Jenkins能够跟踪哪次构建生成哪些jar,哪次构建使用哪个版本的jar等。

6.      插件支持:支持扩展插件,你可以开发适合自己团队使用的工具。


配置Jenkins  大概需要以下几步

1.搭建Jenkins环境

2.安装插件 、 配置证书和描述文件、钥匙串

3.配置项目

4.配置xcode 环境

5.构建后操作


1. 搭建Jenkins 环境


从官网https://jenkins.io/上下载最新的pkg安装包,选择 MAC OS。


安装完成之后,Safari可能会自动打开,如果没有自动打开,打开浏览器,输入http://localhost:8080 (这个时候可能会打不开网页  请关闭防火墙开放8080端口)

这个时候如果你重启电脑会发现Jenkins给你新增了一个用户,名字就叫Jenkins,不过这个时候你不知道密码。你可能会去试密码,肯定是是不对的,因为初始密码很复杂。这个时候正确做法是打开http://localhost:8080 会出现下图的重设初始密码的界面。


按照提示,找到/Users/Shared/Jenkins/Home/ 这个目录下,这个目录虽然是共享目录,但是有权限的,非Jenkins用户/secrets/目录是没有读写权限的。

打开initialAdminPassword文件,复制出密码,就可以填到网页上去重置密码了。如下图




到这一步 Jenkins 已经安装完成了。


2. 安装插件 、 配置证书和描述文件、钥匙串

这时需要安装配置一下插件,系统管理->管理插件->可选插件


安装GitLab插件

因为我们用的是GitLab来管理源代码,Jenkins本身并没有自带GitLab插件,所以我们需要依次选择 系统管理->管理插件,在“可选插件”中选中“GitLab Plugin”和“Gitlab Hook Plugin”这两项,然后安装。

安装Xcode插件

同安装GitLab插件的步骤一样,我们依次选择系统管理->管理插件,在“可选插件”中选中“Xcode integration”安装。

安装Keychains and Provisioning Profiles Management 插件

因为我们打包需要证书和描述文件,所以需要安装Keychains and Provisioning Profiles Management插件 依然选择系统管理->管理插件,在“可选插件”中选中“Keychains and Provisioning Profiles Management”安装。

安装完成后我们重启下jenkins,重新加载下插件。可以滑到最底下勾选重启,或者也可以在地址栏输入http://localhost:8080/restart

重启之后应该要输入用户名和密码,把刚刚注册的用户名密码输入进去。还有一个重要的步骤,我们先给Jenkins用户管理员的权限,避免后续的访问问题。系统偏好设置->用户与群组->点开锁,然后在Jenkins用户下勾选“允许用户管理这台电脑”。到这步最好给Jenkins用户设置一个密码,便于后期检查是否Jenkins配置错误或者是检查代码错误。


接下来我们配置证书、描述文件、钥匙串

点击系统管理->keychain and provision Profiles Management



这里需要注意的是 :上传的不是证书,需要的是描述文件和login.keychain  

之前说过,系统自动生成了一个Jenkins用户  这个Jenkins 用于存储一些配置文件和信息等。我们可以在finder里面找到Jenkins用户的文件夹


下面

 1.Finder->前往文件夹->/Users/“你的mac用户名”/library

2.找到keychains 这个文件夹,拷贝

3.用上面那种方法放到Jenkins->Library文件夹下

为了避免描述文件也出现类似的找不到的错误,我们也把描述文件拷贝到Jenkins用户->Library。

1.Finder->前往文件夹->/Users/“你的mac用户名”/library(或者还有一个方法,打开xcode->preferences->找到你账号下的描述文件)

2.找到keychains 这个文件夹,拷贝"MobileDevice"整个文件夹

3.用上面那种方法放到Jenkins->Library文件夹下。


接下来就是上传keychain和描述文件了。

这里我们选刚刚拷贝过去的Jenkins文件目录下的keychain和描述文件。点击选取文件->搜索login.keychain,这里要注意下是否为Jenkins目录下的keychain。


上传完之后打开钥匙串,找到需要上传证书的名字 然后复制下来 


然后点击 Add Code Signing Identity,分别把这名字粘贴过去。完成了之后大概如下:

接下来就是描述文件了。这里要注意一点,在Provisioning Profiles填上/Users/Shared/Jenkins/Library/MobileDevice/Provisioning Profiles这个地址。然后按照上传keychain的步骤,把Jenkins用户目录下的描述文件上传上去就行啦 

下图就是传完大概的样子

3. 配置项目

keychain配置好之后,接下来就是新建一个工程了。输入你的项目名称(项目名称会在Jenkins下生成一个文件夹)。构建一个自由风格的软件项目,点击ok

1.General

新建完之后点选丢弃旧的构建,配置一下保持构建的天数和最大个数


2.源码管理

然后配置源码管理,这是Jenkins拉取代码的地址(尽量精确到项目位置),如果Credentials没有,则点击右边的add


Repository URL 可以使用 HTTP 或 SSH 两种形式的,这里需要注意,如果是采用 HTTP 形式的话,后面配置 Credentials 需要选择 Username with password 项,输入登录用户名和密码:


如果是采用 SSH 形式的话(不要ssh://前缀),后面配置 Credentials 需要选择 SSH Username with private key 项,输入用户名(随便输入)和与Git上公钥对应的私钥:

/Users/{username}/.ssh/id_rsa

如果红色报错的话,请核对Git地址和私钥或用户密码对应。

Branch Specifier (blank for 'any'):默认是master,你可以根据实际情况进行编辑。


3.构建触发器

可以选择某种情况下触发项目构建,也可以不选。

4.构建环境

接下来配置构建环境,这里我们勾选Keychains and Code Signing Identities,选择login.keychain,然后选择对应的证书名字。同样勾选Mobile Provisioning Profiles,选择对应的描述文件。


5.构建


这里需要注意,如果你的项目是使用了cocoapods管理第三方库的话,这里需要增加一个脚本执行的步骤:Execute shell -> Xcode(即下一步骤) ,顺序不能错。这是因为,新版本的Xcode不能直接构建.xcworksapce项目,需要使用脚本。(PS:如果不是cocoapods管理的可以直接跳过这步)


#bin/bsah - l

export LANG=en_US.UTF-8

export LANGUAGE=en_US.UTF-8

export LC_ALL=en_US.UTF-8

cd $WORKSPACE/你的项目名称

/usr/local/bin/pod update --verbose --no-repo-update

注意:没有#bin/bsah - l

export LANG=en_US.UTF-8

export LANGUAGE=en_US.UTF-8

export LC_ALL=en_US.UTF-8   /usr/local/bin/  这几句可能会造成编译器读不懂pod语句。当你构建的时候提示pod语句出错,百分之九十都是这个错误。

坑提示:如果报错 如下图


mac注销当前用户,进入Jenkins用户,看是否安装了cocoapods,如果没有安装,需要安装一下,并且版本要与当前用户一致(Jenkins用户的密码可以在系统偏好设置->用户与群组设置。)




接下来构建Xcode


首先配置General,这里又有一个坑!!!!输出路径必须是workspace路径下的,然后会报权限不够等之类的问题


之后是Code signing & OS X keychain options


接下来是配置 Advanced Xcode build options。

tips:jenkins会在它的目录Home->workspace下建一个文件夹,这个文件夹名字就是你的项目名字(比如你的项目名字叫JenkinsProj,那么会存在Jenkins->Home->workspace->JenkinsProj这个文件夹)。${WORKSPACE}一般都会到Jenkins创建的文件夹下。

Build output diretory 还是老实点写在workspace下比较好,因为Jenkins创建的目录我觉得足够清晰了。之前我写在另一个用户下就会报权限问题。


注意:这个选项使用目录系统已经定位到 Jenkins目录下 。

一般这样配置完就可以成功打包了。


5.构建后操作  

文档  blog.fir.im/jenkins/    详细讲解了 如何打包生成二维码

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

推荐阅读更多精彩内容