YAML アンカー
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