|
|
|
version: 2.1
|
|
|
|
|
|
|
|
executors:
|
|
|
|
default:
|
|
|
|
docker:
|
|
|
|
- image: circleci/node:10-stretch-browsers
|
|
|
|
environment:
|
|
|
|
- FIREFOX_VERSION: "60.0esr"
|
|
|
|
- GECKODRIVER_VERSION: "0.24.0"
|
|
|
|
working_directory: ~
|
|
|
|
|
|
|
|
commands:
|
|
|
|
install_firefox:
|
|
|
|
steps:
|
|
|
|
- restore_cache:
|
|
|
|
key: firefox-bin
|
|
|
|
paths:
|
|
|
|
- ~/firefox
|
|
|
|
- run:
|
|
|
|
name: Install Firefox
|
|
|
|
command: |
|
|
|
|
test -d ~/firefox/${FIREFOX_VERSION} && exit 0
|
|
|
|
url=https://ftp.mozilla.org/pub/firefox/releases/${FIREFOX_VERSION}/linux-x86_64/en-US/firefox-${FIREFOX_VERSION}.tar.bz2
|
|
|
|
curl -sSL -o- "$url" | tar xvfj -
|
|
|
|
mkdir -p ~/firefox
|
|
|
|
mv firefox ~/firefox/${FIREFOX_VERSION}
|
|
|
|
- save_cache:
|
|
|
|
key: firefox-bin
|
|
|
|
paths:
|
|
|
|
- ~/firefox
|
|
|
|
- run: echo 'export PATH=~/firefox/$FIREFOX_VERSION:$PATH' >> $BASH_ENV
|
|
|
|
|
|
|
|
install_geckodriver:
|
|
|
|
steps:
|
|
|
|
- run:
|
|
|
|
name: Install geckodriver
|
|
|
|
command: |
|
|
|
|
mkdir -p geckodriver
|
|
|
|
|
|
|
|
url=https://github.com/mozilla/geckodriver/releases/download/v0.24.0/geckodriver-v${GECKODRIVER_VERSION}-linux64.tar.gz
|
|
|
|
curl -sSLf "$url" | tar -C geckodriver xvf -
|
|
|
|
|
|
|
|
echo 'export PATH=~/geckodriver/$GECKODRIVER_VERSION:$PATH' >> $BASH_ENV
|
|
|
|
|
|
|
|
setup_npm:
|
|
|
|
steps:
|
|
|
|
- restore_cache:
|
|
|
|
key: dependency-cache-{{ checksum "package-lock.json" }}
|
|
|
|
- run:
|
|
|
|
name: Install dependencies
|
|
|
|
command: npm install
|
|
|
|
- save_cache:
|
|
|
|
key: dependency-cache-{{ checksum "package-lock.json" }}
|
|
|
|
paths:
|
|
|
|
- node_modules
|
|
|
|
|
|
|
|
jobs:
|
|
|
|
build:
|
|
|
|
executor:
|
|
|
|
name: default
|
|
|
|
steps:
|
|
|
|
- install_firefox
|
|
|
|
- checkout
|
|
|
|
- setup_npm
|
|
|
|
- run: npm run lint
|
|
|
|
- run:
|
|
|
|
# NOTE: Karma loads ts-node automatically and treats karma.conf.js as a TypeScript.
|
|
|
|
# Karma does not starts by karma.conf.js transpile failure, and this hack removes
|
|
|
|
# ts-node module from the local before test.
|
|
|
|
# See: https://github.com/karma-runner/karma/issues/3329
|
|
|
|
name: Remove node-ts from node_modules
|
|
|
|
command: mv node_modules/ts-node node_modules/ts-node.orig
|
|
|
|
- run: npm test
|
|
|
|
- run: npm run package
|
|
|
|
|
|
|
|
e2e:
|
|
|
|
executor:
|
|
|
|
name: default
|
|
|
|
steps:
|
|
|
|
- run: sudo apt-get update && sudo apt-get -y install xsel
|
|
|
|
- install_firefox
|
|
|
|
- checkout
|
|
|
|
- setup_npm
|
|
|
|
- run: npm run build
|
|
|
|
- run: npm run test:e2e
|
|
|
|
|
|
|
|
deploy:
|
|
|
|
executor:
|
|
|
|
name: default
|
|
|
|
steps:
|
|
|
|
- checkout
|
|
|
|
- setup_npm
|
|
|
|
- run: npm run package
|
|
|
|
- run:
|
|
|
|
name: Deploy to AMO
|
|
|
|
command: |
|
|
|
|
version=$(jq -r '.version' manifest.json)
|
|
|
|
./script/deploy vim-vixen@i-beam.org "$version" "vim-vixen-${version}.zip"
|
|
|
|
|
|
|
|
workflows:
|
|
|
|
version: 2
|
|
|
|
build_and_test:
|
|
|
|
jobs:
|
|
|
|
- build
|
|
|
|
- e2e:
|
|
|
|
filters:
|
|
|
|
branches:
|
|
|
|
ignore: /^greenkeeper\/.*/
|
|
|
|
deploy:
|
|
|
|
jobs:
|
|
|
|
- build:
|
|
|
|
filters:
|
|
|
|
tags:
|
|
|
|
only: /^.*/
|
|
|
|
branches:
|
|
|
|
ignore: /.*/
|
|
|
|
- e2e:
|
|
|
|
filters:
|
|
|
|
tags:
|
|
|
|
only: /^.*/
|
|
|
|
branches:
|
|
|
|
ignore: /.*/
|
|
|
|
- deploy:
|
|
|
|
requires:
|
|
|
|
- build
|
|
|
|
- e2e
|
|
|
|
filters:
|
|
|
|
tags:
|
|
|
|
only: /^.*/
|
|
|
|
branches:
|
|
|
|
ignore: /.*/
|