version: 2.1 aliases: - &defaults docker: - image: cimg/node:12.22.11-browsers auth: username: $DOCKERHUB_USERNAME password: $DOCKERHUB_PASSWORD working_directory: ~/repo environment: NODE_ENV: production - &setup name: "setup" command: | npm --production=false ci mkdir ./test/results - &lint name: "run lint tests" command: npm run lint -- --format junit -o ./test/results/lint-results.xml - &unit name: "run unit tests" command: JEST_JUNIT_OUTPUT_NAME=unit-jest-results.xml npm run unit -- --reporters=jest-junit - &build name: "run npm build" command: | NODE_ENV=production npm run build - &tag-setup name: "setup tags" command: | RELEASE_TIMESTAMP="$(date +'%Y%m%d%H%M%S')" VPKG=$($(npm bin)/json -f package.json version) export RELEASE_VERSION=${VPKG}-prerelease.${RELEASE_TIMESTAMP} echo $RELEASE_VERSION export NPM_TAG=latest if [[ "$CIRCLE_BRANCH" == hotfix/* ]]; then # double brackets are important for matching the wildcard export NPM_TAG=hotfix fi - &deploy-gh-pages name: "deploy to gh pages" command: | git config --global user.email $(git log --pretty=format:"%ae" -n1) git config --global user.name $(git log --pretty=format:"%an" -n1) npm run deploy -- -e $CIRCLE_BRANCH jobs: build-test: <<: *defaults steps: - checkout - run: <<: *setup - run: <<: *lint - run: <<: *unit - run: <<: *build - store_test_results: path: test/results build-test-deploy: <<: *defaults steps: - checkout - run: <<: *setup - run: <<: *lint - run: <<: *unit - run: <<: *build - store_test_results: path: test/results - run: <<: *tag-setup - run: <<: *deploy-gh-pages workflows: build-test-no-deploy: jobs: - build-test: context: - dockerhub-credentials filters: branches: ignore: - master - develop - /^hotfix\/.*/ build-test-deploy: jobs: - build-test-deploy: context: - dockerhub-credentials filters: branches: only: - master - develop - /^hotfix\/.*/