我需要在构建开始之前清除工作区。我尝试分阶段使用cleanDir()
,但是在声明性管道中,首先检出并且当cleadDir
的阶段运行时,检出代码也会被清除,这是不希望的。如何在声明性管道中签出之前清除工作区?
答案 0 :(得分:9)
实际上,我必须根据最近对管道插件的更改来修改我的答案,例如:带有JENKINS-43507的GitHub Branch Source Plugin 2.2.0。
除了可以配置的不同分支发现行为之外,现在可以定义要采取的其他步骤,包括结账前清理(以及结账后清理):< / p>
管道执行中的结果输出将是
Cleaning workspace > git rev-parse --verify HEAD # timeout=10 Resetting working tree > git reset --hard # timeout=10 > git clean -fdx # timeout=10
所以,非常接近你自己的呼叫git clean
。
答案 1 :(得分:6)
stage('Git') {
steps {
step([$class: 'WsCleanup'])
checkout scm
}
}
WsCleanup可以解决这个问题
答案 2 :(得分:5)
使用VCS的方法,使用Git运行
ArrayList
答案 3 :(得分:0)
这样的事情应该有效:
env.WORKSPACE = pwd()
sh "rm ${env.WORKSPACE}/* -fr"
答案 4 :(得分:0)
稍微不同的方法是使用stash step首先存储您的代码:
stash includes: 'src/**', name: 'source-code'
之后,您可以删除当前工作区中的所有内容。在稍后阶段,您可以再次简单地unstash源代码:
unstash 'source-code'
stash / unstash的另一个优点是你可以用它在多个jenkins节点之间共享文件。
答案 5 :(得分:0)