将构建历史记录从一项工作复制到另一项工作

时间:2019-07-16 12:39:36

标签: jenkins

我有一个詹金斯的工作,这是一条声明式的管道。 URL是$JENKINS_URL/job/dnscheck/

我开始在詹金斯(Jenkins)上使用Bitbucket项目,现在还发现了Jenkinsfile,并且同样的工作也居住在$JENKINS_URL/job/website/job/dnscheck/job/master/

我想将整个历史记录(日志文件等)从$JENKINS_URL/job/dnscheck/复制到$JENKINS_URL/job/website/job/dnscheck/job/master/,然后删除$JENKINS_URL/job/dnscheck/

  1. 可以我可以吗?
  2. 如果是,如何该怎么做?
  3. 我不想覆盖现有文件

1 个答案:

答案 0 :(得分:1)

在主服务器上,所有日志都存储在${JENKINS_HOME}/jobs/<path/to/job>/builds/中,除非被系统属性jenkins.model.Jenkins.buildsDir覆盖。它们由一系列带编号的目录组成,内部带有log文件(构建日志),还可能包含一些其他数据文件(例如:build.xml,changelog.xml,injectedEnvVars.txt)。

在jobs目录和builds目录中,也有一些用于最后构建的符号链接(好/坏等)。您可以 复制所有目录(如果有冲突,请重新编号)并相应地更新符号链接。您可能还需要将上一个内部版本(自项目开始以来的内部版本数)重置为n + 1,以便下一个内部版本号在不重叠的情况下递增。它在/ nextBuildNumber中的文件中。

最后,由于Jenkins缓存了所有内容,因此您必须让Jenkins识别新内容。您可以通过以下方法来完成此任务:重新启动系统,从磁盘重新加载配置或不那么费劲地在一个作业上重新加载数据,例如:

def configXMLFile = job.getConfigFile();
def file = configXMLFile.getFile();
InputStream is = new FileInputStream(file);
job.updateByXml(new StreamSource(is));
job.save();