首發於 Jenkins 中文社群
手工安裝 Jenkins 外掛的方法
通常,我們有兩種方法安裝 Jenkins 外掛。第一種方法是到 Jenkins 外掛管理頁面搜尋外掛,然後安裝。第二種方法是上傳 Jenkins 外掛的 hpi 檔案安裝。這兩種方法能滿足大多數人的需求。
第一種方法,如下圖所示:
第二種方法,如下圖所示:
但是對於需要保證 Jenkins 穩定或在 Jenkins 上進行二次開發的同學來說,以上方法是無法滿足需求的。
第一種方法是無法指定外掛的版本。第二種方式必須自己找到該外掛的依賴樹,然後根據依賴關係一個個地安裝。是的,手工上傳外掛的這種方法,Jenkins 是不會自動下載依賴的。
還有,就是這兩種方式都無法實現批量安裝。
自動安裝外掛的方法
那麼,有什麼方法能指定外掛的版本,又能自動下載它的依賴,還能批量下載呢?
幸運的是,Jenkins 的 Docker 映象的程式碼倉庫裡的 install-plugins.sh 指令碼已經實現。只不過需要我們拿過來小小修改才能使用。筆者修改後建立了相應的程式碼倉庫:jenkins-install-plugins-shell 。連結在文章末尾。
以下是 jenkins-install-plugins-shell 的使用方法:
- 將程式碼 clone 到 JENKINS_HOME 目錄中。
cd $JENKINS_HOME
git clone https://github.com/zacker330/jenkins-install-plugins-shell.git
cd jenkins-install-plugins-shell
複製程式碼
- 在 plugins.txt 中加入希望安裝的外掛
在
jenkins-install-plugins-shell
目錄中,有一個 plugins.txt 檔案,在檔案中寫入希望安裝的外掛及版本號。例如:
ansible:1.0
powershell:1.3
複製程式碼
- 執行安裝
# Jenkins War 的路徑,用於分析
export JENKINS_WAR_PATH=<Jenkins war檔案的路徑>
chmod +x install-plugins.sh jenkins-support
./install-plugins.sh < plugins.txt
複製程式碼
- 重啟 Jenkins install-plugins 本質上做的事情就只是將外掛從雲端下載到 JENKINS_HOME 下的 plugins 目錄中。要使安裝的外掛生效,還需要重啟 Jenkins。
關於 Jenkins 外掛的名稱
Jenkins 外掛有兩個名稱。一個叫 display name,一個叫 short name。比如 Ansible 外掛的 disply name 為 Ansible plugin,short name 為 ansible。
如何知道一個外掛的 short name 呢?可以在 Jenkins 外掛官網上找到,比如 Ansible 的:
在 plugins.txt
中使用的是 short name。
總結
筆者為什麼一定要確定 Jenkins 外掛的版本?是因為外掛的版本會影響 Jenkins 流水線的可靠性。所以,筆者才會這麼在意 Jenkins 外掛的版本。
附錄
- Jenkins 官方 Docker 映象中的自動化外掛安裝指令碼:github.com/jenkinsci/d…
- 筆者修改後的自動化外掛安裝指令碼: github.com/zacker330/j…
作者:翟志軍