概要
CircleCI2.0の機能と .circleci/config.yml の書き方についてメモ
構造
ざっくり書くとこんな感じ
-
jobs-
< job name >environmentmachinebranchessteps
-
-
workflows-
< work_flow_name >triggersjobs
-
workflow
job をいつどの順番で実行するかを定義できます
triggers
workflow_name に定義した workflow を cron で実行する時間の指定ができます
また、 branches を指定して、実行するブランチ絞ったり、除外したりすることもできます
jobs
workflow_name に定義した job の実行する順番の指定ができます
また、指定した job に対し、以下の属性を持たせることができます
| 属性 | 説明 |
|---|---|
| type |
approval を指定して、WEB上で手動でボタンを押さない限り job の実行が始まらないようにする |
| require | 指定した job が成功するまで job の実行が始まらないようにする |
| filters |
branches を指定して、実行するブランチ絞ったり、除外したりする |
- hold:
type: approval
requires:
- test1
- test2
- deploy:
requires:
- hold
-
jobs
environment
環境変数の定義ができます
セキュリティ上との理由でプロジェクトメンバーに見られたくない場合は Environment Variables に設定することもできます
machine
CIを動かすマシンを指定できます
branches
only や ignore を指定して、CIのビルドパイプラインを動かすブランチを絞ったり除外したりできます
詳しくは 公式ドキュメント をみてみてください
steps
job で実行する処理を順に定義できます
steps では、 run, checkout, restore_cache, deploy, store_artifacts, store_test_results, persist_to_workspace 等が定義できます
詳しくは 公式ドキュメント をみてみてください
以下、よく使う steps について紹介します
restore_cache
以前 key を指定して保存したデータを paths で指定したディレクトリに復元することができます
- restore_cache:
name: restore docker image cache
key: docker-{{ checksum "docker-compose.yml" }}
paths: ~/caches
詳しくは 公式ドキュメント をみてみてください
run
command に指定したコマンドを実行できます
テストデータの作成やテストの実行はここで指定します
save_cache
paths で指定したディレクトリ or ファイルを key を指定して保存することができます
例えば、~/caches 以下のデータを、docker-compose.ymlのchecksumの値をキーにして docker-{{ checksum "docker-compose.yml" }}
- save_cache:
- name: save docker image cache
- key: docker-{{ checksum "docker-compose.yml" }}
- paths: ~/caches
のように保存できます
また、 他のファイルの checksum を組み合わせて、
- save_cache:
- name: save docker image cache
- key: docker-{{ checksum "docker-compose.yml" }}-{{ checksum "db/schema.rb" }}
- paths: ~/caches
のようにすることもできます
key には checksum 以外にも、 .Branch, .BuildNum, .Revision, .CheckoutKey , .Environment.variableName, epoch , arch
などが指定できます
詳しくは 公式ドキュメント をみてみてください
store_artifacts
CIでの処理実行中にできた成果物を artifacts に保存して、終了後にCircleCIのWEB上からダウンロードすることができます
- store_artifacts:
path: ~/caches/dump.sql
destination: db/dump.sql
Example
公式ドキュメントの例を載せておきます
https://circleci.com/docs/2.0/configuration-reference/#example-7