CircleCISaaS / FaaS

yarn.lockのchecksumを使うときには、–frozen-lockfileを添えよう

Circle CIのCacheではまったので覚書。 やりたかったこと Yarnでインストールしたnode_modulesをcacheしてjobsで使いまわしたい。 起こった問題 save_cacheでのchecksumと […]

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

Circle CIのCacheではまったので覚書。

やりたかったこと

Yarnでインストールしたnode_modulesをcacheしてjobsで使いまわしたい。

jobs:
  prepare:
    docker:
      - image: circleci/node:lts-browsers
    working_directory: ~/repo
    steps:
      - checkout
      - restore_cache:
          name: Restore Yarn Package Cache
          keys:
            - yarn-packages-{{ .Branch }}-{{ checksum "yarn.lock" }}
      - run: yarn 
      - save_cache:
          name: Save Yarn Package Cache
          key: yarn-packages-{{ .Branch }}-{{ checksum "yarn.lock" }}
          paths:
            - ~/.cache/yarn
      - save_cache:
          name: Save development dependencies
          key: dev-dep-{{ .Branch }}-{{ checksum "yarn.lock" }}
          paths:
            - node_modules/
  test:
    docker:
      - image: circleci/node:lts-browsers

    working_directory: ~/repo

    steps:
      - checkout
      - restore_cache:
          name: Restore Dev dependencies
          keys:
            - dev-dep-{{ .Branch }}-{{ checksum "yarn.lock" }}
      - run: ls -la
      - run: ls -la node_modules

起こった問題

save_cacheでのchecksumと、後方のjobでのrestore_cacheのchecksumが一致しない。

そのためnode_modulesがrestoreされずにエラーになる。

原因

yarn(yarn install)すると、yarn.lockが更新される。そのためchecksumが異なる値になってしまっている。

対策

--frozen-lockfileオプションをつけることで、yarn.lockの更新をなくす。

jobs:
  prepare:
    docker:
      - image: circleci/node:lts-browsers
    working_directory: ~/repo
    steps:
      - checkout
      - restore_cache:
          name: Restore Yarn Package Cache
          keys:
            - yarn-packages-{{ .Branch }}-{{ checksum "yarn.lock" }}
      - run: yarn --frozen-lockfile
      - save_cache:
          name: Save Yarn Package Cache
          key: yarn-packages-{{ .Branch }}-{{ checksum "yarn.lock" }}
          paths:
            - ~/.cache/yarn
      - save_cache:
          name: Save development dependencies
          key: dev-dep-{{ .Branch }}-{{ checksum "yarn.lock" }}
          paths:
            - node_modules/
  test:
    docker:
      - image: circleci/node:lts-browsers

    working_directory: ~/repo

    steps:
      - checkout
      - restore_cache:
          name: Restore Dev dependencies
          keys:
            - dev-dep-{{ .Branch }}-{{ checksum "yarn.lock" }}
      - run: ls -la
      - run: ls -la node_modules

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

WP Kyotoサポーター募集中

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

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

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

Related Category posts