CI持续集成环境搭建-iOS篇

前言 Continuous integration

持续集成(Continuous integration)是一种软件开发实践,即团队开发成员经常集成它们的工作,通过每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布 ,自动化测试)来验证,从而尽早地发现集成错误。 - 摘自百度

这一篇我们先来搭建 iOS 下的可持续集成环境,我这里的方案是Jenkins+Subversion+Xcode+蒲公英

先把环境交代一下:
macOS Sierra 10.12.1
Xcode 8.1
版本控制:SVN
Jenkins ver. 2.34

第一步 Installing Jenkins

我这里是通过 brew 来安装的,使用 brew 需要安装 homebrew ,已安装的跳过这步

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

然后

$ brew install jenkins

Jenkins 需要 Java 1.6+ 的版本,安装时如果出现下面的问题,请更新 Java 版本

jenkins: Java 1.6+ is required to install this formula.
You can install with Homebrew Cask: 
  brew install Caskroom/cask/java

You can download from: 
  http://www.oracle.com/technetwork/java/javase/downloads/index.html
Error: An unsatisfied requirement failed this build.

网上找的资料说安装完成后浏览器会自动打开 Jenkins 的主页 http://localhost:8080/
但我安装完成后并没有,不过没关系,可以手动打开浏览器,访问👆的地址。

如果能访问,恭喜你 Jenkins 安装完成了,可以进入下一步了。

如果不能访问,没关系,在终端中输入:

$ jenkins

就能启动 Jenkins 服务了

注意:
1、执行 jenkins 命令的终端窗口不能关闭,如果关闭服务也会随之关闭
2、如果遇到端口冲突,请修改 Jenkins 默认端口,修改前请停掉 jenkins 服务

$ sudo defaults write /Library/Preferences/org.jenkins-ci httpPort xxxx

第二步 Unlock Jenkins

打开 localhost 页面之后,首先需要解锁才能进到下一步,解锁需要一个密码,密码存在一个文件中,这个文件的地址在打开的页面上已经显示并且标红了。(忘了截图,地址是在网上找的,具体请参考 localhost 页面标红的路径😂 )

$ vim /Users/Shared/Jenkins/Home/secrets/initialAdminPassword

把里面的字符串拷出来,粘贴到页面点击 Continue

然后点击 Install suggested plugins 安装推荐的插件

等待安装插件 ☕️

安装完成后,Jenkins 会重启一次

然后需要 Create First Admin User 输入用户名、密码、邮箱... 点击 Save and Finish

欢迎使用Jenkins!

第三步 Installing Plugin

需要自己安装的插件:

1、Xcode integration iOS项目配置专用
2、Post-Build Script Plug-in Build完成后执行脚本用

插件安装方法:系统管理 -> 管理插件

管理插件.png

右上角可以过滤

安装插件.png

勾选,直接安装,安装完成后重启

第四步 Create Item

点击 新建 输入名称,选择 构建一个自由风格的软件项目 点击OK

新建.png
通用设置
通用设置.png
源码管理

因为公司还在用 SVN ,所以这里选择 Subversion 🙄
1、仓库地址最好写到 Xcode Project 文件这一级目录
2、SVN账号需要点击 Add 按钮来添加

源码管理.png
SVN账号密码.png
构建触发器

暂时没有用到

构建环境

暂时没有用到

构建

增加构建步骤 选项中选择 Xcode

General build settings

1、Target 需要 Build 的 Target ,与 Xcode 中的一致
2、Clean before build? Yes 编译前先 Clean 一下
3、Configuration 构建一个 Release 版本
4、Pack application and build .ipa? 打包构建 ipa 文件
5、.ipa filename pattern ipa 文件名的规则,我这里用的是编译的 TAG 号,也可以用编译时间和版本号${VERSION} And ${BUILD_DATE}
6、Output directory ipa 文件输出路径

General build settings.png
Code signing & OS X keychain options
Code signing & OS X keychain options.png
Advanced Xcode build options

1、Xcode Schema File 一般填工程名,或者 Schema 分支名字
2、Xcode Workspace File Xcode Workspace文件名,不需要 .xcworkspace 后缀
3、Build output directory Build 输出路径

注意:
如果项目使用了 Cocoapods 那么 Advanced Xcode build options 配置项中的 Xcode Workspace File 一定要填,要不然编译就会报错😳

Advanced Xcode build options.png
构建后操作

增加构建后操作步骤 选项中选择 Execute a set of scripts

在 Build 完成后,执行脚本,将ipa文件上传到蒲公英
请勾选 Execute script only if build succeeds

Execute a set of scripts.png

脚本如下

#!/bin/bash

#蒲公英上的User Key
uKey="********************"
#蒲公英上的API Key
apiKey="********************"
#要上传的ipa文件路径
IPA_PATH="${WORKSPACE}/build/${BUILD_TAG}.ipa"

#执行上传至蒲公英的命令
echo "++++++++ upload ipa file to pgyer +++++++"
curl -F "file=@${IPA_PATH}" -F "uKey=${uKey}" -F "_api_key=${apiKey}" http://www.pgyer.com/apiv1/app/upload

脚本中的的 ${BUILD_TAG} 和前面 General build settings 配置中的 .ipa filename pattern 是对应的

最后点击 Apply 保存

左边菜单栏有个 立即构建

点击就开始自动编译、打包、上传了,如果 Build Success 的话

如果 Build 失败,请查看 Console Output 输出的日志信息

温馨提示:
1、现在大多数项目都使用了 Cocoapods ,并且在提交到 Git 或者 SVN 的时候只提交了 PodfilePodifle.lock 两个文件;Jenkins 管理源码是找仓库同步,直接从仓库 Check OutClone 下来的代码如果没有pod install 是没有 .xcworkspace 文件的,在这种情况下Build肯定会报错的。
所以,第一次或每次更新 Podfile 文件之后都需要手动 pod install
2、${WORKSPACE} 在这里 /Users/You Name/.jenkins/workspace

下一篇 CI持续集成环境搭建-Java篇

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

推荐阅读更多精彩内容