From d2953bdd335b7244aca2b9fef9cf56ec9bbca84d Mon Sep 17 00:00:00 2001 From: adamzerella Date: Tue, 4 Sep 2018 10:54:32 +1000 Subject: [PATCH] Added caching functionality given current state of circle --- .circleci/PACKAGE_LOCK_CHECKSUMS | 27 ++++++++++++++++++++++++ .circleci/config.yml | 35 ++++++++++++++++++++++++++++++++ CONTRIBUTING.md | 7 +++++++ 3 files changed, 69 insertions(+) create mode 100644 .circleci/PACKAGE_LOCK_CHECKSUMS diff --git a/.circleci/PACKAGE_LOCK_CHECKSUMS b/.circleci/PACKAGE_LOCK_CHECKSUMS new file mode 100644 index 000000000..aadb479b3 --- /dev/null +++ b/.circleci/PACKAGE_LOCK_CHECKSUMS @@ -0,0 +1,27 @@ +4057861937e941f6ce5085526528c39c ./package-lock.json +08a229ec1a9bc9f37d9a9eb0b0c23592 packages/keyword-list/package-lock.json +76d815aeb911c75c76a1deac55212573 packages/core/package-lock.json +18568ea14d51f4971789312f2f4d98d7 packages/main-nav/package-lock.json +5a31532c1d10cbabfce2e28e64dc4f59 packages/body/package-lock.json +9519b472d43a2b66ece94c4b7b6b3b02 packages/inpage-nav/package-lock.json +08a229ec1a9bc9f37d9a9eb0b0c23592 packages/tags/package-lock.json +08a229ec1a9bc9f37d9a9eb0b0c23592 packages/direction-links/package-lock.json +9519b472d43a2b66ece94c4b7b6b3b02 packages/text-inputs/package-lock.json +18568ea14d51f4971789312f2f4d98d7 packages/side-nav/package-lock.json +08a229ec1a9bc9f37d9a9eb0b0c23592 packages/breadcrumbs/package-lock.json +46b873ed5475830f76a5d667f9729add packages/animate/package-lock.json +08a229ec1a9bc9f37d9a9eb0b0c23592 packages/buttons/package-lock.json +08a229ec1a9bc9f37d9a9eb0b0c23592 packages/header/package-lock.json +9519b472d43a2b66ece94c4b7b6b3b02 packages/footer/package-lock.json +08a229ec1a9bc9f37d9a9eb0b0c23592 packages/link-list/package-lock.json +08a229ec1a9bc9f37d9a9eb0b0c23592 packages/progress-indicator/package-lock.json +5a31532c1d10cbabfce2e28e64dc4f59 packages/grid-12/package-lock.json +9519b472d43a2b66ece94c4b7b6b3b02 packages/skip-link/package-lock.json +9519b472d43a2b66ece94c4b7b6b3b02 packages/page-alerts/package-lock.json +9519b472d43a2b66ece94c4b7b6b3b02 packages/callout/package-lock.json +08a229ec1a9bc9f37d9a9eb0b0c23592 packages/cta-link/package-lock.json +2f5cab6476dba32411db3584784d6552 packages/accordion/package-lock.json +9519b472d43a2b66ece94c4b7b6b3b02 packages/headings/package-lock.json +9519b472d43a2b66ece94c4b7b6b3b02 packages/select/package-lock.json +9519b472d43a2b66ece94c4b7b6b3b02 packages/control-input/package-lock.json +5a31532c1d10cbabfce2e28e64dc4f59 packages/responsive-media/package-lock.json diff --git a/.circleci/config.yml b/.circleci/config.yml index becc658e3..66ed74637 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -10,12 +10,47 @@ jobs: - image: circleci/node:8.11.4 # NodeLTS as of 09/2018 steps: - checkout # get the files from the repo (why would you ever not want the files????) + - restore_cache: + name: Restore package cache + keys: + - m5-packages-{{ checksum ".circleci/PACKAGE_LOCK_CHECKSUMS" }} - run: name: Install dependencies command: npm install # duh - run: name: Bootstrap the packages command: npm run bootstrap # installing all dependencies of all packages + - save_cache: + name: Save package cache # Circle don't support path globbing as of 09/18 + key: m5-packages-{{ checksum ".circleci/PACKAGE_LOCK_CHECKSUMS" }} + paths: + - node_modules/ + - packages/keyword-list/node_modules + - packages/core/node_modules/ + - packages/main-nav/node_modules/ + - packages/body/node_modules/ + - packages/inpage-nav/node_modules/ + - packages/tags/node_modules/ + - packages/direction-links/node_modules/ + - packages/text-inputs/node_modules/ + - packages/side-nav/node_modules/ + - packages/breadcrumbs/node_modules/ + - packages/animate/node_modules/ + - packages/buttons/node_modules/ + - packages/header/node_modules/ + - packages/footer/node_modules/ + - packages/link-list/node_modules/ + - packages/progress-indicator/node_modules/ + - packages/grid-12/node_modules/ + - packages/skip-link/node_modules/ + - packages/page-alerts/node_modules/ + - packages/callout/node_modules/ + - packages/cta-link/node_modules/ + - packages/accordion/node_modules/ + - packages/headings/node_modules/ + - packages/select/node_modules/ + - packages/control-input/node_modules/ + - packages/responsive-media/node_modules/ - run: name: Build all packages command: npm run build # installing all dependencies of all packages diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index db6d97526..83c07a5ca 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -210,6 +210,13 @@ npm run scaffolding _❗ After you have filled out all the blanks and added your dependencies into your package.json make sure you run `lerna bootstrap` again._ +> NOTE: As of 09/18 `CirclCI` doesn't easily support caching multiple keys and folders seamlessly, as a temporary workaround: + +Ensure your newly created module is appended to the CirclCI configuration file `save_cache` key path. Additionally, append or modify the checksum values, using the command listed below for a newly created or updated module respectfully. + + ```bash +md5sum $(find . packages -maxdepth 2 -type f -name 'package-lock.json') > .circleci/PACKAGE_LOCK_CHECKSUMS +``` **[⬆ back to top](#contents)**