設定ファイルの分割・結合

設定ファイルの結合は、

circleci config pack <directory-name>

で行えます。今はこの<directory-name>configということにします。

例えば、config/以下はこのような構造になります。

config
├── executors
│   └── alpine
│       ├── @docker.yml
│       └── environment.yml
├── jobs
│   └── build.yml
└── meta.yml

.ymlファイルがそれぞれ分割によって生まれたファイルです。慣れてる人にはディレクトリー構造に見覚えがあるかもしれませんがその通りで、分割と言ってもだいたいの場合は、ディレクトリー構造やファイルのベース名(environment.ymlでいうenvironment)がそのまま YAML の構造になるだけです。例えばenvironment.ymlであれば、

executors:
  alpine:
    environment:
      # `environment.yml` の中身
      

のようになります。

例外として@から始まるファイル(@docker.yml)は少し変わり、ベース名を構造化しません。つまり以下ではなく、

executors:
  alpine:
    '@docker':
      # `@docker.yml`の中身
      

こうなります。

executors:
  alpine:
    # `@docker.yml`の中身
      

どう解釈されるかが分かったので結合してみます。circleci config pack config/の結果はこうなりました。

executors:
  alpine:
    '@docker':
    - image: alpine
    environment:
      TOKEN: foobarbaz
jobs:
  build:
    executor: alpine
    steps:
    - run: ':'
version: 2.1

ちなみにjobs/build.ymlversion.ymlはそれぞれ以下でした。

executor: alpine
steps:
  - run: ":"

version: 2.1