zulip/.circleci/config.yml

79 lines
2.4 KiB
YAML

# See CircleCI upstream's docs on this config format:
# https://circleci.com/docs/2.0/language-python/
#
version: 2
jobs:
build:
docker:
# This is built from tools/circleci/images/Dockerfile .
- image: gregprice/circleci:trusty-python-3.test
working_directory: ~/repo
steps:
- checkout
- run:
name: create cache directories
command: |
dirs=(/srv/zulip-{npm,venv}-cache)
sudo mkdir -p "${dirs[@]}"
sudo chown -R circleci "${dirs[@]}"
- restore_cache:
keys:
- v1-node-base2
- v1-node-base1
- restore_cache:
keys:
- v1-venv-base2
- v1-venv-base1
- run:
name: install dependencies
command: |
# Install moreutils so we can use `ts` and `mispipe` in the following.
sudo apt-get install -y moreutils
# TODO: Install and use codecov.
# CircleCI sets the following in Git config at clone time:
# url.ssh://git@github.com.insteadOf https://github.com
# This breaks the Git clones in the NVM `install.sh` we run
# in `install-node`.
# TODO: figure out why that breaks, and whether we want it.
# (Is it an optimization?)
rm -f /home/circleci/.gitconfig
# This is the main setup job for the test suite
mispipe "tools/travis/setup-backend" ts
# Cleaning caches is mostly unnecessary in Circle, because
# most builds don't get to write to the cache.
# mispipe "scripts/lib/clean-unused-caches --verbose --threshold 0" ts
- save_cache:
paths:
- /srv/zulip-npm-cache
key: v1-node-base2
- save_cache:
paths:
- /srv/zulip-venv-cache
key: v1-venv-base2
# TODO: in Travis we also cache ~/zulip-emoji-cache, ~/node, ~/misc
# The moment of truth!
# TODO: add frontend suite; prod suite; and backend on Python 3.5
# TODO: add parallelism; see https://circleci.com/docs/2.0/workflows/
- run:
name: run tests
command: |
. /srv/zulip-py3-venv/bin/activate
mispipe ./tools/travis/backend ts
# - store_artifacts: # TODO
# path: var/casper/
# # also /tmp/zulip-test-event-log/
# destination: test-reports
# TODO: notify zulipbot