2012-03-19 46 views

回答

1

我不認爲這是可能的。但是,作爲一種解決方法,您可以考慮創建一個可通過Jenkins CLI安裝插件的作業;然後您可以使用適當的參數通過API調用該作業。

0

正如malenkiy_scot所建議的,我們可以創建一個工作並使用Jenkins CLI。這是我爲自動安裝插件所採取的祕密方式。 Jenkins插件在Jenkins鏡像中可用:http://updates.jenkins-ci.org/latest此鏈接可能不會列出任何內容,但是如果您知道插件的名稱,則可以下載該插件。例如,如果你想下載skype-notifier插件,你可以從http://updates.jenkins-ci.org/latest/skype-notifier.hpi下載它的通用URL是「http://updates.jenkins-ci.org/latest/.hpi」

下載該插件後,它應該到Jenkins home的「plugins」目錄在服務器上。對於linux機器,它很可能在「/ var/lib/jenkins/plugins」中。簡單的例子

wget http://updates.jenkins-ci.org/latest/skype-notifier.hpi 
mv skype-notifier.hpi /var/lib/jenkins/plugins 

有兩件事情,這裏要注意:

  1. 如果插件有任何相關性,這些將不會被默認安裝的。如果您知道需要其他插件,則可以按照相同的方式安裝這些插件。這裏需要一些手動過程。但是,如果需要一組相同的插件,依賴關係只能解決一次,腳本可以寫入下載並將它們移動到Jenkins主頁。
  2. 下載的插件無法立即使用。重新加載Jenkins是必需的。
25

向Jenkins插件管理器發送(HTTP POST)以下xml數據(包含plugin-id @ version)。看看我的jenkins install plugin script的要點。

此HTTP POST請求安裝jenkins git plugin 2.0。

curl -X POST -d '<jenkins><install plugin="[email protected]" /></jenkins>' --header 'Content-Type: text/xml' http://localhost:8080/pluginManager/installNecessaryPlugins

+4

這應該是新接受的答案。此外,如果您將插件指定爲'git @ latest',則會安裝最新版本的插件。這裏使用的插件名稱是'Plugin ID'字段,例如[wiki.jenkins-ci.org](https://wiki.jenkins-ci.org/display/JENKINS/Git+Plugin) 。唯一要記住的另一件事是'curl'操作將在插件及其先決條件完全安裝之前返回。如果您正在自動執行此操作,強烈建議在安裝插件後插入一些睡眠定時器。 – 2014-03-31 17:27:28

+0

這是金!這應該是被接受的答案。 – OkezieE 2014-12-09 23:23:23

+0

'curl -X POST --form-string「plugin.git.default = on」http:// localhost:8080/pluginManager/install' 也有可能,其中'git'是插件名稱。但是這需要重新啓動Jenkins。 – 2016-07-13 08:45:35

1

一些插件都很難在文件系統中更新,因爲其他依賴於它(證書就是一個例子)。對於這些插件,只能使用Web界面進行更新。

Jenkins前端在'Manage Jenkins' - >'管理插件'下有一個頁面。在「高級」標籤下是「uploadPlugin」的表單。它允許捲曲的Web自動化,你可能需要添加驗證。

curl -i -F [email protected] http://jenkinshost/jenkins/pluginManager/uploadPlugin 
1

除了已經提到的方法(我個人使用的「捲曲uploadPlugin」一個由@bbaassssiiee提供),你需要考慮的是,如果你使用的插件管理詹金斯將嘗試dinamically加載插件,但如果你需要重新啓動詹金斯正確初始化插件(這是我的情況),你應該增加:

curl -kX POST https://${JENKINS_URL}/safeRestart 

如果你直接複製插件詹金斯/插件,重啓是強制性的要加載的插件。