YAML アンカー

このページの内容

お困りですか?

アトラシアン コミュニティをご利用ください。

コミュニティに質問

robotsnoindex
robotsnoindex

bitbucket-pipelines.yml ファイルでセクションを繰り返している場合、YAML アンカーが役立つ可能性があります。これにより、作業を減らし、一括更新を簡単に行うことができます。

アンカーとエイリアス

これには 2 つの部分があります。

  • 構成の単位を定義するアンカー '&'
  • その単位を別の場所で参照するために利用するエイリアス '*'

以下の例では、再利用できる複数の行を持つステップ エンティティを &build-test を使用して定義し、それを再利用するエイリアス *build-test があります。

definitions: 
  steps:
    - step: &build-test
        name: Build and test
        script:
          - mvn package
        artifacts:
          - target/**

pipelines:
  branches:
    develop:
      - step: *build-test
    master:
      - step: *build-test

YAML アンカーおよびエイリアスに "["、"]"、"{"、"}"、"," 文字を含めることはできません。

値のオーバーライド

ほとんどが同じで、1 つの小さな変更のみが必要なコード ブロックが必要な場合はどうすればよいでしょうか。

'<<:' 文字でオーバーライドを使用して値を追加したり、既存の値をオーバーライドしたりすることができます。

上記の例にビルドすることで、ステップの name 値をオーバーライドできます。

pipelines:
  branches:
    develop:
      - step: *build-test
    master:
      - step: 
          <<: *build-test
          name: Testing on Master

パイプラインの結果ページでは、開発ブランチで実行していたパイプラインのステップ名が "Build and test"、master ブランチで実行していたパイプラインのステップ名が "Testing on master" となっています。

まとめ

上記の手法を使用して、構成を作成するために必要な労力を軽減しし、変更が発生したときに維持できます。

すべての YAML と同様、インデントが正確であることを確認する必要があります。アンカーを使用している場合は得にご注意ください。


オーバーライドと複数のアンカーを一緒に使用する方法を示す、少し長い例を紹介します。

definitions: 
  steps:
    - step: &build-test
        name: Build and test
        script:
          - mvn package
        artifacts:
          - target/**
    - step: &deploy
        name: Deploy
        deployment: test
        script:
          - ./deploy.sh target/my-app.jar

pipelines:
  branches:
    develop:
      - step: *build-test
      - step: *deploy
    master:
      - step: *build-test
      - step:
          <<: *deploy
          deployment: production
          trigger: manual
最終更新日 2020 年 6 月 24 日

この内容はお役に立ちましたか?

はい
いいえ
この記事についてのフィードバックを送信する
Powered by Confluence and Scroll Viewport.