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


当前回答

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

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

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

编辑:

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

其他回答

多亏了Larry Cai的回答,我成功地创建了一个脚本来备份我所有的Jenkins作业。我创建了一个每周运行这个的作业。如果有人发现它有用,这里是:

#!/bin/bash
#IFS for jobs with spaces.
SAVEIFS=$IFS
IFS=$(echo -en "\n\b")
for i in $(java -jar /run/jenkins/war/WEB-INF/jenkins-cli.jar -s http://server:8080/ list-jobs); 
do 
  java -jar /run/jenkins/war/WEB-INF/jenkins-cli.jar -s http://server:8080/ get-job ${i} > ${i}.xml;
done
IFS=$SAVEIFS
mkdir deploy
tar cvfj "jenkins-jobs.tar.bz2" ./*.xml

在我的Jenkins实例(版本1.548)中,配置文件位于:

/var/lib/jenkins/jobs/-the-project-name - / config . xml

属于jenkins用户和jenkins组,拥有644个权限。将文件复制到这里和从这里复制到这里应该可以工作。我没有尝试直接更改它,但已经从这个地方备份了配置,以防项目需要再次设置。

转到Jenkins服务器的首页,点击页面底部的REST API:

创建工作

要创建一个新作业,将config.xml发送到这个URL,查询参数name=JOBNAME。你需要发送一个Content-Type: application/xml报头。如果创建成功,您将获得200状态代码,如果创建失败,则获得4xx/5xx代码。config.xml是Jenkins用于在文件系统中存储项目的格式,因此您可以在Jenkins主目录中看到它们的示例,或者通过从/job/JOBNAME/config.xml中检索现有作业的XML配置。

作为web用户,您可以通过转到作业配置历史记录导出XML。

我现在无法访问Jenkins正在运行的机器,我想把它作为备份导出。

至于以web用户身份导入xml,我还是想知道。

这并不适用于现有的工作,但是有Jenkins工作生成器。

这允许我们将作业定义保存在yaml文件和git repo中,这是非常可移植的。