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

在Jenkins中使用pollSCM和扫描多分支管道触发器有什么区别?

黄英韶
2023-03-14

我一直在使用Jenkins,我看到了很多管道示例(声明性示例),我还看到一些使用Jenkins文件中的pollSCM属性来触发构建,如下所示:

triggers {
        pollSCM('H/5 * * * *')
}

然而,我在配置多分支管道时看到了这个扫描多分支管道触发器选项。我不知道这两者有什么区别。

我遇到了所有这些问题,因为我面临着为同一作业触发两个构建的情况,我认为这是因为我配置了这两个选项。

谁能帮我理解一下这个区别?

非常感谢。

共有2个答案

郦祺
2023-03-14

我想PololSCM一定是Jenkins的插件

https://wiki.jenkins.io/display/JENKINS/PollSCM插件

多分支管道:这是管道的类型,jenkins扫描并从存储库中的所有分支中拉取,因此当在分支中签入某些代码时,构建将自动触发(如果您已配置它)

华凌
2023-03-14

“扫描多分支管道”触发器将扫描存储库中的新分支和现有分支中的更改。默认情况下,它将为所有已更新的分支触发新构建。但是,在多分支作业配置中,可以对特定或所有分支禁用此自动触发器。但是,请注意,您必须为存储库设置web挂钩,以便Jenkins收到任何更改的通知。由于钩子的设置既取决于用于签出Jenkinsfile的Jenkins插件,也取决于Git服务器,因此您必须相应地进行查找。

pollSCM触发器是特定于分支的。在Jenkinsfile中,您可以为不同的分支配置不同的选项。此选项永远无法触发分支的第一个生成,因为它至少需要一个生成,因此执行属性步骤并设置pollSCM选项。也就是说:这里的任何更改只会在下一个构建之后生效。

您可以通过两种方式使用pollSCM触发器:

  • Real polling. That is: Tell Jenkins to check the repository for changes in certain time intervals.
  • Waiting for notification by some repository hook. For this you'd need to
    1. Keep the string passed to pollSCM empty:
      triggers {
          pollSCM('')
      }
      

      因此,如果可能的话,我建议坚持使用基于多分支扫描的触发器。然而,在某些特殊情况下(例如,如果新分支上的第一个生成永远不会自动生成),使用轮询SCM功能可能仍然有用。在这种情况下,您可能需要根据需要禁用自动触发器。

      最后但并非最不重要的一点是,轮询SCM功能可能使用与扫描多分支管道不同的插件,例如用于Bitbucket的插件。对于位桶,多分支触发器稍微灵活一些,与普通位桶触发器相比,允许在更多事件上触发构建。

 类似资料:
  • 是否可以从另一个作业触发Jenkins多分支管道的立即扫描操作?我在将旧版本的Gitlab与Jenkins中的管道作业集成时遇到了某些问题,并遇到了这样的解决方法。 或者,现在可以使用notifyCommit web钩子触发扫描多分支管道吗? 这样做的目的是每当Git存储库中发生更改时扫描多分支管道,以便在这样的更改后检测到新的分支。另一个我无法以其他方式实现的目的(除了对我来说非常邪恶的每个分支

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

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

  • 问题内容: 我开始创建我的管道多分支环境,但是我遇到了一个问题。 我是否可以仅通过Jenkinsfile运行构建扫描以检测分支,而无需执行管道? 我的项目有不同的分支,当我从父管道多分支启动构建扫描时,我不想要所有带有Jenkinsfile的分支的所有子管道。 感谢您的帮助! 问题答案: 在“ 分支源” 部分,您可以添加一个名为“抑制自动SCM触发”的属性。 这样可以防止Jenkins使用。

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

  • 我不确定我问这个问题的方式是否正确。当我触发多分支管道作业并在Jenkinsfile中执行“checkout scm”时,它是签出pull请求还是主pull请求?