有可能在两个不同的詹金斯之间交换工作吗?我正在寻找一种输出/输入工作的方法。


当前回答

有一个叫Job Import plugin的插件可能就是你要找的。我用过。它确实存在从不允许匿名访问的服务器导入项目的问题。

完整性: 如果您有命令行访问这两个任务,您可以执行Khez已经提到的移动、复制和重命名Jenkins作业的过程。

其他回答

最简单的方法,直接访问机器是复制作业文件夹从第一个jenkins到另一个(你可以排除工作区-工作区文件夹),因为整个作业配置存储在磁盘上的xml文件(config.xml在作业路径文件夹)

然后在新的jenkins中只需重新加载配置中的全局设置(管理员权限是必需的)就应该足够了,如果不行,那么你就需要重新启动jenkins工具。

另一种方法是使用上面提到的插件。

编辑:

在这种情况下,你可能也可以排除模块文件夹和管道以及共享库文件夹,如workspace@libs

下载插件名非常简单

作业导入插件

输入Remote Jenkins服务器的URL,它将自动导入作业

有一个叫Job Import plugin的插件可能就是你要找的。我用过。它确实存在从不允许匿名访问的服务器导入项目的问题。

完整性: 如果您有命令行访问这两个任务,您可以执行Khez已经提到的移动、复制和重命名Jenkins作业的过程。

可能使用jenkins命令行是另一种选择,参见https://wiki.jenkins-ci.org/display/JENKINS/Jenkins+CLI

create-job:通过将stdin读取为配置XML文件来创建一个新作业。 get-job:将作业定义XML转储到标准输出

所以你可以

java -jar jenkins-cli.jar -s http://server get-job myjob > myjob.xml
java -jar jenkins-cli.jar -s http://server create-job newmyjob < myjob.xml

它对我来说很好,我习惯存储在我的版本控制系统中

Jenkins将作业导出到一个目录

 #! /bin/bash
    SAVEIFS=$IFS
    IFS=$(echo -en "\n\b")
    declare -i j=0
    for i in $(java -jar jenkins-cli.jar -s http://server:8080/jenkins list-jobs  --username **** --password ***);
    do
    let "j++";
    echo $j;
    if [ $j -gt 283 ] // If you have more jobs do it in chunks as it will terminate in the middle of the process. So Resume your job from where it ends.
     then
    java -jar jenkins-cli.jar -s http://lxvbmcbma:8080/jenkins get-job --username **** --password **** ${i} > ${i}.xml;
    echo "done";
    fi
    done

进口工作

for f in *.xml;
do
echo "Processing ${f%.*} file.."; //truncate the .xml extention and load the xml file for job creation
java -jar jenkins-cli.jar -s http://server:8080/jenkins create-job ${f%.*}  < $f
done