簡體   English   中英

Jenkins聲明式管道並行構建

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM