nifty-wallet/.circleci/config.yml

286 lines
8.9 KiB
YAML
Raw Normal View History

2018-03-09 12:47:01 -08:00
version: 2
workflows:
version: 2
full_test:
2018-03-09 12:47:01 -08:00
jobs:
- prep-deps-npm
- prep-deps-firefox
2018-03-27 14:16:58 -07:00
- prep-build:
requires:
- prep-deps-npm
2018-03-09 13:41:18 -08:00
- prep-scss:
2018-03-09 13:43:18 -08:00
requires:
- prep-deps-npm
- test-lint:
2018-03-09 12:47:01 -08:00
requires:
- prep-deps-npm
2018-03-27 13:36:09 -07:00
- test-e2e:
requires:
2018-03-27 14:16:58 -07:00
- prep-build
2018-03-27 13:36:09 -07:00
- 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
2018-03-09 12:47:01 -08:00
2018-03-09 12:38:28 -08:00
jobs:
prep-deps-npm:
2018-03-09 12:38:28 -08:00
docker:
- image: circleci/node:8-browsers
steps:
- checkout
- restore_cache:
2018-03-09 13:04:53 -08:00
key: dependency-cache-{{ checksum "package-lock.json" }}
2018-03-09 12:38:28 -08:00
- run:
2018-03-09 14:01:42 -08:00
name: Install deps via npm
2018-03-09 12:38:28 -08:00
command: npm install
- save_cache:
2018-03-09 13:04:53 -08:00
key: dependency-cache-{{ checksum "package-lock.json" }}
2018-03-09 12:38:28 -08:00
paths:
- node_modules
prep-deps-firefox:
docker:
- image: circleci/node:8-browsers
steps:
- checkout
- run:
name: Download Firefox
2018-03-09 14:58:02 -08:00
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:
2018-03-09 15:20:59 -08:00
key: dependency-cache-firefox-{{ .Revision }}
2018-03-09 14:58:02 -08:00
paths:
- firefox
2018-03-09 14:58:02 -08:00
2018-03-27 14:16:58 -07:00
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
2018-03-28 09:58:07 -07:00
- 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)
2018-03-29 00:17:14 -07:00
BUILD_LINK_BASE="https://$CIRCLE_BUILD_NUM-42009758-gh.circle-artifacts.com/0/builds"
VERSION=$(node -p 'require("./dist/chrome/manifest.json").version')
2018-03-29 00:24:50 -07:00
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"
2018-03-29 00:17:14 -07:00
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
2018-03-09 13:50:57 -08:00
# this allows us to checksum against a whole directory
2018-03-09 15:30:58 -08:00
command: find ui/app/css -type f -exec md5sum {} \; | sort -k 2 > scss_checksum
- run:
name: Build for integration tests
2018-03-09 13:50:57 -08:00
command: npm run test:integration:build
- save_cache:
key: scss-cache-{{ checksum "scss_checksum" }}
paths:
- ui/app/css/output
test-lint:
2018-03-09 12:38:28 -08:00
docker:
- image: circleci/node:8-browsers
steps:
- checkout
2018-03-09 13:04:53 -08:00
- restore_cache:
key: dependency-cache-{{ checksum "package-lock.json" }}
2018-03-09 12:38:28 -08:00
- run:
name: Test
command: npm run lint
2018-03-27 13:36:09 -07:00
test-e2e:
docker:
- image: circleci/node:8-browsers
steps:
- checkout
- restore_cache:
key: dependency-cache-{{ checksum "package-lock.json" }}
2018-03-27 14:16:58 -07:00
- restore_cache:
key: build-cache-{{ .Revision }}
2018-03-27 13:36:09 -07:00
- run:
name: Test
command: npm run test:e2e
2018-03-29 13:59:39 -07:00
- store_artifacts:
path: test-artifacts
destination: test-artifacts
2018-03-27 13:36:09 -07:00
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:
2018-03-10 11:13:27 -08:00
browsers: '["Firefox"]'
docker:
- image: circleci/node:8-browsers
steps:
- checkout
2018-03-09 14:58:02 -08:00
- restore_cache:
2018-03-09 15:20:59 -08:00
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
2018-03-09 15:30:58 -08:00
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:
2018-03-10 11:13:27 -08:00
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:
2018-03-10 11:13:27 -08:00
browsers: '["Firefox"]'
docker:
- image: circleci/node:8-browsers
steps:
- checkout
2018-03-09 14:58:02 -08:00
- restore_cache:
2018-03-09 15:20:59 -08:00
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
2018-03-09 15:30:58 -08:00
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:
2018-03-10 11:13:27 -08:00
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!'