保留Jenkins工作区

jun*_*bob 5 jenkins jenkins-workflow

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

tar*_*oga 5

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

去做这个:

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

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

  • (如果尚未启用,则启用"这是参数化构建")
  • 添加"选择参数"类型的参数并命名 ARCHIVE
  • 选择是<blank line>**(字面意思是,第一行是空白,然后是第二行**.没有引号)
  • 使用${ARCHIVE}如"高级"的"存档的神器"设定动作"文件归档"
  • 启用复选框"如果归档没有返回任何内容,请不要失败"


小智 5

您可以在孔管道中定义代理,因此 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'
            }
        }
    } 
}
Run Code Online (Sandbox Code Playgroud)

在前面的示例中,舞台内的“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'
            }
        }
    } 
}
Run Code Online (Sandbox Code Playgroud)


Zlo*_*loj 2

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

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