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-screens: 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-screens - 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) BUILD_LINK_BASE="https://$CIRCLE_BUILD_NUM-42009758-gh.circle-artifacts.com/0/builds" VERSION=$(node -p 'require("./dist/chrome/manifest.json").version') MASCARA="$BUILD_LINK_BASE/mascara/home.html" CHROME="$BUILD_LINK_BASE/metamask-chrome-$VERSION.zip" FIREFOX="$BUILD_LINK_BASE/metamask-firefox-$VERSION.zip" OPERA="$BUILD_LINK_BASE/metamask-opera-$VERSION.zip" EDGE="$BUILD_LINK_BASE/metamask-edge-$VERSION.zip" COMMENT_MAIN="Builds ready [$SHORT_SHA1]: [mascara][mascara], [chrome][chrome], [firefox][firefox], [edge][edge], [opera][opera]" COMMENT_LINKS="[mascara]:$MASCARA\n[chrome]:$CHROME\n[firefox]:$FIREFOX\n[opera]:$OPERA\n[edge]:$EDGE\n" COMMENT_BODY="$COMMENT_MAIN\n\n$COMMENT_LINKS" 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 - store_artifacts: path: test-artifacts destination: test-artifacts test-screens: 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:screens - store_artifacts: path: test-artifacts destination: test-artifacts 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!'