复制Jenkins流水线项目

3

我正在寻找一种在Jenkins中创建流水线项目的副本的方法。如果我选择一个普通项目,我会在侧边栏中看到一个“复制项目”的选项,但是在流水线项目中却没有这个选项。是否有可能复制流水线项目呢?


1
请查看 https://issues.jenkins-ci.org/plugins/servlet/mobile#issue/JENKINS-32756。 - slashpai
有趣的,谢谢 @slashpai。 - NeoTheThird
可能是如何在Jenkins中克隆作业?的重复问题。 - mkobit
1
@mkobit 这个问题是关于行为有些不同的管道的。由于在专 - NeoTheThird
2个回答

5

使用Jenkins的用户界面现在可以实现这一点。当您在主Jenkins窗口中点击“新项目”时,在底部可以指定要复制哪个项目。在那里指定流水线的名称。Jenkins将为您复制所有配置。


正在使用 Jenkins 2.263.4 进行工作。不确定最早支持的版本。 - ryanwebjackson

1

我不知道在UI界面上如何实现这个功能,我使用Jenkins CLI 来完成。我编写了一个命令行的包装器,它看起来像这样:

#!/bin/sh
#file: jenkins_cli.sh
cd $1
if [ -z ${JENKINS_CREDENTIALS+x} -o -z ${JENKINS_SERVER+x} ]
  then
    JENKINS_SERVER=$(<jenkins_url.txt)
    JENKINS_CREDENTIALS=$(<credentials_api.txt)
fi
java -jar jenkins-cli.jar -s $JENKINS_SERVER -auth $JENKINS_CREDENTIALS ${@:2} | dos2unix

由于我有多个Jenkins主机,每个主机都有一个子文件夹,其中包含jenkins_url.txtcredentials_api.txt。然后,我像这样调用命令:./jenkins_cli <jenkinsxyz> help
为了保存一个Jenkins主机的作业,我创建了这个脚本:
#!/bin/sh
# save all job configurations locally
#
# parameters:
#   directory with credentials_api.txt, jenkins_url.txt and jenkins-cli.jar of 
#   the jenkins server that will be backuped
cd $1
CLI="./../jenkins_cli.sh"

echo "create backup folder.."
mkdir -p backup

echo "save job list.."
. $CLI . list-jobs | unix2dos.exe > jobs.txt

echo "save job configuration.."
LOOPS=$(wc -l < jobs.txt)
for l in $(seq $LOOPS); do
    JOBNAME=$(tail -n+$l jobs.txt | head -n1)
    . $CLI . get-job "$JOBNAME" > ./backup/$JOBNAME.xml
    echo "saved job nr. $l: $JOBNAME"
done

虽然不是最好的方法,但它能够起作用 :) 我正在使用Git for Windows,这就是为什么我将所有内容都导入到unix2dos中。


忘了提到:如果我想在新的主服务器上创建保存的作业,只需调用 ./jenkins_cli <new_master> create-job < job.xml - tim

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