mirror of
https://github.com/kremalicious/metamask-extension.git
synced 2024-11-23 18:41:38 +01:00
00906937a1
CircleCI no longer allows external PR builds to save caches so jobs that depend on cached data from a upstream job will no longer get the files they need. This change replaces our usages of caches for passing data downstream with workspaces, which appear to be the more correct feature to use. References: - https://circleci.com/docs/2.0/workflows/#using-workspaces-to-share-data-among-jobs - https://circleci.com/blog/deep-diving-into-circleci-workspaces/
378 lines
9.0 KiB
YAML
378 lines
9.0 KiB
YAML
version: 2
|
|
|
|
workflows:
|
|
version: 2
|
|
full_test:
|
|
jobs:
|
|
- prep-deps-npm
|
|
- prep-build:
|
|
requires:
|
|
- prep-deps-npm
|
|
- prep-docs:
|
|
requires:
|
|
- prep-deps-npm
|
|
- prep-scss:
|
|
requires:
|
|
- prep-deps-npm
|
|
- test-lint:
|
|
requires:
|
|
- prep-deps-npm
|
|
- test-deps:
|
|
requires:
|
|
- prep-deps-npm
|
|
- test-e2e-chrome:
|
|
requires:
|
|
- prep-deps-npm
|
|
- prep-build
|
|
- test-e2e-firefox:
|
|
requires:
|
|
- prep-deps-npm
|
|
- prep-build
|
|
- test-e2e-beta-chrome:
|
|
requires:
|
|
- prep-deps-npm
|
|
- prep-build
|
|
- test-e2e-beta-firefox:
|
|
requires:
|
|
- prep-deps-npm
|
|
- prep-build
|
|
- 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-scss
|
|
- test-integration-flat-chrome:
|
|
requires:
|
|
- prep-deps-npm
|
|
- prep-scss
|
|
- test-integration-flat-firefox:
|
|
requires:
|
|
- prep-deps-npm
|
|
- prep-scss
|
|
- all-tests-pass:
|
|
requires:
|
|
- test-lint
|
|
- test-unit
|
|
- test-e2e-chrome
|
|
- test-e2e-firefox
|
|
- test-e2e-beta-chrome
|
|
- test-e2e-beta-firefox
|
|
- test-integration-mascara-chrome
|
|
- test-integration-mascara-firefox
|
|
- test-integration-flat-chrome
|
|
- test-integration-flat-firefox
|
|
- job-screens:
|
|
requires:
|
|
- prep-deps-npm
|
|
- prep-build
|
|
- all-tests-pass
|
|
- job-publish-prerelease:
|
|
requires:
|
|
- prep-deps-npm
|
|
- prep-build
|
|
- job-screens
|
|
- all-tests-pass
|
|
- job-publish-release:
|
|
filters:
|
|
branches:
|
|
only: master
|
|
requires:
|
|
- prep-deps-npm
|
|
- prep-build
|
|
- prep-docs
|
|
- job-screens
|
|
- all-tests-pass
|
|
|
|
jobs:
|
|
prep-deps-npm:
|
|
docker:
|
|
- image: circleci/node:8.11.3-browsers
|
|
steps:
|
|
- checkout
|
|
- restore_cache:
|
|
keys:
|
|
- v1.0-dependency-cache-{{ checksum "package-lock.json" }}
|
|
- run:
|
|
name: Install npm 6 + deps via npm
|
|
command: |
|
|
sudo npm install -g npm@6 && npm install --no-save
|
|
- persist_to_workspace:
|
|
root: .
|
|
paths:
|
|
- node_modules
|
|
- save_cache:
|
|
key: v1.0-dependency-cache-{{ checksum "package-lock.json" }}
|
|
paths:
|
|
- node_modules
|
|
|
|
prep-build:
|
|
docker:
|
|
- image: circleci/node:8.11.3-browsers
|
|
steps:
|
|
- checkout
|
|
- attach_workspace:
|
|
at: .
|
|
- run:
|
|
name: build:dist
|
|
command: npm run 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:8.11.3-browsers
|
|
steps:
|
|
- checkout
|
|
- attach_workspace:
|
|
at: .
|
|
- run:
|
|
name: build:dist
|
|
command: npm run doc
|
|
- persist_to_workspace:
|
|
root: .
|
|
paths:
|
|
- docs/jsdocs
|
|
|
|
prep-scss:
|
|
docker:
|
|
- image: circleci/node:8.11.3-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: npm run test:integration:build
|
|
- persist_to_workspace:
|
|
root: .
|
|
paths:
|
|
- ui/app/css/output
|
|
|
|
test-lint:
|
|
docker:
|
|
- image: circleci/node:8.11.3-browsers
|
|
steps:
|
|
- checkout
|
|
- attach_workspace:
|
|
at: .
|
|
- run:
|
|
name: Test
|
|
command: npm run lint
|
|
|
|
test-deps:
|
|
docker:
|
|
- image: circleci/node:8.11.3-browsers
|
|
steps:
|
|
- checkout
|
|
- attach_workspace:
|
|
at: .
|
|
- run:
|
|
name: Test
|
|
command: npx nsp check
|
|
|
|
test-e2e-chrome:
|
|
docker:
|
|
- image: circleci/node:8.11.3-browsers
|
|
steps:
|
|
- checkout
|
|
- attach_workspace:
|
|
at: .
|
|
- run:
|
|
name: test:e2e:chrome
|
|
command: npm run test:e2e:chrome
|
|
- store_artifacts:
|
|
path: test-artifacts
|
|
destination: test-artifacts
|
|
|
|
test-e2e-firefox:
|
|
docker:
|
|
- image: circleci/node:8.11.3-browsers
|
|
steps:
|
|
- checkout
|
|
- run:
|
|
name: Install Firefox
|
|
command: ./.circleci/scripts/firefox-install
|
|
- attach_workspace:
|
|
at: .
|
|
- run:
|
|
name: test:e2e:firefox
|
|
command: npm run test:e2e:firefox
|
|
- store_artifacts:
|
|
path: test-artifacts
|
|
destination: test-artifacts
|
|
|
|
test-e2e-beta-chrome:
|
|
docker:
|
|
- image: circleci/node:8.11.3-browsers
|
|
steps:
|
|
- checkout
|
|
- attach_workspace:
|
|
at: .
|
|
- run:
|
|
name: test:e2e:chrome:beta
|
|
command: npm run test:e2e:chrome:beta
|
|
- store_artifacts:
|
|
path: test-artifacts
|
|
destination: test-artifacts
|
|
|
|
test-e2e-beta-firefox:
|
|
docker:
|
|
- image: circleci/node:8.11.3-browsers
|
|
steps:
|
|
- checkout
|
|
- run:
|
|
name: Install Firefox
|
|
command: ./.circleci/scripts/firefox-install
|
|
- attach_workspace:
|
|
at: .
|
|
- run:
|
|
name: test:e2e:firefox:beta
|
|
command: npm run test:e2e:firefox:beta
|
|
- store_artifacts:
|
|
path: test-artifacts
|
|
destination: test-artifacts
|
|
|
|
job-screens:
|
|
docker:
|
|
- image: circleci/node:8.11.3-browsers
|
|
steps:
|
|
- checkout
|
|
- attach_workspace:
|
|
at: .
|
|
- run:
|
|
name: Test
|
|
command: npm run test:screens
|
|
- persist_to_workspace:
|
|
root: .
|
|
paths:
|
|
- test-artifacts
|
|
|
|
job-publish-prerelease:
|
|
docker:
|
|
- image: circleci/node:8.11.3-browsers
|
|
steps:
|
|
- checkout
|
|
- attach_workspace:
|
|
at: .
|
|
- store_artifacts:
|
|
path: dist/mascara
|
|
destination: builds/mascara
|
|
- 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:8.11.3-browsers
|
|
steps:
|
|
- checkout
|
|
- attach_workspace:
|
|
at: .
|
|
- run:
|
|
name: sentry sourcemaps upload
|
|
command: npm run sentry:publish
|
|
- run:
|
|
name: github gh-pages docs publish
|
|
command: >
|
|
git config user.name metamaskbot
|
|
git config user.email admin@metamask.io
|
|
gh-pages -d docs/jsdocs
|
|
|
|
test-unit:
|
|
docker:
|
|
- image: circleci/node:8.11.3-browsers
|
|
steps:
|
|
- checkout
|
|
- attach_workspace:
|
|
at: .
|
|
- run:
|
|
name: test:coverage
|
|
command: npm run test:coverage
|
|
|
|
test-integration-flat-firefox:
|
|
docker:
|
|
- image: circleci/node:8.11.3-browsers
|
|
steps:
|
|
- checkout
|
|
- attach_workspace:
|
|
at: .
|
|
- run:
|
|
name: Install Firefox
|
|
command: ./.circleci/scripts/firefox-install
|
|
- run:
|
|
name: test:integration:flat
|
|
command: npm run test:flat
|
|
|
|
test-integration-flat-chrome:
|
|
environment:
|
|
browsers: '["Chrome"]'
|
|
docker:
|
|
- image: circleci/node:8.11.3-browsers
|
|
steps:
|
|
- checkout
|
|
- attach_workspace:
|
|
at: .
|
|
- run:
|
|
name: test:integration:flat
|
|
command: npm run test:flat
|
|
|
|
test-integration-mascara-firefox:
|
|
docker:
|
|
- image: circleci/node:8.11.3-browsers
|
|
steps:
|
|
- checkout
|
|
- attach_workspace:
|
|
at: .
|
|
- run:
|
|
name: Install Firefox
|
|
command: ./.circleci/scripts/firefox-install
|
|
- run:
|
|
name: test:integration:mascara
|
|
command: npm run test:mascara
|
|
|
|
test-integration-mascara-chrome:
|
|
environment:
|
|
browsers: '["Chrome"]'
|
|
docker:
|
|
- image: circleci/node:8.11.3-browsers
|
|
steps:
|
|
- checkout
|
|
- attach_workspace:
|
|
at: .
|
|
- run:
|
|
name: test:integration:mascara
|
|
command: npm run test:mascara
|
|
|
|
all-tests-pass:
|
|
docker:
|
|
- image: circleci/node:8.11.3-browsers
|
|
steps:
|
|
- run:
|
|
name: All Tests Passed
|
|
command: echo 'weew - everything passed!'
|