我有一个任务,我必须设置新的詹金斯服务器并从现有服务器复制作业、插件、设置等。 到目前为止,我复制了所有作业,但如何导入所有插件和设置我们在詹金斯上没有找到答案。
如果有任何插件可以完成这项工作将会有帮助
对于类似的任务,我编写了 python 脚本,使用 Jenkins Rest API 将插件和作业从一个 Jenkins 实例迁移到另一个实例。您可以在这篇文章中找到详细步骤如何将 Jenkins 从一台电脑移动到另一台电脑?
假设您已经创建了一个新的 Jenkins 服务,并且您想要将所有插件从
path/to/old/JENKINS_HOME
复制到新的 path/to/new/JENKINS_HOME
。
要导出
yaml
文件(例如 plugins.yaml
),请运行:
警告:在此实现中,我们删除了每个插件的版本,因此 jenkins 将安装最新版本的插件。
java -jar jenkins-plugin-manager-*.jar --war /path/to/jenkins.war --plugin-download-directory "path/to/new/JENKINS_HOME/plugins" -l --output yaml | sed '/source:/d' | sed '/version:/d' | tee path/to/new/JENKINS_HOME/plugins-from-old-installation.yaml
然后从导出的文件中安装插件列表(例如
plugins.yaml
):
警告:在此实现中,我们使用
选项允许旧安装中允许的安全规则。--hide-security-warnings
java -jar jenkins-plugin-manager-*.jar --war /usr/share/java/jenkins.war --plugin-download-directory "path/to/old/JENKINS_HOME/plugins" --plugin-file path/to/new/JENKINS_HOME/plugins-from-old-installation.yaml --hide-security-warnings
警告:在此实现中,我们复制所有插件的配置,以及整个系统的所有可能与这些插件无关的配置(例如凭据...等...)!
将旧
.xml
根目录中的所有 JENKINS_HOME
文件复制到新 JENKINS_HOME
中。像这样:
ls 'path/to/old/JENKINS_HOME' | grep '.*.\xml$' | xargs -I{} cp {} 'path/to/new/JENKINS_HOME'
安装插件后,需要重启jenkins服务才能生效:
sudo systemctl restart jenkins