iOS持续集成:jenkins+gitlab+蒲公英+邮件通知(Part 2)

iOS持续集成:jenkins+gitlab+蒲公英+邮件通知(Part 2)

Jenkins 系统设置 前期准备

Jenkins 插件安装

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

  • 安装Xcode插件
    同安装GitLab插件步骤一样,我们一次选择 系统管理 -> 管理插件 在"可选插件"中选择Xcode integration这两项,然后安装

  • 安装签名证书管理插件
    iOS打包内测版时,需要发布证书及相关签名文件,因此这两个插件对于管理iOS证书非常方便。还是在系统管理->管理插件,在“可选插件”中选中“Credentials Plugin”和“Keychains and Provisioning Profiles Management”安装。

  • 安装FTP插件
    此插件可用于上传FTP服务器,也可以上传到公司内网的FTP服务器中。"Publish over FTP"

  • 安装脚本插件
    这个插件主要用于build后执行先关脚本."Publish over FTP"

jenkins 系统配置

jenkins 安全设置:注册,登录

进入 系统管理->Configure Global Security 首次设置如图所示:

首次设置

首次设置完点击保存,然后点击注册->登录账号,在进入该界面进行账号权限设置,如图

权限设置

jenkins 系统设置

进入 系统管理->系统设置 界面:

  • 首先设置一下 jenkins 内部shell 执行编码,目的当在jenkins执行shell命令时,有时候会报 utf-8 编码错误。主要是pod install的时候报错。

    �[33mWARNING: CocoaPods requires your terminal to be using UTF-8 encoding.
    

    设置如下:

    编码设置
  • jenkins Location 设置
    主要设置 jenkins 外部访问的URL 和 系统管理员的邮箱地址。用来发送 错误报告的邮箱地址:如图

    url设置
  • 系统错误报告的邮箱设置,上面只设置了邮箱发送的地址(From地址),下面设置,邮箱的服务器,协议,邮箱,密码。如图

    email设置

Jenkins 任务(Jobs)搭建

新建任务 job

在Jenkins中,所有的任务都是以“item”为单位的。接下来我们就新建一个iOS的项目来开始自动化构建。点击“新建”,输入item的名称,选择“构建一个自由风格的软件项目”,然后点击“OK”。如图:

新建Job设置

设置构建信息

构建信息设置

源码管理

这里用到的是GitLab,先需要配置SSH,我们可以在Jenkins的证书管理中添加SSH。在Jenkins管理页面,选择“Credentials”,然后选择“Global credentials (unrestricted)”,点击“Add Credentials”,如下图所示,我们填写自己的SSH信息,然后点击“Save”,这样就把SSH添加到Jenkins的全局域中去了。
这边需要注意的是如何获取SSH key:这个问题需要参考 gitLab 上配置SSH 的方法。

  1. 查看是否已经有了ssh密钥:cd ~/.ssh,如果没有密钥则不会有此文件夹,有则备份删除
  2. 生成密钥:$ ssh-keygen -t rsa -C “haiyan.xu.vip@gmail.com” 生成过程中必须设置秘钥密码 否则jenkins 设置会不成功。最后得到两个文件:id_rsa和id_rsa.pub
  3. 添加密钥到SSH :ssh-add 文件名 需要输入管理密码
  4. 在gitlab 上添加 ssh 密钥,这里添加的是 "id_rsa.pub"里面的公钥。
  5. 在jenkins上配置密钥到SSH ,这里添加的是id_rsa里面的私钥。具体设置如图所示:

接下来,我们再回到刚刚新建的任务中,在源码管理中,选择Git,按下图填好相关信息。PS:Credentials不需要选择。如图

构建触发器设置

该设置主要是为了实现自动触发 jenkins 构建过程 真正实现自动化设置:
这边主要处理的是 gitlab hook 的设置。主要目的是当项目中有人git push 提交过代码之后,就会自动的触发 jenkins 的本Job的构建,实现自动化打包。

  1. 首选需要在gitlab 项目管理官网上设置 添加git hook 的地址:如图:该地址是jenkins 上 提示的地址 下面会提到
  1. jenkins 上对 gitlab hook 进行相关配置 如图所示:

构建环境

在该模块中 主要设置 xcode build 打包时需要的 keychains 和 Provision Profiles 配置文件。
如果不配置 就会使用 xcode 自动的配置,来去系统中查找相应的配置,不过有一点需要注意,就是钥匙串中,登陆钥匙串中的证书 要复制到 系统钥匙串中,因为jenkins 访问的是系统中的钥匙串 这样在第一次打包的时候,会提示 是否授权访问钥匙串,点击始终允许就可以了。
注意:在电脑上安装好 xcode 配置相关的证书和配置文件,配置文件也要安装到系统目录下。
具体操作如下:从该用户目录下的所有描述文件

/Users/用户名/Library/MobileDevice/Provisioning Profiles

复制到系统目录下

/Library/MobileDevice/Provisioning Profiles

构建

该模块开始设置 iOS打包相关的配置。

  1. 点击增加构建步骤-> Execute Shell .首先 在build 之前需要先 pod install ,并且最理想的情况是每次构建的时候 build号都改变。如图所示
    需要注意的是,使用全局变量时 必须找到绝对路径才能调用相关的命令:版本号增加参考链接

  2. 点击增加构建步骤 xcode ,具体配置如图:
    该配置中需要注意 在OS X 10.10.XX版本 jenkins xcode 插件不支持 生成ipa文件,但 OS X 10.11 支持 这个时候 需要手动进行打包,具体的就是在build 完成之后 添加EXecute Shell ,利用shell脚本打包:代码如下:

    xcrun -sdk iphones PackageApplication -v [工程目录] -o [ipa输出目录]/xx.ipa
    
  ![](http://upload-images.jianshu.io/upload_images/670028-1ce567c59942f808.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
  1. Code signing & OS X keychain options 配置:如图

  2. Advanced Xcode build options 配置:如图

构建后操作

打包完成之后 需要执行 上传到蒲公英 和 发送邮件 通知开发人员。
具体操作我用python写的脚本来完成此功能:需要的童鞋可以去github上下载:在文章最后!!
具体调用如图:

最后设置 通知邮件 E-mail Notification 填写接受邮箱即可 每次构建失败都会发生邮件通知!!!

python 脚本地址!!! 不要吝啬 star!!!不胜感激!!!

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

推荐阅读更多精彩内容