Jenkins在Mac上的安裝與使用

一、Jenkins的作用

我要這Jenkins有何用?結合使用經驗,簡單總結如下:

1.一旦在Jenkins服務器上把項目配置好,就可持續集成(CI),分分鐘打包,讓開發者從繁瑣的集成中解脫出來,專注于更為重要的業務邏輯上。

比如測試人員找開發者打包,而開發者正在修改項目代碼,一般使用Xcode等工具打包,要先注釋掉正在修改中的代碼,避免未經驗證的代碼產生bug,打包之后再把注釋掉的代碼恢復。這非常影響開發者的邏輯思路,若正在修改的代碼量很多就悲催了。但使用Jenkins,會直接拷貝SVN(或其它源代碼倉庫)上檢入的最新代碼到工作空間進行打包,和開發者計算機本地的代碼互不影響,也不用擔心打包之前忘記更新代碼。開發者只需連接SVN內網后,在Jenkins頁面上點擊打包按鈕,即可一鍵完成打包任務。

2.Jenkins構建可記錄SVN的提交版本號,能監控每次打包對應的代碼更新內容,從而有效的定位不同版本的包產生的問題所在位置。
3.Jenkins的多樣化特性,使它能人性化地服務于開發團隊:

??易于安裝,無需數據庫支持,界面化配置操作簡單方便;
??可預設集成時間,支持自動化構建,如每晚九點自動打包;
??構建完成后,支持聲音提醒及Email通知打包結果;
??提供詳細的日志,能實時監控集成中存在的錯誤;
??支持分布式構建,可讓多臺計算機一起打包測試;
??提供大量開源插件,并支持擴展插件,可開發適合自己團隊使用的工具;

二、Jenkins的安裝

在Mac終端輸入命令行:java -version,查看java運行環境
若沒有安裝java,則先下載并安裝java環境。(下載地址點我

安裝后查看到版本如下:

然后下載jenkins 的pkg安裝文件(下載地址點我),雙擊打開一步步安裝完成后,會自動使用默認瀏覽器打開http://localhost:8080/ 的網址,且共享目錄下多出一個Jenkins用戶。

在本地文件夾前往/Users/Shared/Jenkins/Home/secrets/initialAdminPassword路徑,需要更改secrets文件夾的everyone的權限后,打開initialAdminPassword文件,復制出密碼,粘貼到網頁的輸入框中。

下面安裝Jenkins的插件:

創建管理員用戶和密碼,點擊下一步:

Jenkins安裝完畢,點擊start using jenkins 按鈕,即可進入Jenkins管理頁面!

三、配置iOS項目

Jenkins創建iOS項目,有兩種配置方法,一種是用shell腳本配置,另一種是用Xcode插件配置,個人推薦使用腳本配置項目,成功率高,可控性強!

(1)Shell腳本配置方法

點擊"新建",輸入item的名稱,選擇"構建一個自由風格的軟件項目",點擊"OK"。

下面依次配置模塊:General->源碼管理->構建觸發器->構建環境->構建->構建后操作。
General模塊主要填寫三個地方:項目名稱及描述、丟棄舊的構建、參數化構建過程

源碼管理模塊,我這里配置的是SVN的地址及賬號:

構建觸發器模塊,可根據需要選擇性勾選Build periodically選項,即按照預先設定的時間自動化構建。日程表的填寫內容有5個參數,從左到右的參數含義如下:
??第1個參數:分鐘 minute,取值 0~59;
??第2個參數:小時 hour,取值 0~23;
??第3個參數:天 day,取值 1~31;
??第4個參數:月 month,取值 1~12;
??第5個參數:星期 week,取值 0~7,0 和 7 都是表示星期天;
5個參數可選擇性設定,不寫死的參數用 * 號代替,參數之間用空格隔開。例如"0 21 * * *"表示每晚21點0分自動化構建一次,"0 * * * *"表示每個小時的第0分鐘執行一次構建等。

構建環境模塊需要安裝一個NodeJS插件,此時先點擊保存按鈕保存配置好的參數,然后點擊左上角的Jenkins,找到系統管理,點擊管理插件,點擊可選插件,在過濾條中輸入"NodeJS",查找到NodeJS Plugin插件,直接安裝此插件。

安裝完成后回到系統管理,點擊Global Tool Configuration工具,找到NodeJS選項配置插件,自定義別名,安裝目錄填寫“/usr/local”,點擊左下角保存按鈕。

這里在系統管理->系統設置中,點擊頂部主目錄旁邊的"高級"按鈕,可順便配置工作空間根目錄和構建記錄根目錄。

回到項目的配置頁面,發現構建環境模塊里多出了“Provide Node & npm bin/ folder to PATH”選項,勾選它并選中剛剛配置的NodeJS插件別名。

構建模塊,點擊增加構建步驟里的Execute shell,編輯shell腳本,配置打包過程。

以下是我配置的具體腳本內容,其中工程目錄可根據需要自定義,帶有 * 號的item名稱和證書信息部分要換成與自己工程相對應的內容:

# !/bin/bash -ex
# export LANG=en_US.UTF-8
# 工作空間位置
WORKSPACE="/Users/Shared/Jenkins/Home/jobs/****/workspace"
# 切換到工程目錄
cd ${WORKSPACE}/${ProjectName}/platforms/${platforms}
# 打開鑰匙串
security unlock-keychain -p ${password} ~/Library/Keychains/login.keychain
# pastry命令行將外層的 www 目錄 合并到 平臺內的 www 目錄
# /Users/Shared/Jenkins/Documents/pastry/bin/pastry bake cordova prepare ${platforms}
# 配置 版本號
buildNumber="Jenkins:${BUILD_NUMBER} svn:${SVN_REVISION}"
# 獲取配置文件地址
PROJECT_INFOLIST="${WORKSPACE}/${ProjectName}/platforms/${platforms}/${ProjectName}/${ProjectName}-Info.plist"
# 修改配置文件 的 版本號
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion ${buildNumber}" "${PROJECT_INFOLIST}"
# 編譯(單工程用-target,多工程用-workspace)
xcodebuild -target ${ProjectName} -scheme ${ProjectName} clean build -configuration ${mode}\
PROVISIONING_PROFILE="****"\
CODE_SIGN_IDENTITY="****"\
PRODUCT_BUNDLE_IDENTIFIER="****"\
SYMROOT=${WORKSPACE}/Sym.root
# ipa包的導出目錄
packageOut="${WORKSPACE}/package_Out"
# 刪除舊包,重新創建目錄
rm -rdf ${packageOut}
mkdir -p ${packageOut}
# 打包
xcrun -sdk iphoneos PackageApplication -v "${WORKSPACE}/Sym.root/${mode}-iphoneos/${ProjectName}.app" \
-o "${packageOut}/${ProjectName}_${BUILD_NUMBER}.ipa"
# pastry命令行編譯打包
# /Users/Shared/Jenkins/Documents/pastry/bin/pastry bake compile ${platforms} -m ${mode} -bc "${bc}"

構建后操作模塊,點擊"增加構建后操作步驟"按鈕,選擇"Archive the artifacts",在用于存檔的文件輸入框中輸入"package_Out/*",這樣構建完成后,生成的ipa包鏈接就會顯示在頁面上,點擊鏈接即可把ipa包下載到本地。

配置完畢,返回Jenkins->item頁面,點擊Build with Parameters選項,點擊"開始構建"按鈕,即可一鍵打包!打包過程中,可點擊屏幕左下角構建歷史中的本次構建版本,然后點擊Console Output選項查看控制臺輸出的詳細日志,可實時查看本次構建明細。

構建完成后,查看構建歷史,藍色圓球代表構建成功,紅色圓球代表構建失敗,灰色圓球代表構建中斷。點擊本次構建記錄,可查看對應的SVN提交版本號及修改明細。點擊構建產生文件下的鏈接,即可把ipa包下載到本地。

(2)Xcode插件配置方法

此種方法的模塊配置和腳本配置過程基本一致,主要不同的是"構建環境"和"構建"兩個模塊,這里要安裝Xcode integration和Keychains and Provisioning Profiles Management兩個插件。

首先配置證書和描述文件,進入系統管理->Keychains and Provisioning Profiles Management頁面,把"/Users/管理員用戶名/Library/Keychains/login.keychain"目錄下的login.keychain文件拖拽到頁面中的"選取文件"按鈕上,點擊upload按鈕,Jenkins會把這個Keychain文件拷貝到/Users/Shared/Jenkins/Library/Keychains/login.keychain目錄下。同樣原理,把/Users/管理員用戶名/Library/MobileDevice/Provisioning Profiles目錄下的工程描述文件也拖拽到"選取文件"按鈕上,并點擊upload按鈕。

回到item配置的"構建環境"模塊,勾選Keychains and Code Signing Identities和Mobile Provisioning Profiles兩個選項,查看參數是否自動配置正確。若參數輸入框沒有自動匹配,點擊保存按鈕,退出再次進入配置頁面,即可看到相應的證書和描述文件了。

下面進入"構建"模塊,點擊"增加構建步驟"按鈕,選擇"Xcode"選項。General build settings部分依次填寫工程Target名->勾選清除緩存->填寫打包模式(Debug、Release)->勾選"Pack application, build and sign .ipa?"->填寫ipa名稱及導出路徑。

Code signing & OS X keychain options部分勾選"Unlock Keychain?",填寫鑰匙串文件路徑和密碼,鑰匙串密碼一般就是開機密碼。

注意如果項目使用了Cocoapods,則需要配置Advanced Xcode build options部分的設置,文件無需寫擴展名。至此,Xcode插件方法配置完畢,可以開始構建了。

四、配置Android項目

配置安卓項目需安裝兩個插件:Gradle Plugin和Android Emulator Plugin,具體安裝步驟同上。同樣需要安裝java環境,并把java路徑配置到系統環境變量中,參考如何在mac下配置Java環境變量

下面點擊Jenkins ->系統管理 –>系統設置 –> Environment variables 來編輯環境變量:

同樣構建一個自由風格的軟件項目,配置好SVN源碼管理模塊。不同的是,在"構建"模塊要選擇Invoke Gradle Script來配置參數:勾選Use Gradle Wrapper選項,在Tasks一欄中填寫"clean build",勾選Force GRADLE_USER_HOME to use workspace選項,點擊保存。

配置完畢,可開始構建打包。構建完成后點擊apk文件鏈接,可直接把包下載到本地。

五、問題總結

1.若構建卡在編譯那里,先在工作空間中,用Xcode打開工程編譯成功一次,再重新構建;

2.確保SVN倉庫地址不要存在中文,并且構建時要連接SVN內網;

3.若提示找不到證書和描述文件,打開鑰匙串,設置證書權限為"允許所有應用程序訪問此項目",并刪除鑰匙串存在的過期證書;

4.遇到不好定位的構建失敗問題,可嘗試清理工作空間,重新構建;

5.使用Xcode8以后的版本,在用Jenkins構建時可能提示xib文件報錯,把工程里所有的xib文件打開方式設置為用"Xcode 7.x"打開,提交修改至SVN,重新構建;


6.相關Terminal命令

若在瀏覽器重啟Jenkins,直接在本地網址后面加上restart即可,如:
http://localhost:8080/restart

Mac終端啟動Jenkins服務:
sudo launchctl load /Library/LaunchDaemons/org.jenkins-ci.plist

Mac中終端停止Jenkins服務:
sudo launchctl unload /Library/LaunchDaemons/org.jenkins-ci.plist

Mac終端卸載Jenkins:
~/Library/Application Support/Jenkins/Uninstall.command

Mac終端顯示系統隱藏文件,需按option+cmd+esc重啟Finder:
defaults write ~/Library/Preferences/com.apple.finder AppleShowAllFiles -bool true

Mac終端不顯示系統隱藏文件,需按option+cmd+esc重啟Finder:
defaults write ~/Library/Preferences/com.apple.finder AppleShowAllFiles -bool false

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,546評論 6 533
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,570評論 3 418
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,505評論 0 376
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,017評論 1 313
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,786評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,219評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,287評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,438評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,971評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,796評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,995評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,540評論 5 359
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,230評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,662評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,918評論 1 286
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,697評論 3 392
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,991評論 2 374

推薦閱讀更多精彩內容