CI持續(xù)集成環(huán)境搭建-iOS篇

前言 Continuous integration

持續(xù)集成(Continuous integration)是一種軟件開發(fā)實踐巡蘸,即團(tuán)隊開發(fā)成員經(jīng)常集成它們的工作纷跛,通過每個成員每天至少集成一次俘闯,也就意味著每天可能會發(fā)生多次集成赦拘。每次集成都通過自動化的構(gòu)建(包括編譯甸各,發(fā)布 垛贤,自動化測試)來驗證,從而盡早地發(fā)現(xiàn)集成錯誤趣倾。 - 摘自百度

這一篇我們先來搭建 iOS 下的可持續(xù)集成環(huán)境聘惦,我這里的方案是Jenkins+Subversion+Xcode+蒲公英

先把環(huán)境交代一下:
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+ 的版本善绎,安裝時如果出現(xiàn)下面的問題,請更新 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.

網(wǎng)上找的資料說安裝完成后瀏覽器會自動打開 Jenkins 的主頁 http://localhost:8080/
但我安裝完成后并沒有诫尽,不過沒關(guān)系禀酱,可以手動打開瀏覽器,訪問??的地址牧嫉。

如果能訪問剂跟,恭喜你 Jenkins 安裝完成了减途,可以進(jìn)入下一步了。

如果不能訪問曹洽,沒關(guān)系鳍置,在終端中輸入:

$ jenkins

就能啟動 Jenkins 服務(wù)了

注意:
1、執(zhí)行 jenkins 命令的終端窗口不能關(guān)閉送淆,如果關(guān)閉服務(wù)也會隨之關(guān)閉
2税产、如果遇到端口沖突,請修改 Jenkins 默認(rèn)端口偷崩,修改前請停掉 jenkins 服務(wù)

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

第二步 Unlock Jenkins

打開 localhost 頁面之后辟拷,首先需要解鎖才能進(jìn)到下一步,解鎖需要一個密碼环凿,密碼存在一個文件中梧兼,這個文件的地址在打開的頁面上已經(jīng)顯示并且標(biāo)紅了。(忘了截圖智听,地址是在網(wǎng)上找的羽杰,具體請參考 localhost 頁面標(biāo)紅的路徑?? )

$ 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完成后執(zhí)行腳本用

插件安裝方法:系統(tǒng)管理 -> 管理插件

管理插件.png

右上角可以過濾

安裝插件.png

勾選捣卤,直接安裝忍抽,安裝完成后重啟

第四步 Create Item

點擊 新建 輸入名稱,選擇 構(gòu)建一個自由風(fēng)格的軟件項目 點擊OK

新建.png
通用設(shè)置
通用設(shè)置.png
源碼管理

因為公司還在用 SVN 董朝,所以這里選擇 Subversion ??
1鸠项、倉庫地址最好寫到 Xcode Project 文件這一級目錄
2、SVN賬號需要點擊 Add 按鈕來添加

源碼管理.png
SVN賬號密碼.png
構(gòu)建觸發(fā)器

暫時沒有用到

構(gòu)建環(huán)境

暫時沒有用到

構(gòu)建

增加構(gòu)建步驟 選項中選擇 Xcode

General build settings

1子姜、Target 需要 Build 的 Target 祟绊,與 Xcode 中的一致
2、Clean before build? Yes 編譯前先 Clean 一下
3哥捕、Configuration 構(gòu)建一個 Release 版本
4牧抽、Pack application and build .ipa? 打包構(gòu)建 ipa 文件
5、.ipa filename pattern ipa 文件名的規(guī)則遥赚,我這里用的是編譯的 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
構(gòu)建后操作

增加構(gòu)建后操作步驟 選項中選擇 Execute a set of scripts

在 Build 完成后厚满,執(zhí)行腳本府瞄,將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"

#執(zhí)行上傳至蒲公英的命令
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 是對應(yīng)的

最后點擊 Apply 保存

左邊菜單欄有個 立即構(gòu)建

點擊就開始自動編譯、打包碘箍、上傳了遵馆,如果 Build Success 的話

如果 Build 失敗,請查看 Console Output 輸出的日志信息

溫馨提示:
1丰榴、現(xiàn)在大多數(shù)項目都使用了 Cocoapods 货邓,并且在提交到 Git 或者 SVN 的時候只提交了 PodfilePodifle.lock 兩個文件;Jenkins 管理源碼是找倉庫同步四濒,直接從倉庫 Check OutClone 下來的代碼如果沒有pod install 是沒有 .xcworkspace 文件的换况,在這種情況下Build肯定會報錯的。
所以盗蟆,第一次或每次更新 Podfile 文件之后都需要手動 pod install
2戈二、${WORKSPACE} 在這里 /Users/You Name/.jenkins/workspace

下一篇 CI持續(xù)集成環(huán)境搭建-Java篇

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市喳资,隨后出現(xiàn)的幾起案子觉吭,更是在濱河造成了極大的恐慌,老刑警劉巖仆邓,帶你破解...
    沈念sama閱讀 207,248評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件鲜滩,死亡現(xiàn)場離奇詭異,居然都是意外死亡节值,警方通過查閱死者的電腦和手機徙硅,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,681評論 2 381
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來察署,“玉大人闷游,你說我怎么就攤上這事√簦” “怎么了脐往?”我有些...
    開封第一講書人閱讀 153,443評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長扳埂。 經(jīng)常有香客問我业簿,道長,這世上最難降的妖魔是什么阳懂? 我笑而不...
    開封第一講書人閱讀 55,475評論 1 279
  • 正文 為了忘掉前任梅尤,我火速辦了婚禮柜思,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘巷燥。我一直安慰自己赡盘,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 64,458評論 5 374
  • 文/花漫 我一把揭開白布缰揪。 她就那樣靜靜地躺著陨享,像睡著了一般。 火紅的嫁衣襯著肌膚如雪钝腺。 梳的紋絲不亂的頭發(fā)上抛姑,一...
    開封第一講書人閱讀 49,185評論 1 284
  • 那天,我揣著相機與錄音艳狐,去河邊找鬼定硝。 笑死,一個胖子當(dāng)著我的面吹牛毫目,可吹牛的內(nèi)容都是我干的蔬啡。 我是一名探鬼主播,決...
    沈念sama閱讀 38,451評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼镀虐,長吁一口氣:“原來是場噩夢啊……” “哼星爪!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起粉私,我...
    開封第一講書人閱讀 37,112評論 0 261
  • 序言:老撾萬榮一對情侶失蹤顽腾,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后诺核,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體抄肖,經(jīng)...
    沈念sama閱讀 43,609評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,083評論 2 325
  • 正文 我和宋清朗相戀三年窖杀,在試婚紗的時候發(fā)現(xiàn)自己被綠了漓摩。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,163評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡入客,死狀恐怖管毙,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情桌硫,我是刑警寧澤夭咬,帶...
    沈念sama閱讀 33,803評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站铆隘,受9級特大地震影響卓舵,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜膀钠,卻給世界環(huán)境...
    茶點故事閱讀 39,357評論 3 307
  • 文/蒙蒙 一掏湾、第九天 我趴在偏房一處隱蔽的房頂上張望裹虫。 院中可真熱鬧,春花似錦融击、人聲如沸筑公。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,357評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽十酣。三九已至,卻和暖如春际长,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背兴泥。 一陣腳步聲響...
    開封第一講書人閱讀 31,590評論 1 261
  • 我被黑心中介騙來泰國打工工育, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人搓彻。 一個月前我還...
    沈念sama閱讀 45,636評論 2 355
  • 正文 我出身青樓如绸,卻偏偏與公主長得像,于是被迫代替她去往敵國和親旭贬。 傳聞我的和親對象是個殘疾皇子怔接,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,925評論 2 344

推薦閱讀更多精彩內(nèi)容