diff --git a/.circleci/config.yml b/.circleci/config.yml index 310c794f7c2d337f71a45905e61aa1ca0333d2b9..6d396d66f47465cdc009120915a1008f08cb72bb 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -1,76 +1,47 @@ version: 2.1 aliases: - - &step_restore_git_cache - restore_cache: - keys: - - v1-git-{{ .Revision }} - - v1-git- - - &step_save_git_cache - save_cache: - paths: - - .git - key: v1-git-{{ .Revision }} - - &step_restore_dependency_cache - restore_cache: - keys: - - v1-dependencies-{{ checksum "package-lock.json" }} - - v1-dependencies- - - &step_save_dependency_cache - save_cache: - paths: - - node_modules - key: v1-dependencies-{{ checksum "package-lock.json" }} - - &step_save_build_cache - save_cache: - paths: - - build - key: v1-build-{{ .Revision }} - - &step_restore_build_cache - restore_cache: - keys: - - v1-build-{{ .Revision }} - - &step_save_dist_cache - save_cache: - paths: - - dist - key: v1-dist-{{ .Revision }} - - &step_restore_dist_cache - restore_cache: - keys: - - v1-dist-{{ .Revision }} - - &config_job_environment + - &persist + persist_to_workspace: + root: . + paths: . + - &restore + attach_workspace: + at: ~/repo + - &defaults docker: - image: circleci/node:8.16-browsers working_directory: ~/repo jobs: setup: - <<: *config_job_environment + <<: *defaults steps: - - *step_restore_git_cache + - restore_cache: + keys: + - v1-git-{{ .Revision }} + - v1-git- - checkout - - *step_save_git_cache + - save_cache: + paths: + - .git + key: v1-git-{{ .Revision }} - run: npm ci - - *step_save_dependency_cache + - *persist lint: - <<: *config_job_environment + <<: *defaults steps: - - *step_restore_git_cache - - checkout - - *step_restore_dependency_cache + - *restore - run: name: Lint command: npm run test:lint -- --quiet --output-file test-results/eslint/results.xml --format junit - store_test_results: path: test-results unit: - <<: *config_job_environment + <<: *defaults environment: JEST_JUNIT_OUTPUT_NAME: results.xml steps: - - *step_restore_git_cache - - checkout - - *step_restore_dependency_cache + - *restore - run: name: Unit environment: @@ -81,32 +52,34 @@ jobs: - store_test_results: path: test-results build: - <<: *config_job_environment + <<: *defaults environment: NODE_ENV: production NODE_OPTIONS: --max-old-space-size=4000 steps: - - *step_restore_git_cache - - checkout - - *step_restore_dependency_cache + - *restore - run: name: Build command: npm run build + - *persist + store_build: + <<: *defaults + steps: + - *restore - store_artifacts: path: build + store_dist: + <<: *defaults + steps: + - *restore - store_artifacts: path: dist - - *step_save_build_cache - - *step_save_dist_cache integration: - <<: *config_job_environment + <<: *defaults environment: JEST_JUNIT_OUTPUT_NAME: results.txt steps: - - *step_restore_git_cache - - checkout - - *step_restore_dependency_cache - - *step_restore_build_cache + - *restore - run: name: Integration environment: @@ -116,10 +89,11 @@ jobs: path: test-results deploy-npm: - <<: *config_job_environment + <<: *defaults environment: NODE_OPTIONS: --max-old-space-size=4000 steps: + - *restore - 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 @@ -129,9 +103,6 @@ jobs: if [[ "$CIRCLE_BRANCH" == hotfix/* ]] # double brackets are important for matching the wildcard then echo export NPM_TAG=circlehotfix >> $BASH_ENV fi - - *step_restore_git_cache - - checkout - - *step_restore_dist_cache - run: npm version --no-git-tag-version $RELEASE_VERSION - run: | npm set //registry.npmjs.org/:_authToken=$NPM_TOKEN @@ -140,15 +111,12 @@ jobs: - run: git push $CIRCLE_REPOSITORY_URL $RELEASE_VERSION deploy-gh-pages: - <<: *config_job_environment + <<: *defaults steps: - - *step_restore_git_cache - - checkout + - *restore - run: | git config --global user.email $(git log --pretty=format:"%ae" -n1) git config --global user.name $(git log --pretty=format:"%an" -n1) - - *step_restore_build_cache - - *step_restore_dependency_cache - run: npm run deploy -- -e $CIRCLE_BRANCH workflows: @@ -168,6 +136,12 @@ workflows: - integration: requires: - build + - store_build: + requires: + - build + - store_dist: + requires: + - build - deploy-npm: requires: - lint