我让Jenkins设置为运行并发构建,因此我最终得到了工作区,工作区@ 2,工作区@ 3等。如果Jenkins认为构建已完成,则新构建将覆盖工作区。有没有办法偶尔防止这种情况?例如。在我说之前,不要覆盖工作区@ 3。 我们有各种各样的情况,这将是非常有用的。
答案 0 :(得分:5)
您可以在构建结束时简单地归档整个工作区。删除作业后,它将被删除。
要做到这一点:
**
作为"要归档的文件" 如果要在每次运行中进行可配置,可以创建构建参数:
ARCHIVE
<blank line>
和**
(字面意思是,第一行是空白,第二行是**
。没有引号)${ARCHIVE}
作为&#34;要归档的文件&#34; in&#34; Advanced&#34;设置&#34;归档文物&#34;动作答案 1 :(得分:0)
Jenkins将当前工作空间存储为环境${WORKSPACE}
变量。
只要您还将重命名的绝对目录路径设置为构建中的${WORKSPACE}
变量,您就可以在作业的任何时刻重命名它。何时这样做是你现在的选择。
另一种选择是安排下游作业并将${WORKSPACE}
作为参数传递给该作业,以便您可以重命名。
答案 2 :(得分:0)
这个答案来得有点晚,可能对您的问题不是完全正确的答案,但这是我在寻找问题的解决方案时发现的第一张票。
我在拥有两个文件夹JobName_XXXX和JobName_XXXX @ 2时遇到问题。 最初,我的构建工作良好,并为另一个Jenkins节点添加了并行构建。删除并行构建后,我遇到了构建问题。它不再工作了。 我使用blueocean的管道编辑器来创建Jenkinsfile。通过删除并行构建,我为每个步骤设置了“ agent:any”。它导致詹金斯在步骤内重置scm。因此,我无法使用先前步骤的构建结果并使构建崩溃。 解决方案是从步骤/阶段中删除“ agent:any” 。可以有代理人:任何;直接在管道内部。使用管道编辑器,您无法删除那些“代理:任何”东西-至少现在不是吗?因此,请手动编辑Jenkinsfile。
答案 3 :(得分:0)
您可以在Hole管道中定义代理,因此jenkins将仅使用“工作区”目录。
例如(这是“不工作”示例):
pipeline {
agent any
environment {
// Environment variables
}
stages {
stage('Clear dir') {
steps {
deleteDir()
}
}
stage('Make checkout') {
agent any // **THIS IS WRONG!!!!**
steps {
echo 'Making checkout'
}
}
}
}
在前面的示例中,舞台内部的“ agent any”将允许jenkins创建“ workspace @ 2”文件夹。
为防止这种情况,请仅将代理保留在管道中。 正确的例子:
pipeline {
agent any // This is right! leave only this mention of agent
environment {
// Environment variables
}
stages {
stage('Clear dir') {
steps {
deleteDir()
}
}
stage('Make checkout') {
steps {
echo 'Making checkout'
}
}
}
}