restore_yarn_cache: steps: - restore_cache: name: Restore yarn cache key: &YARN_LOCK_CACHE_KEY yarn-lock-v7-{{ checksum "ui/yarn.lock" }} save_yarn_cache: steps: - save_cache: name: Save yarn cache key: *YARN_LOCK_CACHE_KEY paths: - ui/node_modules # allows restoring go mod caches by incomplete prefix. This is useful when re-generating # cache, but not when running builds and tests that require an exact match. # TODO should we be including arch in cache key? restore_go_mod_cache_permissive: steps: - restore_cache: name: Restore closest matching go modules cache keys: - &gocachekey v1.5-{{checksum "go.sum"}}-{{checksum "sdk/go.sum"}}-{{checksum "api/go.sum"}} - v1.5-{{checksum "go.sum"}}-{{checksum "sdk/go.sum"}} - v1.5-{{checksum "go.sum"}} restore_go_mod_cache: steps: - restore_cache: name: Restore exact go modules cache keys: - *gocachekey save_go_mod_cache: steps: - save_cache: name: Save go modules cache key: *gocachekey paths: - /home/circleci/go/pkg/mod refresh_go_mod_cache: steps: - restore_go_mod_cache_permissive - run: name: go mod download command: | # set GOPATH explicitly to download to the right cache export GOPATH=$HOME/go # go list ./... forces downloading some additional versions of modules that 'go mod # download' misses. We need this because we make use of go list itself during # code generation in later builds that rely on this module cache. go list ./... go mod download -json ( cd sdk && go mod download -json; ) ( cd api && go mod download -json; ) - run: name: Verify downloading modules did not modify any files command: | git --no-pager diff --exit-code || { echo "ERROR: Files modified by go mod download, see above." exit 1 } - save_go_mod_cache