version: 2.0 jobs: build: docker: - image: circleci/node:8 steps: - checkout - restore_cache: key: send-{{ checksum "package-lock.json" }} - run: npm install - save_cache: key: send-{{ checksum "package-lock.json" }} paths: - node_modules - run: npm run build - persist_to_workspace: root: . paths: - ./* test: docker: - image: circleci/node:8-browsers steps: - checkout - restore_cache: key: send-{{ checksum "package-lock.json" }} - run: npm install - save_cache: key: send-{{ checksum "package-lock.json" }} paths: - node_modules - run: npm run check - run: npm run lint - run: npm test deploy_dev: machine: true steps: - attach_workspace: at: . - run: docker login -e $DOCKER_EMAIL -u $DOCKER_USER -p $DOCKER_PASS - run: docker build -t mozilla/send:latest . - run: docker push mozilla/send:latest deploy_stage: machine: true steps: - attach_workspace: at: . - run: docker login -e $DOCKER_EMAIL -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: - test: filters: branches: ignore: master build_and_deploy_dev: jobs: - build: filters: branches: only: master tags: ignore: /^v.*/ - deploy_latest: requires: - build filters: branches: only: master tags: ignore: /^v.*/ build_and_deploy_stage: jobs: - build: filters: branches: only: master tags: only: /^v.*/ - test: filters: branches: only: master tags: only: /^v.*/ - deploy_stage: requires: - build - test filters: branches: only: master tags: only: /^v.*/