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

    広告ここから
    広告ここまで
    Home
    Search
    Bookmark