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