# 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