YAML アンカー

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

アンカーとエイリアス

これには次の 2 つの側面があります。

  • 構成の単位を定義するアンカー "&"

  • その単位を別の場所で参照するために利用するエイリアス "*"

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

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 definitions: steps: - step: &build-test name: Build and test script: - mvn package artifacts: - target/** pipelines: branches: develop: - step: *build-test main: - step: *build-test

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

値のオーバーライド

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

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

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

1 2 3 4 5 6 7 8 pipelines: branches: develop: - step: *build-test main: - step: <<: *build-test name: Testing on Main

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

まとめ

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

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

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

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 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 main: - step: *build-test - step: <<: *deploy deployment: production trigger: manual

 

その他のヘルプ