Bitbucket Pipelines在分支机构之间共享一些步骤

时间:2017-08-08 02:15:14

标签: bitbucket bitbucket-pipelines

是否可以在分支之间共享步骤并仍然运行分支特定步骤?例如,开发和发布分支具有相同的构建过程,但上传到单独的S3存储桶。

pipelines:
  default:
    - step:
        script:
          - cd source
          - npm install
          - npm build
  develop:
    - step:
        script:
          - s3cmd put --config s3cmd.cfg ./build s3://develop

  staging:
    - step:
        script:
          - s3cmd put --config s3cmd.cfg ./build s3://staging

我看过这篇文章(Bitbucket Pipelines - multiple branches with same steps),但它的步骤相同。

5 个答案:

答案 0 :(得分:13)

答案 1 :(得分:9)

虽然它尚未得到官方支持,但您现在可以预先定义步骤 当我an issue在分支子集中运行相同的步骤时,我从bitbucket工作人员那里获得了这个提示。

 definitions:
  step: &Build
    name: Build
    script:
      - npm install
      - npm build

pipelines:
  default:
    - step: *Build
  branches:
    master:
      - step: *Build
      - step:
          name: deploy
          # do some deploy from master only

它并不完美,但它总比没有好

答案 2 :(得分:3)

我认为Bitbucket不能这样做。您可以使用一个管道并检查分支名称:

pipelines:
  default:
    - step:
        script:
          - cd source
          - npm install
          - npm build 
          - if [[ $BITBUCKET_BRANCH = develop ]]; then s3cmd put --config s3cmd.cfg ./build s3://develop; fi
          - if [[ $BITBUCKET_BRANCH = staging ]]; then s3cmd put --config s3cmd.cfg ./build s3://staging; fi

最后两行只会在指定的分支上执行。

答案 3 :(得分:1)

显然它正在进行中。希望很快就可以使用。

Preparing for Native Library Linking Changes in Android N

答案 4 :(得分:1)

您可以使用YAML Anchors定义和重复使用步骤。

  • 锚定c来定义大量配置
  • 别名c在其他地方引用该块

然后将源分支保存在名为a的默认variable

您还需要将构建结果(在本例中为b文件夹)从一个步骤传递到下一个步骤,这是通过artifacts完成的。

将这三个部分结合在一起将为您提供以下配置:

&

您现在还可以使用referenced post中提到的全局模式,并一次性使用*BITBUCKET_BRANCH分支的步骤:

build/