2012-03-19 56 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 

如果你直接复制插件詹金斯/插件,重启是强制性的要加载的插件。