首页 文章

如何从Jenkins的建筑中排除git分支

提问于
浏览
36

这是我目前为项目设置的Jenkins:

  • 一个作业运行所有开发分支

  • 一个作业运行所有拉取请求

  • 一个作业只运行主分支

  • 一个作业仅在主要通过时才进行自动发布

这种设置使我可以在开发过程中持续自动交付以及持续反馈 . 前3个工作也运行所有测试和覆盖报告 .

问题是我找不到从“所有开发分支”工作中排除主分支的方法 . 每次合并一个pull-request时,它都会不必要地构建master两次 .

有谁知道如何从詹金斯的工作中排除一个分支?

ps:我正在使用Git和Github插件 . 我的项目存储在Github上 .

4 回答

  • 13

    您可以选择“反向”策略来定位分支以构建 .

    查看Jenkins的工作配置,

    • "Source Code Management"部分(选择"Git")

    • 其他行为

    • 单击"Add"按钮

    • 选择"Strategy for choosing what to build"

    • 在组合框中选择"Inverse"策略 .

    (不要忘记用“master”填写“Branches to build”文本字段)

    另见附件截图图片:


    enter image description here

  • 58

    您可以使用 :^(?!.*master).*$ 作为Jenkins中的分支说明符,并且将构建除master之外的所有分支 . 见答案:https://stackoverflow.com/a/18709097/444639

  • 0

    您可以使用Repository,按名称过滤(通配符) . 这里只提供:^(?! . master) . $ .
    skipmaster1

    或者您可以使用通配符过滤器分支并在那里排除master:
    skipmaster2
    因为它成功扫描但后来从组织文件夹扫描中删除,以防您使用github或bitbucket团队项目 .
    enter image description here

  • 1

    @Mike的答案对大多数人都有效,但请注意 :^(?!.*master).*$ 将匹配任何不包含master的东西,即也不会构建名为 feature/add-remaster-functionality 的分支 . 更好的方法是 :^(?!.*^master$).*$ ,它只匹配master,甚至 :^(?!.*^(master|origin/master)$).*$ ,它将匹配master或origin / master .

相关问题