Overview
CircleCIはこれまで業務で何気なくつかっていて、config.ymlくらいは難なく読めるわけだが、いざ自分で書いてみるとなると話は別。ネットでぐぐってみると新しい概念が登場していたりしたのでそれをまとめる。
Executors
何かと定義箇所が重複してしまう実行環境をまとめて定義することが可能。
executors:
default:
working_directory: ~/workspace
docker:
- image: circleci/node:8.11.4
呼び出すときはこんな呼び出す。nameがexecutorsで定義した名前ね。
build:
executor:
name: default
Command
ジョブ内で定義するStepをコマンドとして切り出すことができる。 定義箇所がまとまることでだいぶ見やすくはなるし、定義量が減らせる
save_npm:
steps:
- save_cache:
name: Cache npm dependencies
key: npm-{{ checksum "package-lock.json" }}-{{ .Environment.CACHE_VERSION_NPM }}
paths:
- ~/workspace/node_modules
Parameter
ワークフローのでジョブを実行する際に、パラメータを渡すことができるのがこの機能 後述するが、この機能とConditional Stepを組み合わせるといい感じで、コード量が減らせる
定義はこんな感じ
commands:
echo:
parameters:
val:
type: string
steps:
- echo:
val: << parameters.val >>
Conditional Step
Stepsの中で条件分岐できる。地味に便利ではあるがやりすぎると可読性がさがるので気をつける必要がある
steps:
- run: echo begin steps
- when:
condition: << parameters.run_test >>