mirror of
https://github.com/kremalicious/metamask-extension.git
synced 2024-12-23 09:52:26 +01:00
* Use common test build during CI Previously both e2e test jobs were running `test:build`. Now there is a separate job that runs `test:build` that runs before each e2e test job, so that `test:build` is only run once instead of twice. * Move test builds to separate directory This prevents the test build from conflicting with the production build in later jobs.
369 lines
9.0 KiB
YAML
369 lines
9.0 KiB
YAML
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
|
|
- prep-build-test:
|
|
requires:
|
|
- prep-deps
|
|
# - prep-docs:
|
|
# requires:
|
|
# - prep-deps
|
|
- prep-scss:
|
|
requires:
|
|
- prep-deps
|
|
- test-lint:
|
|
requires:
|
|
- prep-deps
|
|
- test-e2e-chrome:
|
|
requires:
|
|
- prep-build-test
|
|
- test-e2e-firefox:
|
|
requires:
|
|
- prep-build-test
|
|
- 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
|
|
- coveralls-upload:
|
|
requires:
|
|
- test-unit
|
|
|
|
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 --har
|
|
- run:
|
|
name: Collect yarn install HAR logs
|
|
command: |
|
|
.circleci/scripts/collect-har-artifact.sh
|
|
- persist_to_workspace:
|
|
root: .
|
|
paths:
|
|
- node_modules
|
|
- build-artifacts
|
|
|
|
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-build-test:
|
|
docker:
|
|
- image: circleci/node:10.16-browsers
|
|
steps:
|
|
- checkout
|
|
- attach_workspace:
|
|
at: .
|
|
- run:
|
|
name: Build extension for testing
|
|
command: yarn build:test
|
|
- run:
|
|
name: Move test build to 'dist-test' to avoid conflict with production build
|
|
command: mv ./dist ./dist-test
|
|
- persist_to_workspace:
|
|
root: .
|
|
paths:
|
|
- dist-test
|
|
|
|
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: Lint
|
|
command: yarn lint
|
|
- run:
|
|
name: Verify locales
|
|
command: yarn verify-locales --quiet
|
|
|
|
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: Move test build to dist
|
|
command: mv ./dist-test ./dist
|
|
- run:
|
|
name: test:e2e:chrome
|
|
command: 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: Move test build to dist
|
|
command: mv ./dist-test ./dist
|
|
- run:
|
|
name: test:e2e:firefox
|
|
command: yarn test:e2e:firefox
|
|
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: .
|
|
- run:
|
|
name: build:source-map-explorer
|
|
command: ./development/source-map-explorer.sh
|
|
- store_artifacts:
|
|
path: dist/sourcemaps
|
|
destination: builds/sourcemaps
|
|
- store_artifacts:
|
|
path: builds
|
|
destination: builds
|
|
- store_artifacts:
|
|
path: test-artifacts
|
|
destination: test-artifacts
|
|
# important: generate sesify viz AFTER uploading builds as artifacts
|
|
- run:
|
|
name: build:sesify-viz
|
|
command: ./.circleci/scripts/create-sesify-viz
|
|
- store_artifacts:
|
|
path: build-artifacts
|
|
destination: build-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: Create GitHub release
|
|
command: |
|
|
.circleci/scripts/release-create-gh-release
|
|
- run:
|
|
name: Create GitHub Pull Request to sync master with develop
|
|
command: .circleci/scripts/release-create-master-pr
|
|
# - 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
|
|
- persist_to_workspace:
|
|
root: .
|
|
paths:
|
|
- .nyc_output
|
|
- 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!'
|
|
|
|
coveralls-upload:
|
|
docker:
|
|
- image: circleci/node:10.16-browsers
|
|
steps:
|
|
- checkout
|
|
- attach_workspace:
|
|
at: .
|
|
- run:
|
|
name: Coveralls upload
|
|
command: yarn test:coveralls-upload
|