Search Results for ""

YAML の記述

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

概要

YAML は、理解しやすいデータシリアライズの標準的な形式であり、あらゆるプログラミング言語で使用できます。 YAML は、別のデータシリアライズ言語である JSON の厳密なスーパーセットです。 つまり YAML では、JSON で実現可能なことがすべて行えます 。

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

YAML の記述方法

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

key: value

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

key:
  another_key: "another value"

複数行文字列

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

haiku: >
  Consider me
  As one who loved poetry
  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 は「Orbs」も開発しました。Orbs とは、設定ワークフローで使用できる設定エレメントをまとめたパッケージであり、事前設定とテストを終えた状態で使用できます。 DRY (Don’t Repeat Yourself:繰り返しを避けること) の原則を守るためのツールとして Orbs を使用すれば、設定エレメント (ジョブ、Executor、コマンド) をワークフローにすばやく簡単に組み込むことができます。 Orbs の詳細については、以下のドキュメントを参照してください。