pluginFolder=$(mktemp -d)
# Download plugins
JENKINS_UC=https://updates.jenkins.io REF="${pluginFolder}" \
install-plugins.sh \
docker-workflow:1.26 docker-plugin:1.2.2
# add more plugins in here, pass a bash array or load from file
# (see Real-life example bellow)
# Install all downloaded plugin files via HTTP
for pluginFile in "${pluginFolder}/plugins"/*; do
curl -i -F "file=@${pluginFile}" http://${JENKINS_URL}/pluginManager/uploadPlugin
done
7条答案
按热度按时间6pp0gazn1#
发送(HTTP POST)以下xml数据(与您的插件ID @version)到Jenkins插件管理器。看看我的jenkins install plugin script的主旨。
此HTTP POST请求安装jenkins git plugin 2.0。
curl -X POST -d '<jenkins><install plugin=" [[email protected]](https://stackoverflow.com/cdn-cgi/l/email-protection) " /></jenkins>' --header 'Content-Type: text/xml' http://localhost:8080/pluginManager/installNecessaryPlugins
qlfbtfca2#
一些插件很难在文件系统上更新,因为其他插件依赖于它(凭证就是一个例子)。对于此类插件,只能使用Web界面进行更新。
Jenkins frontend在'Manage Jenkins' -> 'Manage Plugins'下有一个页面。在“高级”选项卡下是一个“上传插件”的表单。它允许使用curl进行Web自动化,您可能需要添加身份验证。
js81xvg63#
除了已经提到的方法(我个人使用了@bbaassssiiee提供的“curl uploadPlugin”方法),你需要考虑如果你使用pluginManager Jenkins将尝试动态加载你的插件,但是如果你需要重新启动Jenkins来正确初始化插件(这是我的情况),你应该添加:
如果您直接将插件复制到jenkins/plugin,则必须重新启动才能加载插件。
fsi0uk1n4#
正如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”中。简单的例子
这里有两点需要注意:
1.如果插件有任何依赖项,默认情况下不会安装。如果您知道需要哪些其他插件,则可以以相同的方式安装这些插件。这里需要一点手动处理。但是,如果需要相同的插件集,则可以只解决一次依赖关系,并且可以编写脚本来下载并将其移动到Jenkins主页。
1.下载的插件不能立即使用。需要重新加载Jenkins。
atmip9wb5#
经过大量的血汗和眼泪,我建议的解决方案是:
hpi
文件(插件和依赖项)使用plugin-installation-manager-tool(需要java)或install-plugins.sh(只需要bash,但已正式弃用,但仍在工作09/2021)注意:两者都包含在官方Docker镜像中(另见Offline Installations)
安装所有下载的文件
为什么?
POST到
/pluginManager/installNecessaryPlugins
总是安装最新版本(known bug or feature?),似乎只安装请求的插件,而没有适当的依赖处理。简单示例
需要install-plugins.sh及其依赖
jenkinsci/docker
的jenkins-support。你必须调整install-plugins.sh第27行,使其指向你的
jenkins-support
文件,例如:. jenkins-support
如果你把所有东西都放在一个文件夹里,然后从那里执行。真实示例
来自
cloudogu/gitops-playground
download-plugins.sh
-使用install-plugins.sh
将plugins.txt
中声明的所有插件加载到作为参数传递的目录中。download-plugins.sh
,然后使用jenkins-REST-client.sh
安装插件svdrlsy46#
更新@bbaassssiiee答案
Jenkins版本:简体中文(zh_cn)
h22fl7wq7#
我认为这是不可能的。但是,作为一种解决方案,您可以考虑创建一个通过Jenkins CLI安装插件的作业;然后,您可以使用适当的参数通过API调用该作业。