CircleCIでYAML Anchors & Aliasesを使う
CircleCIのYAMLを書くときに、同じ記述をjob毎に書くのがめんどうだったのでYAML Anchors & Aliasesを使ってみました。 参考 https://circleci.com/blog/ci […]
広告ここから
広告ここまで
目次
CircleCIのYAMLを書くときに、同じ記述をjob毎に書くのがめんどうだったのでYAML Anchors & Aliasesを使ってみました。
参考
https://circleci.com/blog/circleci-hacks-reuse-yaml-in-your-circleci-config-with-yaml
背景
Docker Hubが匿名でのImage Pullに対して回数制限を設定するようになりました。
https://www.docker.com/pricing/resource-consumption-updates
Circle CI側でも認証付きでのpullを推奨するとのことなので、これをjobごとに設定しています。
2020年11月1日から、Docker Hub で匿名ユーザーに対する発信元 IP に基づいたプル回数制限が導入されます。運用中のサービスでの混乱を避けるために、Docker Hub から認証付きでプル操作を行うようにすることをお勧めします。認証は設定ファイルで行えます(Docker の認証付きプルの使用を参照)。
https://circleci.com/docs/ja/2.0/docker-hub-pull-through-mirror/
YAML Anchors & Aliasesを使わない場合
docker
部分に認証まわりを足したために、コードが冗長になってきます。
jobs:
setup:
working_directory: ~/repo
docker:
# specify the version you desire here
- image: circleci/node:lts
auth:
username: $DOCKERHUB_USERNAME
password: $DOCKERHUB_PASSWORD
steps:
- checkout
- restore_cache:
name: Restore Yarn Package Cache
keys:
- yarn-packages-{{ checksum "yarn.lock" }}
- run: yarn
- save_cache:
name: Save Yarn Package Cache
key: yarn-packages-{{ checksum "yarn.lock" }}
paths:
- ~/.cache/yarn
- persist_to_workspace:
root: ~/repo
paths:
- ./*
test:
working_directory: ~/repo
docker:
# specify the version you desire here
- image: circleci/node:lts
auth:
username: $DOCKERHUB_USERNAME
password: $DOCKERHUB_PASSWORD
steps:
- attach_workspace:
at: ~/repo
- run:
name: Run Unit test
command: yarn run test:ci
YAML Anchors & Aliasesを使った場合
docker
とworking_directory
を1箇所にまとめることができました。
defaults: &defaults
working_directory: ~/repo
docker:
# specify the version you desire here
- image: circleci/node:lts
auth:
username: $DOCKERHUB_USERNAME
password: $DOCKERHUB_PASSWORD
jobs:
setup:
<<: *defaults
steps:
- checkout
- restore_cache:
name: Restore Yarn Package Cache
keys:
- yarn-packages-{{ checksum "yarn.lock" }}
- run: yarn
- save_cache:
name: Save Yarn Package Cache
key: yarn-packages-{{ checksum "yarn.lock" }}
paths:
- ~/.cache/yarn
- persist_to_workspace:
root: ~/repo
paths:
- ./*
test:
<<: *defaults
steps:
- attach_workspace:
at: ~/repo
- run:
name: Run Unit test
command: yarn run test:ci