[英]Jenkins declarative pipeline create custom workspace for parallel builds
[英]Jenkins declarative pipeline parallel builds
我需要有兩個與jenkins聲明式管道並行運行的構建。 為了避免腳本化管道中的構建工作空間之間發生沖突,可以使用以下構造:
lock('some_lock') {
checkout git 'gitrepo'
build
}
在聲明性管道中,不會直接調用checkout步驟,因此即使我們像這樣進行鎖定,
steps {
lock('some_lock') {
build here ongoing
}
}
我們可能會遇到以下情況:構建A正在構建,構建B正在等待鎖定,但它仍將執行檢出,因為在聲明性管道中,您無需指定檢出何時發生。 可以避免嗎?
我知道理論上詹金斯在這種情況下不應該使用相同的工作空間。 但不幸的是,它有時會發生。
我認為聲明式管道中遇到的問題是默認情況下自動發生的“聲明式:簽出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'
}
}
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.