Java 如何在多分支中触发bitbucket管道

Java 如何在多分支中触发bitbucket管道,java,maven-3,git-branch,bitbucket-pipelines,Java,Maven 3,Git Branch,Bitbucket Pipelines,我在bit bucket account下有一个存储库,该存储库有以下4个分支: - master - API - Admin - Web 我在主分支下只有一个比特桶管道.yml,类似于: image: maven:3.5.0-jdk-7 pipelines: branches: API: - step: caches: - maven script: - mvn install 因此,我

我在bit bucket account下有一个存储库,该存储库有以下4个分支:

- master 
- API
- Admin
- Web
我在
主分支下只有一个
比特桶管道.yml
,类似于:

image: maven:3.5.0-jdk-7

pipelines:
  branches:
    API:
     - step:
        caches:
          - maven
        script: 

           - mvn install
因此,我预计,每当API分支发生任何推送时,都会触发此管道,但事实上,除非推送到主分支,否则不会发生,唯一的出路是将同一文件也放在API分支下,尽管文档中说它只有一个副本位于repo root
主分支下,那么我怎样才能实现这个plz呢

如果我需要在所有分支中放置相同的管道文件,我认为这完全是一种嘲笑,那么任何一个plz可以澄清这一点吗?
提前谢谢

如果在
master
中只有
bitbucket pipelines.yml
,那么当您按下
API
时,就没有
bitbucket pipelines.yml
,因此不会运行管道。就这么简单。您提到的文档中的“仅一个副本”语句对我来说没有太大意义,因为YAML文件只是在Git中,因此是依赖于分支的,即
bitbucket pipelines.yml
是一个与任何其他文件类似的文件,在分支方面没有任何“特殊”之处

然而,我明白了为什么您会感到困惑——为什么只有一个单独的配置文件来指定每个分支的行为,而每个分支中只能有一个特定于分支的配置?我认为这背后的基本原理是,配置通常非常相似。例如,大多数回购协议都会有分支机构,如
develope
master
,它们可能只在部署位置不同。在分支中有不同的文件将更难处理

在您询问:是之前,您可以配置2+个分支来执行相同的操作。至少有两种可能的语法,最简单的是:

pipelines:
  branches:
    '{develop,master,release/*}':
      - step:
          script:
            - echo $BITBUCKET_BRANCH

如果在
master
中只有
bitbucket pipelines.yml
,那么当您按下
API
时,就没有
bitbucket pipelines.yml
,因此不会运行管道。就这么简单。您提到的文档中的“仅一个副本”语句对我来说没有太大意义,因为YAML文件只是在Git中,因此是依赖于分支的,即
bitbucket pipelines.yml
是一个与任何其他文件类似的文件,在分支方面没有任何“特殊”之处

然而,我明白了为什么您会感到困惑——为什么只有一个单独的配置文件来指定每个分支的行为,而每个分支中只能有一个特定于分支的配置?我认为这背后的基本原理是,配置通常非常相似。例如,大多数回购协议都会有分支机构,如
develope
master
,它们可能只在部署位置不同。在分支中有不同的文件将更难处理

在您询问:是之前,您可以配置2+个分支来执行相同的操作。至少有两种可能的语法,最简单的是:

pipelines:
  branches:
    '{develop,master,release/*}':
      - step:
          script:
            - echo $BITBUCKET_BRANCH

已更新

如果没有文档参考,很难确定,但要么文档当时有错误(可能现在已更正),要么您误读了有关主分支的“仅一份”声明

如果满足以下两个条件,Bitbucket将触发内置管道:

  • bitbucket-pipelines.yml文件需要存在于推送到bitbucket的特定分支中,并且
  • 分支:
    节点下的嵌套块与该分支名称匹配,或者在bitbucket-pipelines.yml文件中定义了
    默认:
    节点块
  • 对于与
    分支:
    节点块下定义的任何“分支”不匹配的所有分支,将执行
    默认
    节点块下定义的步骤。因此,为了展示一个使用分支的示例,下面的yaml文件将为API分支(包括您创建且未明确定义的任何后续分支)执行
    default
    步骤,前提是该分支仍然满足上述条件#1

    pipelines:
      default:
        - step:
          script:
            - echo $BITBUCKET_BRANCH
      branches:
        master:
          - step:
            script:
              - echo $BITBUCKET_BRANCH
      branches:
        '{Admin,Web}':
          - step:
            script:
              - echo $BITBUCKET_BRANCH
    

    您将在中找到一个漂亮的小动画gif,它进一步说明了它的工作原理。

    更新了

    如果没有文档参考,很难确定,但要么文档当时有错误(可能现在已更正),要么您误读了有关主分支的“仅一份”声明

    如果满足以下两个条件,Bitbucket将触发内置管道:

  • bitbucket-pipelines.yml文件需要存在于推送到bitbucket的特定分支中,并且
  • 分支:
    节点下的嵌套块与该分支名称匹配,或者在bitbucket-pipelines.yml文件中定义了
    默认:
    节点块
  • 对于与
    分支:
    节点块下定义的任何“分支”不匹配的所有分支,将执行
    默认
    节点块下定义的步骤。因此,为了展示一个使用分支的示例,下面的yaml文件将为API分支(包括您创建且未明确定义的任何后续分支)执行
    default
    步骤,前提是该分支仍然满足上述条件#1

    pipelines:
      default:
        - step:
          script:
            - echo $BITBUCKET_BRANCH
      branches:
        master:
          - step:
            script:
              - echo $BITBUCKET_BRANCH
      branches:
        '{Admin,Web}':
          - step:
            script:
              - echo $BITBUCKET_BRANCH
    

    您将在中找到一个漂亮的小动画gif,它进一步说明了它的工作原理。

    然后我必须将此文件放入master、developer和release分支,对吗?正确。或者更准确地说:在使用特性分支时(假设Git Flow),通常的方法是将其添加到
    develope
    并使其工作。然后,当创建一个功能分支时,它将自动位于功能分支中,稍后,当合并来自
    dev的更改时