我让Jenkins设置为运行并发构建,因此我最终得到了工作空间,工作空间@ 2,工作空间@ 3等。如果Jenkins认为构建已完成,则新构建将覆盖工作空间。有没有办法偶尔防止这种情况?例如。在我说之前,不要覆盖工作区@ 3。我们有各种各样的情况,这将是非常有用的。
您可以在构建结束时简单地归档整个工作区。删除作业后,它将被删除。
去做这个:
**
作为“要归档的文件”如果要在每次运行时进行可配置,可以创建构建参数:
ARCHIVE
<blank line>
和**
(字面意思,放一个空白的第一行,然后第二行正好是**
。没有引号)${ARCHIVE}
作为“归档文件”Jenkins将当前工作空间存储为环境${WORKSPACE}
变量。只要您还在构建中将重命名的绝对目录路径设置为${WORKSPACE}
变量,您就可以在作业的任何时刻重命名它。什么时候这样做是你现在的选择。
另一种选择是安排下游作业并将${WORKSPACE}
作为参数传递给该作业,以便您可以重命名它。
这个答案有点晚,可能不是完全正确的答案你的问题,但这是我在搜索我的问题的解决方案时找到的第一张票。
我有两个文件夹JobName_XXXX和JobName_XXXX @ 2的问题。起初我的构建运行良好,我为另一个Jenkins节点添加了并行构建。删除并行构建后,我遇到了构建问题。它不再工作了。我使用blueocean的管道编辑器来创建Jenkinsfile。通过删除并行构建,我将“agent:any”设置为每个步骤。它导致jenkins在步骤内重置scm。所以我无法使用前面的步骤构建结果并构建崩溃。解决方案是从步骤/阶段中删除“agent:any”。有代理人可以:任何;直接在管道内。使用管道编辑器,你无法删除那些“代理:任何”的东西 - 至少现在不是吗?所以手动编辑Jenkinsfile。
您可以在孔管道中定义代理,因此jenkins将仅使用“workspace”目录。
例如(这是一个非工作示例):
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'
}
}
}
}