Jenkins 自動化安裝外掛

Jenkins中文社群發表於2019-05-13

首發於 Jenkins 中文社群

手工安裝 Jenkins 外掛的方法

通常,我們有兩種方法安裝 Jenkins 外掛。第一種方法是到 Jenkins 外掛管理頁面搜尋外掛,然後安裝。第二種方法是上傳 Jenkins 外掛的 hpi 檔案安裝。這兩種方法能滿足大多數人的需求。

第一種方法,如下圖所示:

Jenkins 自動化安裝外掛

第二種方法,如下圖所示:

Jenkins 自動化安裝外掛

但是對於需要保證 Jenkins 穩定或在 Jenkins 上進行二次開發的同學來說,以上方法是無法滿足需求的。

第一種方法是無法指定外掛的版本。第二種方式必須自己找到該外掛的依賴樹,然後根據依賴關係一個個地安裝。是的,手工上傳外掛的這種方法,Jenkins 是不會自動下載依賴的。

還有,就是這兩種方式都無法實現批量安裝。

自動安裝外掛的方法

那麼,有什麼方法能指定外掛的版本,又能自動下載它的依賴,還能批量下載呢?

幸運的是,Jenkins 的 Docker 映象的程式碼倉庫裡的 install-plugins.sh 指令碼已經實現。只不過需要我們拿過來小小修改才能使用。筆者修改後建立了相應的程式碼倉庫:jenkins-install-plugins-shell 。連結在文章末尾。

以下是 jenkins-install-plugins-shell 的使用方法:

  1. 將程式碼 clone 到 JENKINS_HOME 目錄中。
cd $JENKINS_HOME
git clone https://github.com/zacker330/jenkins-install-plugins-shell.git
cd jenkins-install-plugins-shell
複製程式碼
  1. 在 plugins.txt 中加入希望安裝的外掛 在 jenkins-install-plugins-shell 目錄中,有一個 plugins.txt 檔案,在檔案中寫入希望安裝的外掛及版本號。例如:
ansible:1.0
powershell:1.3
複製程式碼
  1. 執行安裝
 # Jenkins War 的路徑,用於分析
export JENKINS_WAR_PATH=<Jenkins war檔案的路徑>
chmod +x install-plugins.sh jenkins-support
./install-plugins.sh < plugins.txt
複製程式碼
  1. 重啟 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 的:

Jenkins 自動化安裝外掛

plugins.txt 中使用的是 short name。

總結

筆者為什麼一定要確定 Jenkins 外掛的版本?是因為外掛的版本會影響 Jenkins 流水線的可靠性。所以,筆者才會這麼在意 Jenkins 外掛的版本。

附錄

作者:翟志軍

Jenkins 自動化安裝外掛

相關文章