概要
CircleCI2.0の機能と .circleci/config.yml
の書き方についてメモ
構造
ざっくり書くとこんな感じ
-
jobs
-
< job name >
environment
machine
branches
steps
-
-
workflows
-
< work_flow_name >
triggers
jobs
-
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