【问题标题】:BitBucket+Jenkins: Trigger build only when specific branch is changedBitbucket + Jenkins:仅在特定分支更改时触发构建
【发布时间】:2015-02-07 21:19:07
【问题描述】:

以下是该问题的据称解决方案,尽管它看起来确实是一种解决方法,而不是一个确定的解决方案。有没有一种方法,通过作业配置或 bitbucket 挂钩配置,我可以将我的作业设置为仅在特定分支被推送到时运行构建?

Is it possible to trigger Jenkins from one specific branch only?

自发布该问题以来已经大约一年了,我希望有一些插件更新可以实现这一点,而无需上述链接中所需的额外工作,或者也许我总是有一种简单的方法'我只是没看到。

【问题讨论】:

    标签: git jenkins hudson bitbucket


    【解决方案1】:

    正如 @Ryan Taylor 所说,您可以使用 Bitbucket-Plugin:

    • 在您的 Jenkins 上安装 Bitbucket Plugin
    • 将普通的 Post 作为 Hook 添加到您的 Bitbucket 存储库(Settings -> Hooks)并使用以下 url:

    https://YOUR.JENKINS.SERVER:PORT/bitbucket-hook

    • 如下配置您的 Jenkins 项目:
      • 构建触发器下启用将更改推送到BitBucket时构建
      • 源代码管理下选择GIT;输入您的凭据并定义要构建的分支(如 **feature/*

    这样我就有了三个构建项目,一个用于所有功能,一个用于开发,一个用于发布分支。

    最好的是,您不必为新的 Jenkins 项目添加新的钩子。

    【讨论】:

    • 好的!当您将更改集推送到功能分支时,这是否会自动触发您的开发或发布分支作业?如果我遵循这一点,我似乎会想到它。如果插件对触发工作的分支有限制,我会非常喜欢它。 ://
    【解决方案2】:

    您应该可以使用Generic Webhook Trigger Plugin。您可以使用“可选过滤器”功能仅触发您想要的分支。

    您需要使用 JSONPath,这需要您了解从 Bitbucket 使用 webhook 发送的 JSON 的结构。

    看看this example 与 GitLab 一起使用的位置可能会有所帮助。

    【讨论】:

      【解决方案3】:

      上面建议的解决方案会比我自己的更好,但我不认为 Bitbucket 插件允许特定于分支的触发器。

      来自 Bitbucket 插件文档,

      在每次提交时,将触发所有启用了“将更改推送到 BitBucket 时构建”选项的作业。

      这是一种霰弹枪方法,显然是浪费。

      我通过将一个小型 Web 应用程序部署到托管我的 jenkins 实例的同一应用程序服务器解决了这个问题,该实例解析了 bitbucket 发送的 json 帖子内容并有选择地触发特定于分支的钩子。

      代码简洁易懂,很容易修改以满足自己的需求;但是,值得注意的是,我并没有着手为其他人创建通用解决方案。无论如何,作为起点,它可能对您有用。

      https://github.com/Hillrunner2008/bitbucket-hook-manager

      【讨论】:

        【解决方案4】:

        查看BitBucket Plugin

        我之前没有使用 BitBucket 设置它,但我已经使用 GitHub 设置了相同的功能。

        我使用通用 Git Plugin 将构建附加到我的 git 存储库,并带有 ssh 密钥。然后我选择“将更改推送到 GitHub 时构建”选项,我认为这是 GitHub Plugin 的一部分,它主要在 Jenkins 配置而不是项目配置中配置。 BitBucket 插件应该具有类似的功能/挂钩。

        【讨论】:

        • 你在 github 插件的哪个位置指定要构建哪个分支?我没有在这个 bitbucket 的作业配置中看到它。 PS感谢您指出该插件,看来我的解决方案我只需要弄清楚设置
        • 在源代码管理部分(这不应该是 BitBucket 插件的一部分),您将把作业附加到存储库和 Refspec。然后,您只需要确保选择了正确的构建触发器。还需要设置整体 jenkins 配置,以将 BitBucket 插件绑定到您的 bitbucket 服务器
        【解决方案5】:

        对于相同的场景,我在构建触发器中使用 Poll SCM 选项

        我们需要在 git 区域中提供 ref 为+refs/heads/develop:refs/remotes/origin/develop

        这里develop是分支名称

        并轮询 SCM 计划 = */1 * * * * 每 1 分钟

        只有在develop分支发生变化时才会触发

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-09-30
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-10-17
          相关资源
          最近更新 更多