一、同一个Jenkins中复制job
如果是同一个Jenkins复制job,只需要在创建Job时,选择Copy from一个已有的job即可。也就是在下方上面的红框中输入你新建job的名称,在下面的红框中输入你想要复制的job(已经建好的job),然后点击确定。这样就完后了复制。
二、跨Jenkins复制job
- 方法一:直接复制jobs
(1)Jenkins的job都在$JENKINS_HOME/jobs目录(一般都在/var/lib/jenkins/jobs,我的是用jenkins的war包,所以我的job目录在/root/.jenkins/jobs)下,每个job一个目录。
复制全部job:
cd /root/.jenkins/
# 在源Jenkins上压缩jobs目录
tar -czvf jobs.tar.gz jobs
# 在目标Jenkins上解压jobs目录
tar -zxvf jobs.tar.gz
复制某一个job:
cd /var/lib/jenkins/jobs
# 在源Jenkins上压缩指定的job目录
tar -czvf myjob.tar.gz myjob
# 在目标Jenkins上解压指定的job目录
tar -zxvf myjob.tar.gz
(2)然后在目标Jenkins上,打开Manage Jenkins(系统管理),选择Reload Configuration from Disk(读取设置)。我的是中文版的,点击下面的图标
注意:不需要重启Jenkins。
- 用Jenkins-CLI来导出和导入
(1)在Jenkins上,打开Manage Jenkins,打开Jenkins-CLI(中文版:Jenkins命令行接口)
(2)下载jenkins-cli.jar,按照Jenkins-CLI页面的指引来操作:
# 导出一个job
java -jar jenkins-cli.jar -s http://114.xxx.xxx.123:8095/ get-job myjob > myjob.xml
# 导入一个jobs
java -jar jenkins-cli.jar -s http://114.xxx.xxx.123:809/ get-job myjob < myjob.xml
注意:我Jenkins的端口是8095,大家按自己的填写就行
(3)然后在目标Jenkins上,打开Manage Jenkins(系统管理),选择Reload Configuration from Disk(读取设置)。
注意:不需要重启Jenkins。
(4)这种方法在本地操作时会遇到ERROR: anonymous is missing the Overall/Read permission的错,原因是为了安全考虑Jenkins默认不允许直接通过jenkins-cli来调用。
解决方案:
https://stackoverflow.com/questions/51038858/jenkins-cli-error-anonymous-is-missing-the-overall-read-permission