version: 2 workflows: version: 2 test_and_release: jobs: - create_release_pull_request: filters: branches: only: - /^Version-v(\d+)[.](\d+)[.](\d+)/ - prep-deps - test-deps - prep-build: requires: - prep-deps - create_github_release: requires: - prep-build filters: branches: only: - develop # - prep-docs: # requires: # - prep-deps - prep-scss: requires: - prep-deps - test-lint: requires: - prep-deps - test-e2e-chrome: requires: - prep-deps - test-e2e-firefox: requires: - prep-deps - test-unit: requires: - prep-deps - test-mozilla-lint: requires: - prep-deps - prep-build - test-integration-flat-chrome: requires: - prep-deps - prep-scss - test-integration-flat-firefox: requires: - prep-deps - prep-scss - all-tests-pass: requires: - test-lint - test-unit - test-mozilla-lint - test-e2e-chrome - test-e2e-firefox - test-integration-flat-chrome - test-integration-flat-firefox - job-publish-prerelease: requires: - prep-deps - prep-build - all-tests-pass - job-publish-release: filters: branches: only: master requires: - prep-deps - prep-build # - prep-docs - all-tests-pass jobs: create_release_pull_request: docker: - image: circleci/node:8.15.1-browsers steps: - checkout - run: name: Create GitHub Pull Request for version command: | .circleci/scripts/release-bump-changelog-version .circleci/scripts/release-bump-manifest-version .circleci/scripts/release-create-release-pr prep-deps: docker: - image: circleci/node:10.16-browsers steps: - checkout - run: name: Install deps command: | yarn --frozen-lockfile - persist_to_workspace: root: . paths: - node_modules prep-build: docker: - image: circleci/node:10.16-browsers steps: - checkout - attach_workspace: at: . - run: name: build:dist command: yarn dist - run: name: build:debug command: find dist/ -type f -exec md5sum {} \; | sort -k 2 - persist_to_workspace: root: . paths: - dist - builds prep-docs: docker: - image: circleci/node:10.16-browsers steps: - checkout - attach_workspace: at: . - run: name: build:dist command: yarn doc - persist_to_workspace: root: . paths: - docs/jsdocs prep-scss: docker: - image: circleci/node:10.16-browsers steps: - checkout - attach_workspace: at: . - 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: yarn test:integration:build - persist_to_workspace: root: . paths: - ui/app/css/output test-lint: docker: - image: circleci/node:10.16-browsers steps: - checkout - attach_workspace: at: . - run: name: Test command: yarn lint test-deps: docker: - image: circleci/node:10.16-browsers steps: - checkout - attach_workspace: at: . - run: name: yarn audit command: .circleci/scripts/yarn-audit test-e2e-chrome: docker: - image: circleci/node:10.16-browsers steps: - checkout - attach_workspace: at: . - run: name: test:e2e:chrome command: yarn build:test && yarn test:e2e:chrome no_output_timeout: 20m - store_artifacts: path: test-artifacts destination: test-artifacts test-e2e-firefox: docker: - image: circleci/node:10.16-browsers steps: - checkout - run: name: Install Firefox command: ./.circleci/scripts/firefox-install - attach_workspace: at: . - run: name: test:e2e:firefox command: yarn build:test && yarn test:e2e:chrome no_output_timeout: 20m - store_artifacts: path: test-artifacts destination: test-artifacts job-publish-prerelease: docker: - image: circleci/node:10.16-browsers steps: - checkout - attach_workspace: at: . - store_artifacts: path: dist/sourcemaps destination: builds/sourcemaps - store_artifacts: path: builds destination: builds - store_artifacts: path: test-artifacts destination: test-artifacts - run: name: build:announce command: ./development/metamaskbot-build-announce.js job-publish-release: docker: - image: circleci/node:10.16-browsers steps: - checkout - attach_workspace: at: . - run: name: sentry sourcemaps upload command: yarn sentry:publish # - run: # name: github gh-pages docs publish # command: > # git config --global user.name "metamaskbot" && # git config --global user.email "admin@metamask.io" && # yarn publish-docs test-unit: docker: - image: circleci/node:10.16-browsers steps: - checkout - attach_workspace: at: . - run: name: test:coverage command: yarn test:coverage test-mozilla-lint: docker: - image: circleci/node:10.16-browsers steps: - checkout - attach_workspace: at: . - run: name: test:mozilla-lint command: NODE_OPTIONS=--max_old_space_size=3072 yarn mozilla-lint test-integration-flat-firefox: docker: - image: circleci/node:10.16-browsers steps: - checkout - attach_workspace: at: . - run: name: Install Firefox command: ./.circleci/scripts/firefox-install - run: name: test:integration:flat command: yarn test:flat test-integration-flat-chrome: environment: browsers: '["Chrome"]' docker: - image: circleci/node:10.16-browsers steps: - checkout - attach_workspace: at: . - run: name: test:integration:flat command: yarn test:flat all-tests-pass: docker: - image: circleci/node:10.16-browsers steps: - run: name: All Tests Passed command: echo 'weew - everything passed!' create_github_release: docker: - image: circleci/node:8.15.1-browsers steps: - checkout - attach_workspace: at: . - run: name: Create GitHub release command: | .circleci/scripts/release-create-gh-release