Jenkins多分支管道不遵守Jenkinsfile中的静默期

时间:2020-01-18 16:57:35

标签: jenkins jenkins-pipeline wait jenkins-declarative-pipeline multibranch-pipeline

我正在使用一个声明的Jenkins文件,该文件的安静时间是

  options {
    quietPeriod(180)
    // more options
  }

工具版本:

  • Jenkins-2.190.3
  • Pipeline多分支插件-2.21
  • 管道声明式插件-1.4.0

现在的问题是,在GitHub SCM更改上,一个独立的管道项目尊重静默期,而多分支管道项目则不这样做。它也不会返回错误,只会在接收到Webhooks时立即触发构建。

我知道与此有关的未解决问题JENKINS-37588

由于我有数百个多分支项目,因此无法在build(job: 'my-job', quietPeriod: 180)中使用上游包装器作业。

有人能找到解决方案或可行的替代方案吗?任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:3)

我认为-不幸的是-目前这是不可能的。

这里有未解决的票证:https://issues.jenkins-ci.org/browse/JENKINS-37588

此问题也已经有一个公开拉取请求:https://github.com/jenkinsci/branch-api-plugin/pull/190

答案 1 :(得分:0)

执行此操作后,多分支流水线尊重安静期:

  • 在多分支管道中,配置>分支源>属性策略>添加属性>“禁止自动SCM触发”

  • 在Jenkinsfile中,将构建触发器设置为“轮询SCM”,但不指定时间表。如果由Web挂钩触发,这仅会由于SCM更改而运行。 (我认为,如果您使用的是GitHub,则可以选择“用于GITScm轮询的GitHub挂钩触发器”)

  • 在Jenkinsfile中,设置静默期。

  • 在SCM上配置Web挂钩。

    pipeline{
          agent{label "Linux" }
    
              options {
                 quietPeriod(180)
                // more options
              }
    
              triggers {
                  pollSCM ''
              }
    
              stages{
                  stage("Test"){
                      steps{
                          echo "Test"
                      }
                  }
              }
          }