mirror of
https://github.com/Smaug123/KaTeX
synced 2025-10-05 19:28:39 +00:00
Node v8 will reach its end-of-life by December 2019. Co-authored-by: Erik Demaine <edemaine@mit.edu>
138 lines
3.9 KiB
YAML
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
|