有没有办法在声明性Jenkins管道中运行预签出步骤?

Fro*_*ide 14 build jenkins jenkins-pipeline

Jenkins声明性管道提供了一个post指令,用于在阶段完成执行代码.在阶段运行之前运行代码是否有类似的事情,最重要的是,在SCM结账之前?

例如,有些东西:

pre {
    always {
        rm -rf ./*
    }
}
Run Code Online (Sandbox Code Playgroud)

然后,在签出源代码之前,这将清理我的构建工作区.

bur*_*ttk 18

pre是一个很酷的功能想法,但尚不存在.skipDefaultCheckoutcheckout scm(与默认结帐相同)是键:

pipeline {
  agent { label 'docker' }
  options {
    skipDefaultCheckout true
  }
  stages {
    stage('clean_workspace_and_checkout_source') {
      steps {
        deleteDir()
        checkout scm
      }
    }
    stage('build') {
      steps {
        echo 'i build therefore i am'
      }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)


fro*_*tin 5

目前没有任何pre-build步骤,但为了您正在寻找的目的,它可以在管道作业配置和多分支管道作业中完成,当您定义 jenkinsfile 的位置时,选择其他行为 - >擦除存储库并强制克隆。

在构建之前删除工作区的内容,确保工作区完全新鲜。

其他行为:清除存储库并强制克隆

如果您不想删除所有内容并节省一些网络使用量,则可以使用其他选项:其他行为 -> 结帐前清理。

每次签出之前,通过删除所有未跟踪的文件和目录(包括 .gitignore 中指定的文件和目录)来清理工作区。它还会将所有跟踪的文件重置为其版本状态。这可确保工作区处于与在全新的空目录中克隆和检出相同的状态,并确保您的构建不会受到先前构建生成的文件的影响。

此操作不会删除工作区,而只是将存储库重置为原始状态,并提取新的更改(如果有)。

附加行为:结帐前清洁