Gir*_*tsu 2 jenkins jenkins-pipeline
我需要有两个构建与 jenkins 声明性管道并行运行。为了避免在构建后的脚本管道中构建工作区之间发生冲突,可以使用:
lock('some_lock') {
checkout git 'gitrepo'
build
}
Run Code Online (Sandbox Code Playgroud)
在声明式管道中,不会直接调用 checkout 步骤,因此即使我们像这样进行锁定,
steps {
lock('some_lock') {
build here ongoing
}
}
Run Code Online (Sandbox Code Playgroud)
我们可能会遇到构建 A 正在构建,构建 B 正在等待锁定的情况,但它仍然会执行检出,因为在声明式管道中,您没有指定检出何时发生。可以避免吗?
我知道理论上 Jenkins 不应该在这种情况下使用相同的工作空间。但不幸的是,它不时发生。
我认为声明性管道中妨碍您的部分是默认情况下自动发生的“声明性:Checkout SCM”阶段。如果是这样,您可以通过关闭此功能并手动检查源代码来解决您的问题,如下所示:
pipeline {
agent { label 'docker' }
options {
skipDefaultCheckout true // this is how you avoid the 'Declarative: Checkout SCM' stage
}
stages {
stage('commit_stage') {
steps {
lock('some_lock') {
checkout scm // this is how you replicate what 'Declarative: Checkout SCM' does as a step
echo 'build stuff here'
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
860 次 |
| 最近记录: |