我正在寻找一种在Jenkins中创建流水线项目的副本的方法。如果我选择一个普通项目,我会在侧边栏中看到一个“复制项目”的选项,但是在流水线项目中却没有这个选项。是否有可能复制流水线项目呢?
我正在寻找一种在Jenkins中创建流水线项目的副本的方法。如果我选择一个普通项目,我会在侧边栏中看到一个“复制项目”的选项,但是在流水线项目中却没有这个选项。是否有可能复制流水线项目呢?
使用Jenkins的用户界面现在可以实现这一点。当您在主Jenkins窗口中点击“新项目”时,在底部可以指定要复制哪个项目。在那里指定流水线的名称。Jenkins将为您复制所有配置。
我不知道在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_url.txt
和credentials_api.txt
。然后,我像这样调用命令:./jenkins_cli <jenkinsxyz> help
。#!/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