YAML の記述

Last updated
Tags クラウド Server v3.x Server v2.x

CircleCI の設定に使用する YAML の最も重要な機能について説明します。

概要

YAML は、読みやすい形式のデータシリアル化の標準であり、あらゆるプログラミング言語で使用できます。 YAML は、別のデータ標準化言語である JSON の厳密な上位版です。 つまり、JSONでできることはすべてできる…それ以上のことができるということです。

CircleCI の設定は、~/.circleci/config.yml にある単一の YAML ファイルに格納されています。 ここでは、~ はプロジェクトのディレクトリのルートです。 </code> CircleCI の作業の大部分はこのファイルで行われるため、YAML 形式の基礎を理解することが重要になります。

YAML の記述方法

YAML ファイルの基本構造はハッシュ マップで、1 つ以上のキーと値のペアで構成されます。

key: value

ネストされたキーをインデントすることで、別のキーと値のペアを値として設定できます。

key:
  another_key: "another value"

複数行の文字列

値の文字列が複数行にわたる場合は、> 文字を使用します。 これは特に、長いコマンドを記述する場合に便利です。

haiku: >
  Please consider me
  As one who loved poetry
  Oh, and persimmons.

注: 複数行の文字列を記述する場合、引用符は必要ありません。

シーケンス

キーと値はスカラーに限定されません。 スカラーをシーケンスにマップすることもできます。

scalar:
  - never
  - gonna
  - give
  - you
  - up

シーケンス内の項目をキーと値のペアで記述することもできます。

simulation:
  - within: "a simulation"
  - without:
      a_glitch: "in the matrix"

注: シーケンス内の項目をキーと値のペアで記述する場合は、正しくインデントするように注意してください。

アンカーとエイリアス

DRY (Don’t Repeat Yourself: 繰り返しを避ける) の原則に基づいて config.yml を作成するために、アンカーとエイリアスを使用できます。 アンカーは & 文字、エイリアスは * 文字で識別されます。

song:
  - &name Al
  - You
  - can
  - call
  - me
  - *name

上記のリストを YAML パーサーで読み取ると、次のようなリテラル出力が得られます。

song:
  - Al
  - You
  - can
  - call
  - me
  - Al

マップのマージ

アンカーとエイリアスはスカラー値に対して機能しますが、マップまたはシーケンスを保存するには、<< を使用してエイリアスを挿入します。

default: &default
  school: hogwarts

harry:
  <<: *default
  house: gryffindor

draco:
  <<: *default
  house: slytherin

複数のマップをマージすることもできます。

name: &harry_name
  first_name: Harry
  last_name: Potter

address: &harry_address
  street: 4, Privet Drive
  district: Little Whinging
  county: Surrey
  country: England

harry_data:
  <<: [*harry_name, *harry_address]

注: YAML リポジトリの問題に記載されているように、マップはマージできますが、シーケンス (配列またはリストとも言う) はマージできません。

さらに複雑な例は、こちらのGist を参照してください。

関連項目

YAML には他にも機能がありますが、YAML の基礎について理解し、CircleCI の設定ファイルを簡潔に保つには、上記の例で十分です。 さらに知識を深めたい場合は、以下の資料をご活用ください。

  • キーと値の具体的な例については、「CircleCI の設定」を参照してください。
  • config.yml が有効な YAML かどうかがわからない場合は、バリデーション ツールを使って実行してください。

CircleCI は「Orb」も開発しています。 Orb は、事前設定とテストを終えた状態の設定エレメントをまとめたパッケージで、お客様が設定したワークフローで使用することができます。 Orb を使えば、DRY (Don’t Repeat Yourself: 繰り返しを避ける) の原則により、設定エレメント (ジョブ、Executor、コマンド) をワークフローにすばやく簡単に組み込むことができます。 Orb の詳細については、以下のドキュメントを参照してください。



ドキュメントの改善にご協力ください

このガイドは、CircleCI の他のドキュメントと同様にオープンソースで、GitHub で使用できます。 ご協力いただき、ありがとうございます。