mirror of
https://github.com/kremalicious/metamask-extension.git
synced 2024-10-22 11:22:43 +02:00
550fba2466
* Add benchmark to CI The page load benchmark for Chrome is now run during CI, and the results are collected and summarized in the `metamaskbot` comment. Closes #6881 * Double default number of samples The number of default samples was changed from 10 to 20. The results from 10 samples would show statistically significant changes in page load times between builds, so weren't a sufficiently useful metric.
434 lines
11 KiB
YAML
434 lines
11 KiB
YAML
version: 2.1
|
|
|
|
workflows:
|
|
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-lint-shellcheck
|
|
- test-lint-lockfile:
|
|
requires:
|
|
- prep-deps
|
|
- test-e2e-chrome:
|
|
requires:
|
|
- prep-build-test
|
|
- test-e2e-firefox:
|
|
requires:
|
|
- prep-build-test
|
|
- test-unit:
|
|
requires:
|
|
- prep-deps
|
|
- test-unit-global:
|
|
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-lint-shellcheck
|
|
- test-lint-lockfile
|
|
- test-unit
|
|
- test-unit-global
|
|
- test-mozilla-lint
|
|
- test-e2e-chrome
|
|
- test-e2e-firefox
|
|
- test-integration-flat-chrome
|
|
- test-integration-flat-firefox
|
|
- benchmark:
|
|
requires:
|
|
- prep-build-test
|
|
- job-publish-prerelease:
|
|
requires:
|
|
- prep-deps
|
|
- prep-build
|
|
- benchmark
|
|
- 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:10.17-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.17-browsers
|
|
steps:
|
|
- checkout
|
|
- run:
|
|
name: Install deps
|
|
command: |
|
|
.circleci/scripts/deps-install.sh
|
|
- 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.17-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.17-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.17-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.17-browsers
|
|
steps:
|
|
- checkout
|
|
- attach_workspace:
|
|
at: .
|
|
- run:
|
|
name: Lint
|
|
command: yarn lint
|
|
- run:
|
|
name: Verify locales
|
|
command: yarn verify-locales --quiet
|
|
|
|
test-lint-shellcheck:
|
|
docker:
|
|
- image: circleci/node:10.17-browsers
|
|
steps:
|
|
- checkout
|
|
- run: sudo apt-get install shellcheck
|
|
- run:
|
|
name: Shellcheck Lint
|
|
command: yarn lint:shellcheck
|
|
|
|
test-lint-lockfile:
|
|
docker:
|
|
- image: circleci/node:10.17-browsers
|
|
steps:
|
|
- checkout
|
|
- attach_workspace:
|
|
at: .
|
|
- run:
|
|
name: lockfile-lint
|
|
command: yarn lint:lockfile
|
|
|
|
test-deps:
|
|
docker:
|
|
- image: circleci/node:10.17-browsers
|
|
steps:
|
|
- checkout
|
|
- attach_workspace:
|
|
at: .
|
|
- run:
|
|
name: yarn audit
|
|
command: .circleci/scripts/yarn-audit
|
|
|
|
test-e2e-chrome:
|
|
docker:
|
|
- image: circleci/node:10.17-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.17-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
|
|
|
|
benchmark:
|
|
docker:
|
|
- image: circleci/node:10.17-browsers
|
|
steps:
|
|
- checkout
|
|
- attach_workspace:
|
|
at: .
|
|
- run:
|
|
name: Move test build to dist
|
|
command: mv ./dist-test ./dist
|
|
- run:
|
|
name: Run page load benchmark
|
|
command: yarn benchmark:chrome --out test-artifacts/chrome/benchmark/pageload.json
|
|
- store_artifacts:
|
|
path: test-artifacts
|
|
destination: test-artifacts
|
|
- persist_to_workspace:
|
|
root: .
|
|
paths:
|
|
- test-artifacts
|
|
|
|
job-publish-prerelease:
|
|
docker:
|
|
- image: circleci/node:10.17-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.17-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.17-browsers
|
|
steps:
|
|
- checkout
|
|
- attach_workspace:
|
|
at: .
|
|
- run:
|
|
name: test:coverage
|
|
command: yarn test:coverage
|
|
- persist_to_workspace:
|
|
root: .
|
|
paths:
|
|
- .nyc_output
|
|
- coverage
|
|
test-unit-global:
|
|
docker:
|
|
- image: circleci/node:10.17-browsers
|
|
steps:
|
|
- checkout
|
|
- attach_workspace:
|
|
at: .
|
|
- run:
|
|
name: test:unit:global
|
|
command: yarn test:unit:global
|
|
test-mozilla-lint:
|
|
docker:
|
|
- image: circleci/node:10.17-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.17-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.17-browsers
|
|
steps:
|
|
- checkout
|
|
- attach_workspace:
|
|
at: .
|
|
- run:
|
|
name: test:integration:flat
|
|
command: yarn test:flat
|
|
|
|
all-tests-pass:
|
|
docker:
|
|
- image: circleci/node:10.17-browsers
|
|
steps:
|
|
- run:
|
|
name: All Tests Passed
|
|
command: echo 'weew - everything passed!'
|
|
|
|
coveralls-upload:
|
|
docker:
|
|
- image: circleci/node:10.17-browsers
|
|
steps:
|
|
- checkout
|
|
- attach_workspace:
|
|
at: .
|
|
- run:
|
|
name: Coveralls upload
|
|
command: yarn test:coveralls-upload
|