【问题标题】:Jenkins declarative pipeline parallel buildsJenkins 声明式管道并行构建
【发布时间】:2017-12-03 01:31:42
【问题描述】:

我需要让两个构建与 jenkins 声明式管道并行运行。 为了避免脚本管道中构建工作区之间的冲突,可以使用以下构建:

lock('some_lock') {
      checkout git 'gitrepo'
      build 
}

在声明式管道中,不直接调用 checkout 步骤,所以即使我们这样做锁,

steps {
    lock('some_lock') {
           build here ongoing
    }
}

当构建 A 正在构建时,构建 B 正在等待锁定,但它仍会执行签出,因为在声明性管道中您没有指定何时签出。可以避免吗?

我知道理论上 Jenkins 不应该在这种情况下使用相同的工作空间。但不幸的是,它有时会发生。

【问题讨论】:

    标签: jenkins jenkins-pipeline


    【解决方案1】:

    我认为声明式管道中阻碍您的部分是默认情况下自动发生的“声明式:检查 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'
            }
          }
        }
      }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多