Files
KaTeX/.circleci/config.yml
ylemkimon 3205e91731 Upgrade minimum development Node version to v10 (#2177)
Node v8 will reach its end-of-life by December 2019.

Co-authored-by: Erik Demaine <edemaine@mit.edu>
2020-01-06 13:58:04 -05:00

138 lines
3.9 KiB
YAML

version: 2.1
executors:
firefox:
docker:
- image: circleci/node:10
- image: selenium/standalone-firefox:2.48.2
chrome:
docker:
- image: circleci/node:10
- image: selenium/standalone-chrome:2.48.2
environment:
# workaround for https://github.com/SeleniumHQ/docker-selenium/issues/87
DBUS_SESSION_BUS_ADDRESS: /dev/null
commands:
checkout_repo:
steps:
- checkout
- run:
name: Checkout submodule
command: |
git submodule sync
git submodule update --init --recursive
- run:
name: Get changed files
command: |
if [[ $CIRCLE_PULL_REQUEST ]]; then
BASE_COMMIT=$(curl -s -H "Authorization: token a61ecb2fc5b72da54431""1b3db3875c96854958a8" \
https://api.github.com/repos/$CIRCLE_PROJECT_USERNAME/$CIRCLE_PROJECT_REPONAME/pulls/$CIRCLE_PR_NUMBER \
| jq -r ".base.sha | select(. != null)")...
else
BASE_COMMIT=HEAD^
fi
if [[ $BASE_COMMIT ]]; then
CHANGED=$(git diff --name-only $BASE_COMMIT)
echo "$CHANGED"
echo "export CHANGED=\"$CHANGED\"" >> $BASH_ENV
fi
skip_if_only_changed:
parameters:
filter:
type: string
steps:
- run:
name: Skip tests if only "<< parameters.filter >>" are changed
command: echo "$CHANGED" | grep -qvE '<< parameters.filter >>' || circleci step halt
install_dependencies:
steps:
- restore_cache:
keys:
- yarn-deps-v3-{{ checksum "yarn.lock" }}
- yarn-deps-v3-
- run:
name: Install dependencies
command: yarn --frozen-lockfile
- save_cache:
key: yarn-deps-v3-{{ checksum "yarn.lock" }}
paths:
- node_modules
codecov:
parameters:
flag:
type: string
steps:
- run:
name: Upload code coverage reports to Codecov
# do not upload if screenshotter tests are skipped
command: ./node_modules/.bin/codecov -F "<< parameters.flag >>"
jobs:
test:
docker:
- image: circleci/node:10
steps:
- run:
name: Check whether the build is running on the main repository
command: |
if [[ $CIRCLE_PULL_REQUEST && $CIRCLE_PROJECT_USERNAME != "KaTeX" ]]; then
echo "Please disable CircleCI on your forked repository!"
exit 1
fi
- checkout_repo
- skip_if_only_changed:
filter: '^docs/|^LICENSE|\.md$'
- install_dependencies
- run:
name: Lint code
command: yarn test:lint
- skip_if_only_changed:
filter: '^static/|^website/'
- run:
name: Run Flow and Jest tests
command: |
yarn test:flow
yarn test:jest --coverage --runInBand
- codecov:
flag: test
screenshotter:
parameters:
browser:
type: executor
executor: << parameters.browser >>
steps:
- checkout_repo
- skip_if_only_changed:
filter: '^docs/|^static/|^website/|^LICENSE|\.md$'
- install_dependencies
- run:
name: Verify screenshots and generate diffs and new screenshots
command: node dockers/screenshotter/screenshotter.js --selenium-ip localhost -b $CIRCLE_JOB --verify --diff --new --coverage
- codecov:
flag: screenshotter
- store_artifacts:
path: test/screenshotter/new
destination: new
- store_artifacts:
path: test/screenshotter/diff
destination: diff
workflows:
test:
jobs:
- test
- screenshotter:
name: firefox
browser: firefox
- screenshotter:
name: chrome
browser: chrome