2017-08-30 02:09:09 +02:00
|
|
|
# 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 .
|
2017-12-02 01:31:29 +01:00
|
|
|
- image: gregprice/circleci:trusty-python-2.test
|
2017-08-30 02:09:09 +02:00
|
|
|
|
|
|
|
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:
|
2017-12-02 00:56:07 +01:00
|
|
|
- v1-node-base2
|
2017-08-30 02:09:09 +02:00
|
|
|
- v1-node-base1
|
|
|
|
- restore_cache:
|
|
|
|
keys:
|
2017-12-02 00:56:07 +01:00
|
|
|
- v1-venv-base2
|
2017-08-30 02:09:09 +02:00
|
|
|
- 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.
|
|
|
|
|
|
|
|
# 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
|
2017-12-02 00:56:07 +01:00
|
|
|
key: v1-node-base2
|
2017-08-30 02:09:09 +02:00
|
|
|
- save_cache:
|
|
|
|
paths:
|
|
|
|
- /srv/zulip-venv-cache
|
2017-12-02 00:56:07 +01:00
|
|
|
key: v1-venv-base2
|
2017-08-30 02:09:09 +02:00
|
|
|
# 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
|