jenkens實際上是代碼上傳工具

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

Jenkins 持續集成使用教程

Jenkins 持續集成使用教程

Jenkins 持續集成使用教程

Jenkins 持續集成使用教程

Jenkins 持續集成使用教程

Jenkins 持續集成使用教程

此種方式不推薦。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 頁面。

Jenkins 持續集成使用教程

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

Jenkins 持續集成使用教程

建議選擇 Install suggested plugins。

Jenkins 持續集成使用教程

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

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 平臺。此插件安裝方式與上面的插件安裝方式不一樣,具體安裝方式見文末。

新建項目

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

Jenkins 持續集成使用教程

Jenkins 持續集成使用教程

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

Jenkins 持續集成使用教程

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

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

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

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

Jenkins 持續集成使用教程

其中 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 LC_ALL=zh_CN.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 ">>>>>>>>>>>>>>>>>>>上傳成功啦"

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

Jenkins 持續集成使用教程

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

更進一步,參數化構建

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

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

Jenkins 持續集成使用教程

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

Jenkins 持續集成使用教程

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

fir-plugin 安裝與使用

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

安裝

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

Jenkins 持續集成使用教程

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

Jenkins 持續集成使用教程

安裝完成後重啓服務。

使用

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

Jenkins 持續集成使用教程

Jenkins 持續集成使用教程

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

Jenkins 持續集成使用教程

說明成功了。

其餘配置

內網訪問

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

ifconfig en0

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

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

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

相關文章
相關標籤/搜索