保留Jenkins工作区

问题描述 投票:4回答:4

我让Jenkins设置为运行并发构建,因此我最终得到了工作空间,工作空间@ 2,工作空间@ 3等。如果Jenkins认为构建已完成,则新构建将覆盖工作空间。有没有办法偶尔防止这种情况?例如。在我说之前,不要覆盖工作区@ 3。我们有各种各样的情况,这将是非常有用的。

jenkins jenkins-workflow
4个回答
5
投票

您可以在构建结束时简单地归档整个工作区。删除作业后,它将被删除。

去做这个:

  • 添加构建后操作 - >“归档工件”
  • 输入**作为“要归档的文件”

如果要在每次运行时进行可配置,可以创建构建参数:

  • (如果尚未启用,则启用“这是参数化构建”)
  • 添加“选择参数”类型的参数并将其命名为ARCHIVE
  • 选择是<blank line>**(字面意思,放一个空白的第一行,然后第二行正好是**。没有引号)
  • 在“归档工件”操作的“高级”设置中使用${ARCHIVE}作为“归档文件”
  • 启用复选框“如果归档没有返回任何内容,请不要失败”

0
投票

Jenkins将当前工作空间存储为环境${WORKSPACE}变量。只要您还在构建中将重命名的绝对目录路径设置为${WORKSPACE}变量,您就可以在作业的任何时刻重命名它。什么时候这样做是你现在的选择。

另一种选择是安排下游作业并将${WORKSPACE}作为参数传递给该作业,以便您可以重命名它。


0
投票

这个答案有点晚,可能不是完全正确的答案你的问题,但这是我在搜索我的问题的解决方案时找到的第一张票。

我有两个文件夹JobName_XXXX和JobName_XXXX @ 2的问题。起初我的构建运行良好,我为另一个Jenkins节点添加了并行构建。删除并行构建后,我遇到了构建问题。它不再工作了。我使用blueocean的管道编辑器来创建Jenkinsfile。通过删除并行构建,我将“agent:any”设置为每个步骤。它导致jenkins在步骤内重置scm。所以我无法使用前面的步骤构建结果并构建崩溃。解决方案是从步骤/阶段中删除“agent:any”。有代理人可以:任何;直接在管道内。使用管道编辑器,你无法删除那些“代理:任何”的东西 - 至少现在不是吗?所以手动编辑Jenkinsfile。


0
投票

您可以在孔管道中定义代理,因此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'
            }
        }
    } 
}
© www.soinside.com 2019 - 2024. All rights reserved.