mirror of
https://github.com/kremalicious/metamask-extension.git
synced 2024-12-23 09:52:26 +01:00
286 lines
8.9 KiB
YAML
286 lines
8.9 KiB
YAML
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-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-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-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!'
|