說明: iOS的持續(xù)集成一定要在Mac上進(jìn)行
Jenkins安裝
使用brew 進(jìn)行安裝 Homebrew
默認(rèn)已經(jīng)安裝好brew了,下面開始操作了
一.Jenkins命令行安裝
- 在終端輸入命令行
brew install Jenkins
, Jenkins 基于java環(huán)境,所以命令執(zhí)行后,可能會(huì)看到Jenkins: Java 1.7+ is required to install this formula. JavaRequirement unsatisfied! You can install with Homebrew-Cask: brew cask install java
- 然后根據(jù)提示 在終端中輸入
brew cask install java
,安裝過程需要輸入Mac登錄密碼 - 安裝java環(huán)境完成之后,提示
?? java was successfully installed!
- 安裝java成功之后,重新執(zhí)行
brew install Jenkins
, 即可.等待完成 - 結(jié)束以后,默認(rèn)端口8080,終端打印日志可以看到安裝成功
如果需要修改端口:
1. 到j(luò)ava安裝環(huán)境路徑下 cd /usr/local/Cellar/Jenkins/2.73/libexec
2. 指定端口啟動(dòng)jenkins java -jar ./Jenkins.war --httpPort=8889
安裝成功提示:
Jenkins安裝成功提示.jpeg
- 然后按照日志中的提示: 在終端直接執(zhí)行
Jenkins
,等待運(yùn)行完畢即可
二.Jenkins配置
- 打開網(wǎng)址 localhost:8080. 第一次打開,會(huì)進(jìn)入到初次登錄頁(yè)面 Jenkins初次登錄頁(yè)面.png
- 按照提示進(jìn)入到路徑文件夾下獲取密碼即可,也可以從剛剛終端輸出位置找到默認(rèn)密碼即可
/Users/用戶名/.Jenkins/secrets/initialAdminPassword
后續(xù)步驟如下
安裝過程保證網(wǎng)絡(luò)良好,如果卡著不動(dòng)了,參考下面一個(gè)朋友的解決辦法.
- 就在上圖所示的這一步下載的時(shí)候,基本上最后肯定有幾個(gè)插件沒有下載好,然后就停在這里不動(dòng)了,不管怎么都不動(dòng)累奈,然后關(guān)機(jī)重啟,重新進(jìn)入.wars所在的文件路徑,在終端執(zhí)行
java -jar Jenkins.war --httpPort=8888
命令才能在輸入http://localhost:8888
后能登錄Jenkins登錄界面持钉,才跳到下圖所示的管理員用戶注冊(cè)頁(yè)面
然后就是常規(guī)注冊(cè),不表!
三.Jenkins 插件安裝
-
登陸后 -> 系統(tǒng)管理 -> 管理插件 -> 可選插件, 搜索需要的插件,選中之后拖到底部,點(diǎn)擊安裝
Jenkins 管理頁(yè)面.png
Jenkins 管理插件.png
Jenkins 選擇插件.png安裝下列插件,拖到底部,安裝所選插件,(有時(shí)候會(huì)卡主,需要手動(dòng)刷新), 也可以選擇自動(dòng)一段時(shí)間后刷新頁(yè)面即可
GitLab plugin - Gitlab是一個(gè)用于代碼倉(cāng)庫(kù)管理的開源項(xiàng)目,用來在Jenkins上管理源代碼 - 當(dāng)git上的代碼被提交 / 創(chuàng)建一個(gè)合并請(qǐng)求 / 現(xiàn)有合并請(qǐng)求關(guān)閉/合并時(shí), - GitLab 會(huì)記錄構(gòu)建狀態(tài),然后觸發(fā)Jenkins,將Git上代碼獲取到Jenkins 上 Xcode integration - Xcode 編譯插件,相當(dāng)于將Xcode的編譯過程的命令行操作,通過界面化展示了出來,Jenkins 調(diào)用本地Xcode進(jìn)行編譯,相當(dāng)于講一個(gè)Xcode 裝在了Jenkins上 Credentials Plugin - 管理證書插件 Keychains and Provisioning Profiles Management - 鑰匙串開發(fā)者證書 及 項(xiàng)目描述文件
說明: 評(píng)論里有個(gè)哥們說:
最新的Jenkins直接會(huì)從資源庫(kù)的Provisioning Profiles讀取Profiles帅戒,模板的 Mobile Profiles 也不用勾選了,大家可以試一下
- 安裝完成后 -> 系統(tǒng)管理 -> Keychains and Provisioning Profiles Management (如果沒有的話,查看上一步,安裝Keychains and Provisioning Profiles Management插件)
這個(gè)地方需要注意,需要上傳兩個(gè)文件,一個(gè)是鑰匙串 keychains 文件(用于打開鑰匙串中的相應(yīng)的開發(fā)證書),一個(gè)是項(xiàng)目所需的描述文件(可以將生產(chǎn)描述文件 和 開發(fā)描述文件都傳上去)
上傳到Jenkins上的鑰匙串需要輸入密碼, 上傳的描述文件,需要指定一個(gè)存放路徑,路徑自己指定,Jenkins能找到就行
鑰匙串的開發(fā)證書名稱獲取:
鑰匙串 -> 找到對(duì)應(yīng)開發(fā)證書 -> 右鍵顯示簡(jiǎn)介 -> 細(xì)節(jié) -> 常用名稱就是我們需要的證書完整名稱了
,填入到上圖對(duì)應(yīng)位置即可
描述文件,就是我們從蘋果開發(fā)者網(wǎng)站下載的,UUID就是證書的標(biāo)識(shí),系統(tǒng)會(huì)自動(dòng)識(shí)別,不需要手動(dòng)輸入
設(shè)置完畢之后點(diǎn)擊保存即可,需要注意的是,兩個(gè)上傳操作最好分開進(jìn)行,因?yàn)樯蟼髁硪粋€(gè)時(shí),之前輸入的內(nèi)容可能會(huì)消失,這個(gè)地方需要注意下,好好檢查下,是否輸入完畢.
三.項(xiàng)目創(chuàng)建
- 點(diǎn)擊Jenkins主目錄下的新建按鈕,進(jìn)到新建項(xiàng)目頁(yè)面,輸入項(xiàng)目名稱,選擇構(gòu)建一個(gè)自由風(fēng)格的軟件項(xiàng)目
- 創(chuàng)建完畢之后,可以在Jenkins主界面,看到項(xiàng)目,點(diǎn)擊進(jìn)入項(xiàng)目,在左側(cè)選項(xiàng)欄中,選擇配置,進(jìn)入配置界面
- 在構(gòu)建步驟,需要添加腳本和xcode設(shè)置,后面會(huì)講
構(gòu)建新版本時(shí),之前的ipa如果想保留,可以設(shè)置ipa包名稱按照時(shí)間戳命名
Git設(shè)置,Credentials相當(dāng)于告訴GitLab插件,GitHub賬號(hào)和密碼,在自己的電腦上一般不用設(shè)置,需要設(shè)置的話,可以設(shè)置賬號(hào)和密碼,也可以上傳密鑰方式
當(dāng)前打包觸發(fā)方式,需要自己設(shè)置,我這里沒有設(shè)置,可以定時(shí),或者安裝githook插件
構(gòu)建環(huán)境中鑰匙串和描述文件,一般在第一次設(shè)置時(shí),會(huì)不顯示我們之前上傳的鑰匙串和描述文件內(nèi)容,保存退出,再次進(jìn)入一次就可以了
Git上只有podfile文件,沒有將pods文件上傳上去,所以要執(zhí)行一個(gè)腳本更新一下,pod:
添加構(gòu)建步驟 -> Execute shell
,需要放到最前,因?yàn)閜ods要在編譯前就添加
#!/bin/bash -l
export LANG=en_US.UTF-8
export LANGUAGE=en_US.UTF-8
export LC_ALL=en_US.UTF-8
echo ++++++++++++++++++++++++++++++++++
pod install --verbose --no-repo-update
echo ++++++++++++++++++++++++++++++++++
添加xcode運(yùn)行步驟,需要注意的是:如果項(xiàng)目使用pods需要設(shè)置scheme和xcworkspace 同名
在
Code signing & OS X keychain options
步驟,要輸入Development Team ID
這個(gè)就是開發(fā)證書編號(hào),就是我們?cè)诿枋鑫募丸€匙串上傳的那個(gè)開發(fā)證書最后幾位數(shù)字打包成功之后,將ipa上傳到蒲公英是一個(gè)不錯(cuò)的選擇,需要ukey和apikey,蒲公英
#蒲公英上的User Key
uKey="你的ukey,蒲公英獲取"
#蒲公英上的API Key
apiKey="蒲公英獲取"
#執(zhí)行上傳至蒲公英的命令
echo "++++++++++++++upload+++++++++++++"
curl -F "file=@/Users/用戶名/.jenkins/workspace/Jenkins_Demo/build/Jenkins_Demo.ipa" -F "uKey=${uKey}" -F "_api_key=${apiKey}" http://www.pgyer.com/apiv1/app/upload
echo http://www.pgyer.com
在本地項(xiàng)目提交到Git時(shí),項(xiàng)目中最好設(shè)置好項(xiàng)目配置,什么證書啊,描述文件啊,等等,因?yàn)镴enkins的打包代碼是你提交的代碼,我們應(yīng)該按照打包的設(shè)置設(shè)置好,然后提交.Jenkins相當(dāng)于一個(gè)運(yùn)行腳本和記錄的平臺(tái),打包環(huán)境的配置還是要自己來的
準(zhǔn)備工作完成以后,點(diǎn)擊保存,回調(diào)項(xiàng)目目錄,進(jìn)行構(gòu)建
這個(gè)可以通過通過終端,cd到項(xiàng)目路徑下, xcodebuild -list ,查看當(dāng)前項(xiàng)目是否有schemes(一個(gè)workspace可以包含多個(gè)project,一個(gè)project可以包含多個(gè)target膘魄,Scheme包含了所有的target集合,用于指定一個(gè)應(yīng)用),如果沒有的話,需要到
Product --> Scheme --> Manage Schemes
找到和項(xiàng)目同名的schemeshared打開,使得Jenkins也可以進(jìn)行調(diào)用編譯
三.運(yùn)行Jenkins項(xiàng)目
-
配置完成以后,回到項(xiàng)目頁(yè)面點(diǎn)擊立即構(gòu)建,構(gòu)建當(dāng)前項(xiàng)目.
Jenkins立即構(gòu)建.png 構(gòu)建過程
-
打包完成之后,將ipa包上傳到蒲公英上,蒲公英會(huì)給注冊(cè)手機(jī)發(fā)送短信,當(dāng)然你也可以在Jenkins中加入郵件通知,通過郵件獲取結(jié)果
Jenkins上傳到蒲公英.png 關(guān)于Linux下Jenkins管理iOS代碼的問題,可以參考這篇文章,當(dāng)然你也可以問我,后續(xù)有時(shí)間在寫吧,坑還是很多的
jenkins 更新描述文件
將 Xcoode signing 改成手動(dòng)模式 (debug 和 release)手動(dòng)選擇對(duì)應(yīng)的描述文件
從 Xcode 9 開始,打包需要一個(gè)plist文件,用來指定打包的類型和文件,如果修改了描述文件名稱和類型,也需要更改相應(yīng)的配置
如果還不行的話,將之前的該項(xiàng)目描述文件刪除,因?yàn)榇虬鼤r(shí),會(huì)自動(dòng)選擇一個(gè)默認(rèn)的描述文件進(jìn)行打包
寫在最后:
當(dāng)你看到 Finished : SUCCESS
的時(shí)候,表示你已經(jīng)成功了,在成功的路上,試驗(yàn)了很多次,記得看到一個(gè)簡(jiǎn)友說他試了40多次.從不知道Jenkins是啥,一步步的走來,一個(gè)個(gè)坑,一個(gè)個(gè)踩,成功了,卻覺得理所當(dāng)然.希望你可以成功.有問題和錯(cuò)誤歡迎留言!
參考文章,相信你看完一定會(huì)有收獲