Jenkins 持續集成使用教程

用 jenkins 有什麼好處

  1. 經過規範化來完成,簡單,繁瑣,浪費時間的重複工做
  2. 規範化工做,以避免出現低級錯誤
  3. 實現隨時隨地任何人一鍵構建
  4. ......

安裝 jenkins

以 Mac 設備爲例(Windows 步驟相似),幫你一步一步搭建好 jenkins。jenkins 屬於 java 項目 依賴於 java,須要先安裝 java jdk,具體安裝方式請自行百度。html

安裝 jenkins 有經常使用的三種方式。java

使用 pgk 安裝包安裝

官網 下載 pgk 安裝包,使用安裝器安裝,按照流程安裝便可。此安裝方式會在 Mac 系統裏建立一個名爲 jenkins 用戶,jenkins 服務就部署在這個用戶下。git

具體步驟以下圖所示:github

此種方式不推薦。shell

使用 war 安裝

直接去官網下載 war 文件,並 cd 到 jenkins.war 所在目錄,執行:api

java -jar jenkins.war --httpPort=8080xcode

war 包自帶 jetty 服務器,以上命令會自動啓服務器,並完成部署。瀏覽器

此種方式安裝,會在當前用戶的根路徑下建立 .jenkins 隱藏文件,併產生多餘的配置文件,需手動管理,且不方便卸載。ruby

此種方式也不推薦。bash

使用 Homebrew 安裝

Homebrew 做爲 macOS 下的包管理器使用起來異常的簡單快捷方便。 安裝 Homebrew 以前, 首先安裝 Command Line Tools for Xcode,命令以下:

xcode-select --install

Homebrew 依賴 Command Line Tools for Xcode,Xcode 命令行工具包含在 Xcode 中,若是 mac 設備已經安裝 Xcode,請忽略此步。

安裝完上面的編譯依賴以後,經過下面的代碼完成 Homebrew 的安裝:

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

完成 Homebrew 安裝。

可經過如下命令查看當前 Homebrew 管理的服務:

brew services list

使用 Hombrew 安裝 jenkins,執行如下命令:

brew install jenkins

此步,Homebrew 會下載並安裝自動完成全部依賴,包括 java。並會建立 ‘jenkins’ 命令。

同時,卸載 jenkins 的方式爲:

brew uninstall jenkins

啓動 jenkins 服務的方式爲:

brew services start jenkins

使用此種方式啓用 jenkins 服務支持後臺運行,能夠關閉終端工具。

也可使用 jenkins 命令來啓用 jenkins 服務。但此種方式不支持後臺運行,關閉命令行工具,服務自動關閉。

另,經常使用命令還有:

重啓 jenkins 服務的方式爲:

brew services restart jenkins

中止 jenkins 服務的方式爲:

brew services stop jenkins

經過此種方式安裝,不會在系統中產生垃圾文件和多餘的配置文件,全部的文件都是用 Homebrew 來管理,而且方便卸載。

此種方式強烈推薦。

如安以上方式安裝後,localhost 打不開,可能的狀況通常有:java jdk 未正確安裝或配置,8080端口被佔用,安裝路徑權限不夠等等的問題,遇到這樣的問題最好的辦法是:卸載重裝。不一樣的安裝方式,卸載方式也會不一樣。具體可參看這個教程

另,也有以下方式操做 Jenkins 服務

http://localhost:8080/exit //中止服務

http://localhost:8080/restart //重啓服務

http://localhost:8080/reload // 從新載入服務

配置 jenkins

建立用戶

完成 jenkins 安裝之後,在瀏覽器種打開 localhost ,會進入配置 jenkins 頁面。

按照提示,找到/Users/Shared/Jenkins/Home/ 這個目錄下,打開 initialAdminPassword 文件,複製出密碼並填入,點擊繼續,進入安裝插件頁面。

建議選擇 Install suggested plugins。

等待插件安裝完成後,jenkins 會重啓,等待重啓完成後,會進入建立用戶頁面。

填寫用戶信息後,保存便可。請務必記住用戶名和密碼信息,不然重置用戶信息很是麻煩。

安裝插件

登陸 http://localhost:8080 ,選擇「系統管理」——「管理插件」,在「可選插件」中選中「GitLab Plugin」、「Gitlab Hook Plugin」、「Xcode integration"等經常使用插件,而後安裝。

安裝完成插件後,就能夠新建項目了!

其餘經常使用插件有:

Email Extension Plugin 該插件用於替換 Jenkins 自帶的郵件發送,更加的強大。

Git Plugin 該插件容許使用GIT做爲一個構建SCM(源代碼控制管理系統)。

Post build task 該插件容許用戶依據構建日誌的輸出執行一個shell/批處理任務。

Ruby Plugin 該插件容許用戶在構建腳本中使用 Ruby。

Python Plugin 添加執行 Python 腳本做爲Hudson的構建步驟。

Gradle Plugin 該插件容許Hudson調用Gradle構建腳本做爲主體構建的步驟。

FTP-Publisher Plugin 該插件能上傳項目構件和整個目錄到一個FTP服務器。

Extended Choice Parameter plugin 該插件能夠擴展參數化構建過程

Extended Choice Parameter Plug-In 該插件能夠擴展參數化構建過程

Dynamic Extended Choice Parameter Plug-In 該插件能夠擴展參數化構建過程

git parameter Plug-in 該插件能夠擴展參數化構建過程

fir-plugin 該插件是 fir.im 分發平臺提供的 jenkins 插件,用於上傳安裝包到 fir.im 平臺。此插件安裝方式與上面的插件安裝方式不一樣,具體安裝方式見文末。

新建項目

點擊新建,在新建項目頁面輸入項目名稱,選擇「構建一個自由風格的軟件項目」,而後進入配置頁面

源碼管理中 選擇 Git ,填寫倉庫地址

如出現紅色警告,說明 Jenkins 訪問不了 Git 倉庫,通常是由於沒有權限致使。點擊 Credentials 項的 Add ,在打開的 Jenkins Credentails Provider:Jenkins 頁面,在 Username 和 Password 輸入 Git 倉庫的用戶名和密碼,完成添加。沒必要擔憂用戶信息外泄,Jenkins 服務和全部配置都保存在本地。

還能夠經過配置 Git SSH 的方式賦予 Jenkins 訪問 Git 倉庫的權限,按此方法較爲麻煩,具體步驟略。

在 Branches to build 中設置 Branch Specifier 要構建的分支,默認爲 master。

構建觸發器中設置構建自動化的觸發器。

其中 Build periodically,爲定時 build,在日程表裏設置 build 時間,如設置 00 20 * * * 表示天天 20 點執行定時 build。

Poll SCM (poll source code management) 輪詢源碼管理,表示在指定的時間點去輪詢 Git 倉庫,看是否有新的 commit,若有,則觸發構建。如設置 0/5 * * * * 表示每5分鐘輪詢一次。

完成此步驟後,剩餘的工做,皆可經過 Execute shell 腳原本執行。不一樣類型項目執行腳本不一樣。

腳本構建

以構建 iOS 的 SellerPlatform 迷橙商家端項目上傳 fir.im 分發平臺爲例完成建立。

第一步 歸檔

archive.sh

`#! bin/bash

export LCALL=zhCN.GB2312; export LANG=zh_CN.GB2312

gitMessage=git log --pretty=format:"%s";

stringTag=${gitMessage%%】}; #%%[ 表示從右邊開始,刪除最後(最左邊)一個 [ 號及右邊的字符

debug="【Debug"; preRelase="【PreRelase"; relase="【Relase";

if [[ $stringTag != $debug && $stringTag != $preRelase && $stringTag != $relase ]] then exit 1 else echo "觸發非參數化構建 暗號:$stringTag】" fi

echo ">>>>>>>>>>>>>>>>>>>開始構建項目,當前選擇構建類型:" + $BUILDTYPE echo ">>>>>>>>>>>>>>>>>>>當前 workspace " +$WORKSPACE

if [ $BUILDTYPE == "Release"]; then xcodebuild archive -workspace $WORKSPACE/SellerPlatform/SellerPlatform.xcworkspace -archivePath $WORKSPACE/build/SellerPlatform.xcarchive -sdk iphoneos -scheme SellerPlatform -configuration Release

else xcodebuild archive -workspace $WORKSPACE/SellerPlatform/SellerPlatform.xcworkspace -archivePath $WORKSPACE/build/SellerPlatform.xcarchive -sdk iphoneos -scheme SellerPlatform -configuration Debug

fi

echo ">>>>>>>>>>>>>>>>>>>構建完成"

以上腳本實現的功能是:當在 git commit messge 裏包含指定的標記號,便可完成對應標記號的構建。把控制權延伸到 git commit 操做裏。

其中 【Debug】 表明打 debug 版本包,【PreRelase】表明打 preRelase 版本包,【Relase】表明打 relase 版本包。

首先,經過執行 git log --pretty=format:"%s" 命令,格式化輸出 git commit log, 經過 %%】* 操做,是要拿到最後標記號【Debug】或【PreRelase】或【Relase】,若是拿到對應的標記號,則完成對應方式的構建。

另,Jenkins 會爲每一個工程項目建立一個本地目錄空間,並提供了 $WORKSPACE 環境變量來直接訪問。

第二步 簽名

signature.sh

echo "開始簽名"

xcodebuild -exportArchive -archivePath $WORKSPACE/build/SellerPlatform.xcarchive -exportPath $WORKSPACE/build -exportOptionsPlist $WORKSPACE/build/ExportOptions.plist -allowProvisioningUpdates

echo "ipa文件已生成"

echo "開始上傳fir"

以上腳本實現的功能是:根據第一步歸檔出來的projectName.xcarchive 完成簽名打包。

第三步 上傳

首先,打開終端,安裝 fir-clifir 的命令行工具,用於經過命令行上傳安裝包。 須要先裝好 ruby 再執行

gem install fir-cli

上傳打 fir 命令

fir publish ${ipa_path} -T fir_token -c "${commit_msg}"

upload.sh

echo ">>>>>>>>>>>>>>>>>>>開始上傳到 fir" if [$BUILDTYPE == "Debug" ]; then

fir publish $WORKSPACE/build/SellerPlatform.ipa -T efa7a5559110764a5037c52d4599635f --password rose888 -c $CHANGELOG

elif [ $BUILDTYPE == "PreRelease" ]; then

fir publish $WORKSPACE/build/SellerPlatform.ipa -T 4f43ef4e28992358b511a76eb1c27d48 --password rose888 -c $CHANGELOG

else

fir publish $WORKSPACE/build/SellerPlatform.ipa -T 3a9a1a361fe52b8b0d5eb59c7d0bd808 --password rose888 -c $CHANGELOG

fi

echo ">>>>>>>>>>>>>>>>>>>上傳成功啦"

至此,就完成了持續集成的流程。

完成後建構,還能夠經過 Email Extension Plugin 插件,郵件通知到相關人員。還能夠定製郵件內容。在郵件內容裏,還能夠放置二維碼,方便下載安裝。

更進一步,參數化構建

參數化構建,顧名思義,就是能夠指定構建參數,完成高度可定製化構建。

首先,須要安裝 git parameter Plug-in 插件,而後項目配置頁面,在 General 中,選中‘參數化構建過程’,而後選擇 git parameter。如圖所示:

設置 name 爲 git_branch,即爲變量名,而後 Parameter type ,就是 選擇 branch/tag/branch or tag 三種類型,在源碼管理中 Branches to build 中設置 Branch Specifier 爲 $git_branch 。便可完成自定義分支構建。

一樣,能夠設置構建的版本類型。在構建的時候,進行選擇。在此再也不贅述。

fir-plugin 安裝與使用

在上面的例子裏,使用的是 fir.im 提供的命令行工具完成後建構的上傳,也能夠經過 fir-plugin 插件來完成上傳。

安裝

首先去下載插件 。而後,進入"系統管理"->"管理插件"->"高級"->"上傳插件"

選擇已下載好的 fir-plugin.hpi 插件,點擊上傳。

安裝完成後重啓服務。

使用

構建後操做 選擇"Upload to fir.im",並添加 api token 並校驗

當即構建項目,成功以後,在工程裏的 Console Output 中有以下日誌

說明成功了。

其餘配置

內網訪問

首先,拿到 jenkins 服務器所在設備上的內網 IP,執行以下命令可得到

ifconfig en0

進入"系統管理"->"系統設置" 找到 Jenkins Location 在 Jenkins URL 中設置地址,並加上端口號,格式如:172.0.0.1:8080/,而後保存。重啓服務,內網其餘設備輸入地址便可訪問。

當其餘設備不能訪問時,通常緣由有:jenkins 服務器沒啓動,設備處於休眠模式,設備內網 IP 被從新分配。

以爲不錯的話,歡迎關注個人公衆號哦!

相關文章
相關標籤/搜索