如何将所有已安装的插件转移到另一个Jenkins?

5
我想在本地 Jenkins 中安装已经在其他 Jenkins 上安装的相同插件。
希望避免手动安装所有 50-60 个插件。
2个回答

13

有关安装插件的Jenkins官方文档提供了两种安装插件的方法:

  1. 通过Web界面
  2. 将下载的*.hpi/*.jpi文件保存到$JENKINS_HOME/plugins目录中。

所以我的答案是:将服务器A上的$JENKINS_HOME/plugins目录复制到服务器B上。

别忘了之后重新启动Jenkins!


如果我的回答解决了你的问题,请随意接受它。 :) - Amedee Van Gasse
1
@sandejai:http://meta.stackexchange.com/questions/23138/how-to-accept-the-answer-on-stack-overflow - Jayan
谢谢Jayan,因为Sandejai实际上并没有接受,他们只是点了赞。 - Amedee Van Gasse
1
不要忘记在此之后重新启动Jenkins! - AATHITH RAJENDRAN
链接 URL 现在已经失效。 - cowlinator
@cowlinator 我已经更新了URL。感谢您的反馈。不过,您不需要URL,因为我已经在内联中包含了完整的答案。 - Amedee Van Gasse

2

如果您正在Docker容器中使用Jenkins,那么有另一种理想的方法。首先需要在终端中针对Jenkins域运行curl来提取已安装插件的列表:

export JENKINS_URL=http://<jenkins_domain>
curl -sSL "$JENKINS_URL/pluginManager/api/xml?depth=1&xpath=/*/*/shortName|/*/*/version&wrapper=plugins" | perl -pe 's/.*?<shortName>([\w-]+).*?<version>([^<]+)()(<\/\w+>)+/\1 \2\n/g'|sed 's/ /:/'

这将返回一个已安装插件列表,格式如下:
aws-credentials:1.15
aws-beanstalk-publisher-plugin:1.6.0
aws-java-sdk:1.10.45.2

然后,您可以运行此脚本来安装所有导出的插件或将其添加到Dockerfile的末尾,如下所示:

# copy script to container's bin
ADD ./plugin.sh /usr/local/bin/plugins.sh
# copy plugins list to inside the container
COPY plugins.txt /plugins.txt

# runs it
RUN /usr/local/bin/plugins.sh /plugins.txt

记得在执行此操作之前导出您的JENKINS_HOME变量。


很有趣,但是OP没有说Jenkins正在Docker容器内运行。个人认为,在Docker内运行Jenkins会增加不必要的配置开销,_但这可能取决于具体情况_。然而,我想强调一下:在Docker内运行Jenkins JOBS 是一个绝佳的主意,我真的很推荐。只是我的两分钱。 - Amedee Van Gasse
该URL目前无法访问。 - Amedee Van Gasse

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接