有没有办法在声明式Jenkins管道中运行预 checkout 步骤?

hof1towb  于 2022-11-21  发布在  Jenkins
关注(0)|答案(3)|浏览(184)

Jenkins declarative pipelines提供了一个 post 指令,用于在阶段完成 * 之后 * 执行代码。是否有类似的方法可以在阶段运行 * 之前 * 运行代码,最重要的是,在SCM checkout 之前?
例如沿着以下内容:

pre {
    always {
        rm -rf ./*
    }
}

这将在 checkout 源代码之前清理我的构建的工作区。

q1qsirdb

q1qsirdb1#

pre是一个很酷的特性想法,但还不存在。skipDefaultCheckoutcheckout scm(与默认的checkout相同)是关键字:

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'
      }
    }
  }
}
9q78igpj

9q78igpj2#

目前还没有pre-build步骤,但对于您正在寻找的目的,它可以在管道作业配置和多分支管道作业中完成,当您定义jenkinsfile的位置时,选择其他行为-〉清除存储库并强制克隆。
请在建置之前删除工作区的内容,以确保工作区是全新的。

如果您不想删除所有内容并保存一些网络使用量,则可以使用其他选项:其他行为-〉结帐前清理。
在每次 checkout 之前,通过删除所有未跟踪的文件和目录(包括在. gitignore中指定的文件和目录)来清理工作区。它还将所有跟踪的文件重置为其版本化状态。这可确保工作区的状态与在全新的空目录中克隆和 checkout 时的状态相同,并确保您的生成不受上一个生成生成生成的文件的影响。
这个操作不会删除工作区,只是将存储库重置为原始状态,并提取新的更改(如果有)。

3df52oht

3df52oht3#

我使用“准备运行环境/脚本内容”

相关问题