version: 2.0 jobs: build: docker: - image: circleci/node:10 steps: - checkout - restore_cache: key: send-build-{{ checksum "package-lock.json" }} - run: npm install - save_cache: key: send-build-{{ checksum "package-lock.json" }} paths: - node_modules - run: npm run build - persist_to_workspace: root: . paths: - ./dist test: docker: - image: circleci/node:10-browsers steps: - checkout - restore_cache: key: send-test-{{ checksum "package-lock.json" }} - run: npm install - save_cache: key: send-test-{{ checksum "package-lock.json" }} paths: - node_modules - run: npm run lint - run: npm run test - store_artifacts: path: coverage integration_tests: docker: - image: circleci/node:10-browsers steps: - checkout - restore_cache: key: send-int-{{ checksum "package-lock.json" }} - run: npm install - save_cache: key: send-int-{{ checksum "package-lock.json" }} paths: - node_modules - run: name: Run integration test command: ./scripts/bin/run-integration-test-circleci.sh deploy_dev: machine: true steps: - checkout - attach_workspace: at: . - run: docker login -u $DOCKER_USER -p $DOCKER_PASS - run: docker build -t mozilla/send:latest . - run: docker push mozilla/send:latest deploy_vnext: machine: true steps: - checkout - attach_workspace: at: . - run: docker login -u $DOCKER_USER -p $DOCKER_PASS - run: docker build -t mozilla/send:vnext . - run: docker push mozilla/send:vnext deploy_stage: machine: true steps: - checkout - attach_workspace: at: . - run: docker login -u $DOCKER_USER -p $DOCKER_PASS - run: docker build -t mozilla/send:$CIRCLE_TAG . - run: docker push mozilla/send:$CIRCLE_TAG workflows: version: 2 test_pr: jobs: - build: filters: branches: ignore: - master - vnext - test: filters: branches: ignore: - master - vnext - integration_tests: filters: branches: ignore: master build_and_deploy_dev: jobs: - build: filters: branches: only: - master - vnext tags: ignore: /^v.*/ - deploy_dev: requires: - build filters: branches: only: master tags: ignore: /^v.*/ - deploy_vnext: requires: - build filters: branches: only: vnext tags: ignore: /^v.*/ build_and_deploy_stage: jobs: - build: filters: branches: ignore: /.*/ tags: only: /^v.*/ - test: filters: branches: ignore: /.*/ tags: only: /^v.*/ - integration_tests: filters: branches: ignore: /.*/ tags: only: /^v.*/ - deploy_stage: requires: - build - test - integration_tests filters: branches: ignore: /.*/ tags: only: /^v.*/