前言 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)管理 -> 管理插件
右上角可以過濾
勾選捣卤,直接安裝忍抽,安裝完成后重啟
第四步 Create Item
點擊 新建 輸入名稱,選擇 構(gòu)建一個自由風(fēng)格的軟件項目
點擊OK
通用設(shè)置
源碼管理
因為公司還在用 SVN 董朝,所以這里選擇 Subversion ??
1鸠项、倉庫地址最好寫到 Xcode Project 文件這一級目錄
2、SVN賬號需要點擊Add
按鈕來添加
構(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 文件輸出路徑
Code signing & OS X keychain options
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
一定要填,要不然編譯就會報錯??
構(gòu)建后操作
在 增加構(gòu)建后操作步驟
選項中選擇 Execute a set of scripts
在 Build 完成后厚满,執(zhí)行腳本府瞄,將ipa文件上傳到蒲公英
請勾選Execute script only if build succeeds
腳本如下
#!/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 的時候只提交了Podfile
和Podifle.lock
兩個文件;Jenkins 管理源碼是找倉庫同步四濒,直接從倉庫Check Out
或Clone
下來的代碼如果沒有pod install
是沒有.xcworkspace
文件的换况,在這種情況下Build肯定會報錯的。
所以盗蟆,第一次或每次更新Podfile
文件之后都需要手動pod install
2戈二、${WORKSPACE}
在這里/Users/You Name/.jenkins/workspace