当前位置: 首页 > 知识库问答 >
问题:

Jenkins多分支管道不考虑Jenkins文件中的静默期

暴招
2023-03-14

我使用声明Jenkinsfile与安静期:

  options {
    quietPeriod(180)
    // more options
  }

工具版本:

  • 詹金斯-2.190.3
  • 管道多分支插件-2.21
  • 管道声明性插件-1.4.0

现在的问题是,在GitHub SCM更改上,独立管道项目尊重静默期,但多分支管道项目不尊重静默期。它也不返回错误,只是在接收webhooks时立即触发构建。

我知道詹金斯-37588在这方面的公开问题。

将上游包装作业与构建(作业:'myjob',quietPeriod:180)一起使用是不可行的,因为我有几百个多分支项目。

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

共有2个答案

彭海阳
2023-03-14

执行此操作后,多分支管道遵守安静期:

>

  • 在多分支管道中,配置

    在Jenkins文件中,将生成触发器设置为“轮询SCM”,但不要指定计划。如果由web钩子触发,则仅当SCM发生更改时才会运行。(我认为如果您正在使用GitHub,您可以选择“GitHub钩子触发器用于GITScm轮询”)

    在Jenkins文件中,设置安静时段。

    在SCM上配置web钩子。

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

  • 江温书
    2023-03-14

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

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

    此外,已经有一个开放的拉请求这个问题:https://github.com/jenkinsci/branch-api-plugin/pull/190

     类似资料:
    • 对于一个新项目,我想使用Jenkins CI的新管道功能。我们的Git存储库中有几个分支,应该以同样的方式进行测试。它还应该自动跟踪和处理新的分支。因此,我创建了一个多分支管道作业。但它的配置有两个问题: 1) 为了被Jenkins标记为有效,分行需要一个“Jenkinsfile”。如果这不存在,詹金斯将忽略该分支。有没有办法标记与模式匹配的所有分支,而不需要在其中包含此文件? 2) 每个分支都应

    • 我正在努力使用Jenkins 2.1多分支管道,在这里,我从同一个git存储库构建了多个工件。一些工件是独立的,应该根据它们各自目录中的更改触发构建。有些是依赖的,应该由先前的步骤/构建触发。 存储库有一个控制整个管道的文件。Jenkins多分支管道作业会在所有更改时触发(无其他行为)。 我不知道如何在目录dirA发生变化时触发工件A的构建。 git回购协议中的Jenkins文件file:///r

    • 我对使用Jenkins文件和GIT插件的Jenkins多分支pipleline有一个问题。 问题是,每次向暂存分支推送都会触发master管道。所需的行为是,推送到暂存分支仅触发用于暂存的管道,而推送到主分支仅触发主管道 这是我的詹金斯档案 我将分享一些日志:这是主分支的日志 这是主分支的日志,但只有暂存有一个新的提交: 注意“已发现更改”,即使主分支上的头未更改 詹金斯·弗。2.190.1 Gi

    • 我有git monorepo与不同的应用程序。目前,我有一个Jenkinsfile在根文件夹,其中包含应用程序的管道all。当提交只更改了一个应用时,执行所有应用的完整管道非常耗时。 我们使用类似GitFlow的方法进行分支,因此Jenkins中的多分支管道作业非常适合我们的项目。 我正在寻找一种方法,在詹金斯有几个工作,每一个将被触发,只有当适当的应用程序的代码被改变。 我的完美解决方案如下所示

    • 是否可以扫描多分支管道以检测具有Jenkinsfile但不执行管道的分支? 我的项目有不同的分支,当我从父管道多分支启动构建扫描时,我不希望所有带有Jenkinsfile的子管道分支都开始执行。

    • 我有一个参数化的Jenkins多分支管道,使用GitHub repo作为Jenkins文件和一些脚本的源。管道被配置为在Webhook上触发分支和拉请求,但我还希望只对主分支使用参数化的cron触发器,特别是在工作日每4小时一次。 我使用声明性管道语法,但如果必要,我愿意使用脚本化管道。 我使用参数化调度器插件来实现带有参数的cron触发器。 这个管道示例捕获了我试图实现但不支持的内容: 这项功能