Jenkins declarative pipelines提供了一个 post 指令,用于在阶段完成 * 之后 * 执行代码。是否有类似的方法可以在阶段运行 * 之前 * 运行代码,最重要的是,在SCM checkout 之前?
例如沿着以下内容:
pre {
always {
rm -rf ./*
}
}
这将在 checkout 源代码之前清理我的构建的工作区。
Jenkins declarative pipelines提供了一个 post 指令,用于在阶段完成 * 之后 * 执行代码。是否有类似的方法可以在阶段运行 * 之前 * 运行代码,最重要的是,在SCM checkout 之前?
例如沿着以下内容:
pre {
always {
rm -rf ./*
}
}
这将在 checkout 源代码之前清理我的构建的工作区。
3条答案
按热度按时间q1qsirdb1#
pre
是一个很酷的特性想法,但还不存在。skipDefaultCheckout
和checkout scm
(与默认的checkout相同)是关键字:9q78igpj2#
目前还没有
pre-build
步骤,但对于您正在寻找的目的,它可以在管道作业配置和多分支管道作业中完成,当您定义jenkinsfile的位置时,选择其他行为-〉清除存储库并强制克隆。请在建置之前删除工作区的内容,以确保工作区是全新的。
如果您不想删除所有内容并保存一些网络使用量,则可以使用其他选项:其他行为-〉结帐前清理。
在每次 checkout 之前,通过删除所有未跟踪的文件和目录(包括在. gitignore中指定的文件和目录)来清理工作区。它还将所有跟踪的文件重置为其版本化状态。这可确保工作区的状态与在全新的空目录中克隆和 checkout 时的状态相同,并确保您的生成不受上一个生成生成生成的文件的影响。
这个操作不会删除工作区,只是将存储库重置为原始状态,并提取新的更改(如果有)。
3df52oht3#
我使用“准备运行环境/脚本内容”