CircleCISaaS / FaaS

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

ブックマークや限定記事(予定)など

WP Kyotoサポーター募集中

WordPressやフロントエンドアプリのホスティング、Algolia・AWSなどのサービス利用料を支援する「WP Kyotoサポーター」を募集しています。
月額または年額の有料プランを契約すると、ブックマーク機能などのサポーター限定機能がご利用いただけます。

14日間のトライアルも用意しておりますので、「このサイトよく見るな」という方はぜひご検討ください。

広告ここから
広告ここまで

Related Category posts