如何在作业开始之前清除Jenkins管道中的工作区

ras*_*cmb 8 jenkins jenkins-pipeline

我需要在构建开始之前清除工作区.我尝试cleanDir()分阶段使用,但在声明性管道中,检查首先发生,当cleadDir运行阶段,检出代码也被清除,这是不希望的.如何在声明性管道中签出之前清除工作区?

Ste*_*ing 10

实际上,我必须根据最近对管道插件的更改来修改我的答案,例如GitHub Branch Source Plugin 2.2.0和JENKINS-43507.

除了可以配置的不同分支发现行为之外,现在可以定义要采取的其他步骤,包括结账前清理(以及结账后清理):

在此输入图像描述

然后,管道执行中的结果输出将是

Cleaning workspace
  > git rev-parse --verify HEAD # timeout=10
Resetting working tree
 > git reset --hard # timeout=10
 > git clean -fdx # timeout=10
Run Code Online (Sandbox Code Playgroud)

所以,非常接近git clean自己的呼唤.


Mor*_*ajb 10

stage('Git') {
            steps {
                step([$class: 'WsCleanup'])
                checkout scm
            }
        }
Run Code Online (Sandbox Code Playgroud)

WsCleanup可以解决问题

  • 这会从此目录中删除工作空间目录,并可能导致“检索当前目录时出错:getcwd:无法访问父目录:没有这样的文件或目录”。分配工作空间后,最好使用“sh 'rm -rf *'”作为第一阶段的第一步。 (2认同)

Ste*_*ing 8

在Git运行时使用VCS的方法

git clean -fdx
Run Code Online (Sandbox Code Playgroud)