web-dev-qa-db-ja.com

Bitbucket Pipelines-同じ手順の複数のブランチ

Bitbucketパイプライン内で同じステップを持つ複数のブランチを組み合わせることが可能ですか?

例:私が取り組んでいるチームは、レビューブランチに「rev」または「stageing」の2つの名前のいずれかを使用しています。どちらの方法でも、同じ手順を使用してレビューサーバーに公開します。現在、ブランチは個別に呼び出されます。

pipelines:
     branches:
          rev:
               steps:
                    - echo 'step'
          staging:
               steps:
                    - echo 'step'

しかし、それは次のようなものである可能性があります

pipelines:
     branches:
          rev|staging:
               steps:
                    - echo 'step'
21
Gery Teague

中括弧内のコンマ区切りのリストが機能するように見えます。

pipelines:
  branches:
    '{rev,staging}':
      - step:
        script:
          - echo 'step'
35
RH Becker

これは、someステップを再利用する方法の完全な例です。

image: yourimage:latest

definitions:
  services: ... # Service definitions go there
  steps:
    - step: &Test-step
        name: Run tests
        script:
          - npm install
          - npm run test
    - step: &Deploy-step
        name: Deploy to staging
        deployment: staging
        script:
          - npm install
          - npm run build
          - fab deploy
pipelines:
  default:
    - step: *Test-step
    - step: *Deploy-step
  branches:
      master:
        - step: *Test-step
        - step:
            <<: *Deploy-step
            deployment: production
            trigger: manual

YAMLアンカーの詳細: https://confluence.atlassian.com/bitbucket/yaml-anchors-960154027.html

11
Max Malysh

rev|stagingを解釈する代わりに、フロースタイルシーケンスをキーとして使用することで、はるかに自然な方法で実装できます。

pipelines:
  branches:
    [rev, staging]:
    - step:
      script:
      - echo 'step'

これにより、引用符を付ける必要がなくなり、スペースを追加したり、余分な(末尾の)コンマを使用したりしても、意味上の違いはありません。これを処理するためにbitbucketが使用するライブラリに応じて、上記は正しく解析されてもロードされない場合があります(たとえば、PyYAMLは上記を処理できませんが、ruamel.yaml)。 この望ましい方法が実際にbitbucketで機能するかどうかを確認できませんでした。

機能する方法は2つあり、1つはアンカーとエイリアスの使い慣れたYAML機能を使用して、繰り返される(複雑な)データ構造を1回だけ提供します。

pipelines:
  branches:
    rev: &sharedsteps
    - step:
      script:
      - echo 'step'
    staging: *sharedsteps

他の可能性は、他の人が示したように、埋め込まれたコンマのあるスカラーキーのいくつかの非標準のbitbucket固有の解釈を使用することです。これに関する明確なドキュメントは見つかりませんでしたが、 globパターン は適切であると思われるため、{rev,staging}をキーとして使用できます。

これについて醜いのは、{がYAMLのフロースタイルのシーケンスインジケーターであるため、スカラーを引用する必要があることです。

pipelines:
  branches:
    "{rev,staging}":
    - step:
      script:
      - echo 'step'

上記は、BlueMが提供する修正されたステップ構文を使用して更新されました

9
Anthon

Anthonの回答へのコメントで要求されているように、これは彼の完璧なソリューションですが、Bitbucket Pipelinesが期待する正しいYAML構造を使用しています。

pipelines:
  branches:
    rev: &sharedsteps
      - step:
          script:
            - echo 'step'
    staging: *sharedsteps
3
BlueM

Bitbucket 5.8では、パイプラインを手動でトリガーできるようにするために、次の形式を使用する必要がありました。

pipelines:
  branches:
    rev,staging:
      - step:
        script:
          - echo 'step'

したがって、基本的には同じパイプラインを必要とするカンマ区切りのブランチリスト

0
Attila Csányi