pinafore/.circleci/config.yml

100 lines
3.1 KiB
YAML

version: 2.1
workflows:
version: 2
build:
jobs:
- build_and_test
jobs:
build_and_test:
working_directory: ~/pinafore
docker:
# see https://discuss.circleci.com/t/build-failed-the-engine-node-is-incompatible-with-this-module-expected-version-12-x-got-14-15-0/37921/7
# we want Node v12, not v14
- image: circleci/ruby@sha256:b018ec2a8f0bbf06880735d2801402bad316c465edb60663be83ac8f1086b805
- image: circleci/postgres:12.2
environment:
POSTGRES_USER: pinafore
POSTGRES_PASSWORD: pinafore
POSTGRES_DB: pinafore_development
BROWSER: chrome:headless
- image: circleci/redis:5-alpine
steps:
- checkout
- run:
name: Install system dependencies
command: |
sudo apt-get update
sudo apt-get install -y ffmpeg fonts-noto-color-emoji libicu-dev libidn11-dev libprotobuf-dev postgresql-contrib protobuf-compiler
- run:
name: Check node version
command: node -v
- restore_cache:
name: Restore yarn cache
key: yarn-v1-{{ checksum "yarn.lock" }}
- run:
name: Yarn install
command: yarn install --immutable
- run:
name: Clone mastodon
command: yarn clone-mastodon
- restore_cache:
name: Restore bundler cache
key: bundler-v2-{{ checksum "mastodon/Gemfile.lock" }}
- run:
name: Lint
command: yarn lint
- run:
name: Unit tests
command: yarn test-unit
- run:
name: Install mastodon
command: yarn install-mastodon
- run:
name: Wait for postgres to be ready
command: |
for i in `seq 1 10`;
do
nc -z localhost 5432 && echo Success && exit 0
echo -n .
sleep 1
done
echo Failed waiting for postgres && exit 1
- run:
name: Wait for redis to be ready
command: |
for i in `seq 1 10`;
do
nc -z localhost 6379 && echo Success && exit 0
echo -n .
sleep 1
done
echo Failed waiting for redis && exit 1
- run:
name: Copy vercel.json
command: cp vercel.json vercel-old.json
- run:
name: Build
command: yarn build
- run:
name: Check vercel.json unchanged
command: |
if ! diff -q vercel-old.json vercel.json &>/dev/null; then
diff vercel-old.json vercel.json
echo "vercel.json changed, run yarn build and make sure everything looks okay"
exit 1
fi
- run:
name: Integration tests
command: yarn test-in-ci
- save_cache:
name: Save yarn cache
key: yarn-v1-{{ checksum "yarn.lock" }}
paths:
- ~/.cache/yarn
- save_cache:
name: Save bundler cache
key: bundler-v2-{{ checksum "mastodon/Gemfile.lock" }}
paths:
- mastodon/vendor/bundle