Jenkins持續(xù)集成踩過的坑

Continuous Integration 持續(xù)集成(簡稱CI):一個可以自動構(gòu)建的過程,自動編譯代碼,可以自動分發(fā),部署和測試。

一、安裝

我們來開始安裝Jenkins。從官網(wǎng)https://jenkins.io/ 上下載最新的pkg安裝包。


也可以下載jenkins.war, 然后運行Java -jar jenkins.war,進(jìn)行安裝。

安裝完成之后,Safari可能會自動打開,如果沒有自動打開,打開瀏覽器,輸入http://localhost:8080


這個時候可能會報一個錯誤。如果出現(xiàn)了這面的問題。出現(xiàn)這個問題的原因就是Java環(huán)境有問題,重新Java環(huán)境即可。

這個時候如果你重啟電腦會發(fā)現(xiàn)Jenkins給你新增了一個用戶,名字就叫Jenkins,不過這個時候你不知道密碼。你可能會去試密碼,肯定是是不對的,因為初始密碼很復(fù)雜。這個時候正確做法是打開http://localhost:8080會出現(xiàn)下圖的重設(shè)初始密碼的界面。


按照提示,找到/Users/Shared/Jenkins/Home/ 這個目錄下,這個目錄雖然是共享目錄,但是有權(quán)限的,非Jenkins用戶/secrets/目錄是沒有讀寫權(quán)限的。



打開initialAdminPassword文件,復(fù)制出密碼,就可以填到網(wǎng)頁上去重置密碼了。如下圖


一路安裝過來,輸入用戶名,密碼,郵件這些,就算安裝完成了。

還是繼續(xù)登錄localhost:8080 ,選擇“系統(tǒng)管理”——“管理插件”,我們要先安裝一些輔助插件。

二、安裝插件




安裝完了這個,我們就可以配置一個構(gòu)建項目了。


點擊新建好的項目,進(jìn)來配置一下General參數(shù)。



點擊“增加構(gòu)建步驟->點擊“Xcode””,會新增以下界面


Target是構(gòu)建的目標(biāo)。如果留空,那么就會構(gòu)建所有的目標(biāo)。

Clean before build這個選項建議勾選,構(gòu)建之前最好Clean一下,至于為什么,我也不知道,我們開發(fā)之前打包的時候沒有Clean,有時候會出一些莫名其妙的bug。

Configuration此處填寫Release或者Debug,指的是IOS打包的類型,Debug版本還是Release版本。

Pack application and build .ipa需要打鉤,因為我們需要打包成ipa文件來安裝。

Export method 打包的環(huán)境

ipa filename pattern打包成ipa文件的名稱,就是最終的xxx.ipa。

Output directory 打包生成的IPA文件所在的位置

Xcode Workspace File是項目的地址,xxx.xcworkspace的地址。前面的地址是固定的/Users/Shared/Jenkins/Home/workspace/,后面根據(jù)具體項目修改


Build output directory是構(gòu)建后的輸出地址,我這里設(shè)置于ipa文件地址一致。直接寫這個就可以

注意:如果你的項目是使用.project。請使用Xcode Project File,留空Xcode Workspace File.


Keychain path是固定填寫${HOME}/Library/Keychains/login.keychain

Keychain password指的是你的授權(quán)密碼,不是證書密碼。

注意:${HOME}目錄指的是Jenkins的根目錄,也就是/Users/Shared/Jenkins,如果你的jenkins是新裝的,你會發(fā)現(xiàn)Library目錄中壓根就沒有Keychains目錄。你需要去/Users/管理員用戶名/Library目錄下把Keychains目錄復(fù)制過來。

如果提示Profile的錯誤:

我第一次導(dǎo)入證書和Provisioning Profiles文件,就遇到了一點小“坑”,我當(dāng)時以為是需要證書,但是這里需要的Keychain,并不是cer證書文件。這個Keychain其實在/Users/管理員用戶名/Library/keychains/login.keychain,當(dāng)把這個Keychain設(shè)置好了之后,Jenkins會把這個Keychain拷貝到/Users/Shared/Jenkins/Library/keychains這里,(Library是隱藏文件)。Provisioning Profiles文件也直接拷貝到/Users/Shared/Jenkins/Library/MobileDevice文件目錄下。


如果要上傳蒲公英,在shell里添加下面這句話

curl -F "file=@ipa所在路徑" -F "uKey=用戶User Key" -F "_api_key=用戶API Key" https://qiniu-storage.pgyer.com/apiv1/app/upload

uKey、_api_key為蒲公英的賬號信息


至此所有的信息配置完畢。

點擊“立即構(gòu)建”就可以上傳到蒲公英上。

需要注意的地方:

1.證書問題:

在執(zhí)行過程中需要將自己的開發(fā)證書先拷貝到系統(tǒng)證書中。這是因為鑰匙串中的證書擁有者是管理者,不是jenkins用戶,jenkins用戶是沒有權(quán)限操作證書的


2.pod: command not found

如果是用的cocoapods管理的話,需要添加環(huán)境變量,否則會提示pod: command not found


環(huán)境變量添加的方法

在終端輸入 echo $PATH

將PATH值全部復(fù)制,然后貼到 系統(tǒng)管理 -- 系統(tǒng)設(shè)置 --Environment variables -- 鍵:PATH 值:剛才PATH的值


3.GitLab ?ssh認(rèn)證



Private Key的生成可以參照GitLab的文檔

在終端執(zhí)行 ? cat ~/.ssh/id_rsa ?就可以生成Private Key

cat ~/.ssh/id_rsa.pub ? ?生成的是公鑰

4.WARNING: CocoaPods requires your terminal to be using UTF-8 encoding.


則需要在執(zhí)行shell的時候添加export LANG=en_US.UTF-8這句話。

5.Setting up CocoaPods master repo

Jenkins運行提示到這句話的時候,一直在轉(zhuǎn)圈圈,放心好了,最起碼到現(xiàn)在你的配置還是正確的,因為Jenkins在下載cocoapods的環(huán)境,大概1G多的東西,需要的時間可能有點長。

成功之后就是下面的提示

6.ProcessPCH xxx/PrefixHeader.pch normal armv7 objective-c com.apple.compilers.llvm.clang.1_0.compiler

這個問題好糾結(jié),百度了好久也沒發(fā)現(xiàn)是什么問題,最后問了同事說是引第三方頭文件的問題,我之前寫的時候#import "xxx.h",改成#import <xxx/xxx.h>就好了。

7.target 'NotificationService' do ?/platform :ios, "10.0"/pod 'GTExtensionSDK'/end

多個target,導(dǎo)入個推第三方庫的時候有問題,到現(xiàn)在還沒找到具體原因,用了一種最笨的辦法解決,就是把第三方庫直接拖到工程中使用,不用pod。

8.上傳到fir上面

一開始看到網(wǎng)上的結(jié)論,只要輸入一行代碼就能上傳到fir上面,我試了老半天都不行,說讓裝什么fir_cli,關(guān)鍵是裝不上,我沒試成功,最后在fir的官網(wǎng)上找到答案http://blog.fir.im/jenkins/ 在Jenkins上安裝一個插件就可以了。糾結(jié)了好多天總算解決了。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容