version: 2 workflows: version: 2 full_test: jobs: - prep-deps-npm - prep-deps-firefox - prep-build: requires: - prep-deps-npm - prep-scss: requires: - prep-deps-npm - test-lint: requires: - prep-deps-npm - test-e2e: requires: - prep-build - prep-deps-npm - test-unit: requires: - prep-deps-npm - test-integration-mascara-chrome: requires: - prep-deps-npm - prep-scss - test-integration-mascara-firefox: requires: - prep-deps-npm - prep-deps-firefox - prep-scss - test-integration-flat-chrome: requires: - prep-deps-npm - prep-scss - test-integration-flat-firefox: requires: - prep-deps-npm - prep-deps-firefox - prep-scss - all-tests-pass: requires: - test-lint - test-unit - test-e2e - test-integration-mascara-chrome - test-integration-mascara-firefox - test-integration-flat-chrome - test-integration-flat-firefox jobs: prep-deps-npm: docker: - image: circleci/node:8-browsers steps: - checkout - restore_cache: key: dependency-cache-{{ checksum "package-lock.json" }} - run: name: Install deps via npm command: npm install - save_cache: key: dependency-cache-{{ checksum "package-lock.json" }} paths: - node_modules prep-deps-firefox: docker: - image: circleci/node:8-browsers steps: - checkout - run: name: Download Firefox command: > wget https://ftp.mozilla.org/pub/firefox/releases/58.0/linux-x86_64/en-US/firefox-58.0.tar.bz2 && tar xjf firefox-58.0.tar.bz2 - save_cache: key: dependency-cache-firefox-{{ .Revision }} paths: - firefox prep-build: docker: - image: circleci/node:8-browsers steps: - checkout - restore_cache: key: dependency-cache-{{ checksum "package-lock.json" }} - run: name: build:dist command: npm run dist - run: name: build:debug command: find dist/ -type f -exec md5sum {} \; | sort -k 2 - save_cache: key: build-cache-{{ .Revision }} paths: - dist - store_artifacts: path: dist/mascara destination: builds/mascara - store_artifacts: path: builds destination: builds - run: name: build:announce command: | CIRCLE_PR_NUMBER="${CIRCLE_PR_NUMBER:-${CIRCLE_PULL_REQUEST##*/}}" SHORT_SHA1=$(echo $CIRCLE_SHA1 | cut -c 1-7) QA_BUILD_URL="https://$CIRCLE_BUILD_NUM-42009758-gh.circle-artifacts.com/0/builds/mascara/home.html" COMMENT_BODY="[Try QA Build for $SHORT_SHA1]($QA_BUILD_URL)" JSON_PAYLOAD="{\"body\":\"$COMMENT_BODY\"}" POST_COMMENT_URI="https://api.github.com/repos/metamask/metamask-extension/issues/$CIRCLE_PR_NUMBER/comments" echo "Announcement:\n$COMMENT_BODY" echo "Posting to $POST_COMMENT_URI" curl -d "$JSON_PAYLOAD" -H "Authorization: token $GITHUB_COMMENT_TOKEN" $POST_COMMENT_URI prep-scss: docker: - image: circleci/node:8-browsers steps: - checkout - restore_cache: key: dependency-cache-{{ checksum "package-lock.json" }} - run: name: Get Scss Cache key # this allows us to checksum against a whole directory command: find ui/app/css -type f -exec md5sum {} \; | sort -k 2 > scss_checksum - run: name: Build for integration tests command: npm run test:integration:build - save_cache: key: scss-cache-{{ checksum "scss_checksum" }} paths: - ui/app/css/output test-lint: docker: - image: circleci/node:8-browsers steps: - checkout - restore_cache: key: dependency-cache-{{ checksum "package-lock.json" }} - run: name: Test command: npm run lint test-e2e: docker: - image: circleci/node:8-browsers steps: - checkout - restore_cache: key: dependency-cache-{{ checksum "package-lock.json" }} - restore_cache: key: build-cache-{{ .Revision }} - run: name: Test command: npm run test:e2e test-unit: docker: - image: circleci/node:8-browsers steps: - checkout - restore_cache: key: dependency-cache-{{ checksum "package-lock.json" }} - run: name: test:coverage command: npm run test:coverage test-integration-flat-firefox: environment: browsers: '["Firefox"]' docker: - image: circleci/node:8-browsers steps: - checkout - restore_cache: key: dependency-cache-firefox-{{ .Revision }} - run: name: Install firefox command: > sudo rm -r /opt/firefox && sudo mv firefox /opt/firefox58 && sudo mv /usr/bin/firefox /usr/bin/firefox-old && sudo ln -s /opt/firefox58/firefox /usr/bin/firefox - restore_cache: key: dependency-cache-{{ checksum "package-lock.json" }} - run: name: Get Scss Cache key # this allows us to checksum against a whole directory command: find ui/app/css -type f -exec md5sum {} \; | sort -k 2 > scss_checksum - restore_cache: key: scss-cache-{{ checksum "scss_checksum" }} - run: name: test:integration:flat command: npm run test:flat test-integration-flat-chrome: environment: browsers: '["Chrome"]' docker: - image: circleci/node:8-browsers steps: - checkout - restore_cache: key: dependency-cache-{{ checksum "package-lock.json" }} - run: name: Get Scss Cache key # this allows us to checksum against a whole directory command: find ui/app/css -type f -exec md5sum {} \; | sort -k 2 > scss_checksum - restore_cache: key: scss-cache-{{ checksum "scss_checksum" }} - run: name: test:integration:flat command: npm run test:flat test-integration-mascara-firefox: environment: browsers: '["Firefox"]' docker: - image: circleci/node:8-browsers steps: - checkout - restore_cache: key: dependency-cache-firefox-{{ .Revision }} - run: name: Install firefox command: > sudo rm -r /opt/firefox && sudo mv firefox /opt/firefox58 && sudo mv /usr/bin/firefox /usr/bin/firefox-old && sudo ln -s /opt/firefox58/firefox /usr/bin/firefox - restore_cache: key: dependency-cache-{{ checksum "package-lock.json" }} - run: name: Get Scss Cache key # this allows us to checksum against a whole directory command: find ui/app/css -type f -exec md5sum {} \; | sort -k 2 > scss_checksum - restore_cache: key: scss-cache-{{ checksum "scss_checksum" }} - run: name: test:integration:mascara command: npm run test:mascara test-integration-mascara-chrome: environment: browsers: '["Chrome"]' docker: - image: circleci/node:8-browsers steps: - checkout - restore_cache: key: dependency-cache-{{ checksum "package-lock.json" }} - run: name: Get Scss Cache key # this allows us to checksum against a whole directory command: find ui/app/css -type f -exec md5sum {} \; | sort -k 2 > scss_checksum - restore_cache: key: scss-cache-{{ checksum "scss_checksum" }} - run: name: test:integration:mascara command: npm run test:mascara all-tests-pass: docker: - image: circleci/node:8-browsers steps: - run: name: All Tests Passed command: echo 'weew - everything passed!'