今回解説する内容
CircleCIのAnchorとAliasの使い方について説明をします。本記事では、公式ドキュメントの内容を嚙み砕いて説明をします。
AnchorとAliasとは
Anchor(アンカー)とAlias(エイリアス)を使用すると、Circleciの設定ファイル(config.yml)の重複する行をまとめることが出来ます。重複する行をまとめることで、コードの行数を減らし、分かりやすいコードを記載することが出来るようになります。
AnchorとAliasの使い方
AnchorとAliasの使い方について、具体例をもとに説明をしていきます。
基本の使い方
Anchorは「&」、Aliasは「*」で識別されます。「&」で入力した文字を、「*」で出力することが出来ます。
以下はAnchorとAliasを使用する例です。緑色の文字の箇所でAnchorとAliasを使用しています。
class:
- &name gryffindor
- slytherin
- hufflepuff
- ravenclaw
- *name
最終行の「*name」には「gryffindor」が出力されます。上記のリストは以下のように読み込まれます。
class:
- gryffindor
- slytherin
- hufflepuff
- ravenclaw
- gryffindor
マップやシーケンスを保存する場合
マップやシーケンスを保存するには、 「<<
」 を使用してエイリアスを挿入します。
以下はマップにAnchorとAliasを使用する例です。緑色の文字の箇所でAnchorとAliasを使用しています。
default: &default
school: hogwarts
harry:
<<: *default
class: gryffindor
draco:
<<: *default
class: slytherin
「<<: *default」には「&default」で定義した「school: hogwarts」が出力されます。上記のリストは以下のように読み込まれます。
default: &default
school: hogwarts
harry:
school: hogwarts
class: gryffindor
draco:
school: hogwarts
class: slytherin
【補足】マップやシーケンスとは?
マップやシーケンスとは、項目のYAMLファイルに記載するリストのことです。
マップ(または辞書)は、キーと値のペアの集合を表します。
person:
name: John
age: 30
city: New York
シーケンス(または配列)は、要素のリストを表します。
fruits:
- apple
- banana
- orange
実際のconfig.ymlを見てみよう
AnchorとAliasについて理解することが出来たかと思いますので、CircleCIのconfig.ymlを見てみましょう。
以下は、Pythonプロジェクトのビルドとデプロイに対するCircleCIのconfig.ymlファイルです。重複する行の記載を避けるために青色の箇所でAnchorとAliasを使用しています。
version: 2.1
defaults: &defaults
working_directory: ~/project
docker:
- image: circleci/python:3.9
jobs:
build:
<<: *defaults
steps:
- checkout
- run: pip install -r requirements.txt
- run: pytest
deploy:
<<: *defaults
steps:
- checkout
- run: fab deploy
「<<: *default」には「&default」で定義した内容が出力されます。上記のリストは以下のように読み込まれます。
version: 2.1
defaults: &defaults
working_directory: ~/project
docker:
- image: circleci/python:3.9
jobs:
build:
working_directory: ~/project
docker:
- image: circleci/python:3.9
steps:
- checkout
- run: pip install -r requirements.txt
- run: pytest
deploy:
working_directory: ~/project
docker:
- image: circleci/python:3.9
steps:
- checkout
- run: fab deploy
まとめ
Anchor(アンカー)とAlias(エイリアス)を使用すると、Circleciのconfig.ymlの行数を減らすことが出来ます。認証などの重複する処理がある場合には使用してみてください。