From 2df4df0791714e8070d0fc60fb6c81b0d0bbc297 Mon Sep 17 00:00:00 2001 From: rschamp <rschamp@media.mit.edu> Date: Mon, 23 Sep 2019 20:57:27 -0400 Subject: [PATCH] Use granular caching --- .circleci/config.yml | 87 +++++++++++++++++++++++++++++++------------- 1 file changed, 62 insertions(+), 25 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 6d396d66f..79b8afced 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -1,12 +1,42 @@ version: 2.1 aliases: - - &persist - persist_to_workspace: - root: . - paths: . - - &restore - attach_workspace: - at: ~/repo + - &save_git_cache + save_cache: + paths: + - .git + key: v1-git-{{ .Revision }} + - &restore_git_cache + restore_cache: + keys: + - v1-git-{{ .Revision }} + - v1-git- + - &save_build_cache + save_cache: + paths: + - build + key: v1-build-{{ .Revision }} + - &restore_build_cache + restore_cache: + keys: + - v1-build-{{ .Revision }} + - &save_dist_cache + save_cache: + paths: + - dist + key: v1-dist-{{ .Revision }} + - &restore_dist_cache + restore_cache: + keys: + - v1-dist-{{ .Revision }} + - &save_npm_cache + save_cache: + paths: + - node_modules + key: v1-npm-{{ checksum "package-lock.json" }} + - &restore_npm_cache + restore_cache: + keys: + - v1-npm-{{ checksum "package-lock.json" }} - &defaults docker: - image: circleci/node:8.16-browsers @@ -16,21 +46,17 @@ jobs: setup: <<: *defaults steps: - - restore_cache: - keys: - - v1-git-{{ .Revision }} - - v1-git- + - *restore_git_cache - checkout - - save_cache: - paths: - - .git - key: v1-git-{{ .Revision }} + - *save_git_cache - run: npm ci - - *persist + - *save_npm_cache lint: <<: *defaults steps: - - *restore + - *restore_git_cache + - *restore_npm_cache + - checkout - run: name: Lint command: npm run test:lint -- --quiet --output-file test-results/eslint/results.xml --format junit @@ -41,7 +67,9 @@ jobs: environment: JEST_JUNIT_OUTPUT_NAME: results.xml steps: - - *restore + - *restore_git_cache + - *restore_npm_cache + - checkout - run: name: Unit environment: @@ -57,21 +85,24 @@ jobs: NODE_ENV: production NODE_OPTIONS: --max-old-space-size=4000 steps: - - *restore + - *restore_git_cache + - *restore_npm_cache + - checkout - run: name: Build command: npm run build - - *persist + - *save_build_cache + - *save_dist_cache store_build: <<: *defaults steps: - - *restore + - *restore_build_cache - store_artifacts: path: build store_dist: <<: *defaults steps: - - *restore + - *restore_dist_cache - store_artifacts: path: dist integration: @@ -79,7 +110,9 @@ jobs: environment: JEST_JUNIT_OUTPUT_NAME: results.txt steps: - - *restore + - *restore_git_cache + - *restore_npm_cache + - checkout - run: name: Integration environment: @@ -93,7 +126,9 @@ jobs: environment: NODE_OPTIONS: --max-old-space-size=4000 steps: - - *restore + - *restore_git_cache + - *restore_dist_cache + - checkout - run: | echo export RELEASE_VERSION="0.1.0-prerelease.$(date +'%Y%m%d%H%M%S')" >> $BASH_ENV echo export NPM_TAG=circlelatest >> $BASH_ENV @@ -113,7 +148,9 @@ jobs: deploy-gh-pages: <<: *defaults steps: - - *restore + - *restore_git_cache + - *restore_npm_cache + - checkout - run: | git config --global user.email $(git log --pretty=format:"%ae" -n1) git config --global user.name $(git log --pretty=format:"%an" -n1) -- GitLab