Skip to content
Permalink
Branch: master
Find file Copy path
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
159 lines (149 sloc) 7.83 KB
# Used old infrastructure, needed for integration tests:
# http://docs.travis-ci.com/user/workers/standard-infrastructure/
sudo: required
# NOTE: We use precise because tests finish faster than on Xenial
dist: precise
language: python
branches:
only:
- master
- /^v[0-9]+\.[0-9]+$/
env:
global:
- IS_NIGHTLY_BUILD=$([ "${TRAVIS_EVENT_TYPE}" = "cron" ] && echo "yes" || echo "no")
# NOTE: We only enable coverage for master builds and not pull requests
# since it has huge performance overhead (tests are 50% or so slower)
- ENABLE_COVERAGE=$([ "${TRAVIS_PULL_REQUEST}" = "false" ] && [ "${IS_NIGHTLY_BUILD}" = "no" ] && echo "yes" || echo "no")
# We need to explicitly specify terminal width otherwise some CLI tests fail on container
# environments where small terminal size is used.
- COLUMNS=120
- PYLINT_CONCURRENCY=2
# We only run tests with "--with-timer" flag on master and not for PRs since it adds 1-2
# # minutes of overhead to each build.
- NOSE_TIME=$([ "${TRAVIS_PULL_REQUEST}" = "false" ] && [ "${IS_NIGHTLY_BUILD}" = "no" ] && echo "yes" || echo "no")
matrix:
include:
# NOTE: We combine builds because Travis offers a maximum of 5 concurrent
# builds and having 6 tasks / builds means 1 tasks will need to wait for one
# of the other 5 tasks to finish before it can start
# NOTE: Thresholds only apply to the make target and not to the whole build
# job which also includes "make requirements" and other steps
# "make requirements" can take substantially lower if the cache is purged
# and this would cause too many intermediate failures / false positives
- env: TASK=ci-unit CACHE_NAME=py2 COMMAND_THRESHOLD=700
python: 2.7
name: "Unit Tests (Python 2.7 MongoDB 3.4)"
#- env: TASK=ci-unit CACHE_NAME=py2 COMMAND_THRESHOLD=700
#python: 2.7
#name: "Unit Tests (Python 2.7 MongoDB 3.6)"
#addons:
# apt:
# sources:
# - mongodb-upstart
# - sourceline: 'deb [arch=amd64] http://repo.mongodb.org/apt/ubuntu precise/mongodb-org/3.6 multiverse'
# key_url: 'https://www.mongodb.org/static/pgp/server-3.6.asc'
# - sourceline: 'ppa:git-core/ppa'
# packages:
# - mongodb-org-server
# - mongodb-org-shell
# - git
- env: TASK=ci-integration CACHE_NAME=py2 COMMAND_THRESHOLD=700
python: 2.7
name: "Integration Tests (Python 2.7)"
- env: TASK="ci-checks ci-packs-tests" CACHE_NAME=py2 COMMAND_THRESHOLD=280
python: 2.7
name: "Lint Checks, Packs Tests (Python 2.7)"
- env: TASK="compilepy3 ci-py3-unit" CACHE_NAME=py3 COMMAND_THRESHOLD=680
python: 3.6
name: "Unit Tests, Pack Tests (Python 3.6)"
- env: TASK="ci-py3-integration" CACHE_NAME=py3 COMMAND_THRESHOLD=310
python: 3.6
name: "Integration Tests (Python 3.6)"
addons:
apt:
sources:
- mongodb-upstart
- sourceline: 'deb [arch=amd64] http://repo.mongodb.org/apt/ubuntu precise/mongodb-org/3.4 multiverse'
key_url: 'https://www.mongodb.org/static/pgp/server-3.4.asc'
# NOTE: Precise repo doesn't contain Erlang 20.x, latest version is 19.x so we need to use RabbitMQ 3.7.6
#- sourceline: 'deb [arch=amd64] http://packages.erlang-solutions.com/ubuntu precise contrib'
# key_url: 'https://packages.erlang-solutions.com/ubuntu/erlang_solutions.asc'
#- sourceline: 'deb [arch=amd64] https://dl.bintray.com/rabbitmq/debian precise rabbitmq-server-v3.6.x'
# key_url: 'https://github.com/rabbitmq/signing-keys/releases/download/2.0/rabbitmq-release-signing-key.asc'
- sourceline: 'ppa:git-core/ppa'
packages:
- mongodb-org-server
- mongodb-org-shell
- erlang
- rabbitmq-server
- git
- libffi-dev
cache:
pip: true
directories:
# NOTE: If using a custom "install" step aka overriding "install" step, "cache.pip: true" doesn't work
# and directory needs to be explicitly added to the cache.
# See https://github.com/travis-ci/travis-ci/issues/3239, https://github.com/oppia/oppia/pull/5281 for details.
- $HOME/.cache/pip
- virtualenv/
# NOTE: Caching .tox speeds up py3 build for 30-60 seconds, but causes issues when dependencies
# are updated so it's disabled
#- .tox/
before_install:
- pip install --upgrade "pip>=19.0,<20.0"
- sudo pip install --upgrade "virtualenv==16.6.0"
install:
- ./scripts/travis/install-requirements.sh
- if [ "${TASK}" = 'ci-unit' ] || [ "${TASK}" = 'ci-integration' ] || [ "${TASK}" = 'ci-checks ci-packs-tests' ] || [ "${TASK}" = 'compilepy3 ci-py3-unit' ] || [ "${TASK}" = 'ci-py3-integration' ]; then sudo .circle/add-itest-user.sh; fi
# Let's enable rabbitmqadmin
# See https://github.com/messagebus/lapine/wiki/Testing-on-Travis.
before_script:
# Use a custom mongod.conf which uses various speed optimizations
- sudo cp scripts/travis/mongod.conf /etc/mongod.conf
# Clean up any old MongoDB 3.4 data files laying around and make sure mongodb user can write to it
- sudo rm -rf /var/lib/mongodb ; sudo mkdir /var/lib/mongodb ; sudo chown -R mongodb:mongodb /var/lib/mongodb
- sudo service mongod restart ; sleep 5
- sudo service mongod status
- sudo tail -n 30 /var/log/mongodb/mongod.log
# Use custom RabbitMQ config which enables SSL / TLS listener on port 5671 with test certs
- sudo cp scripts/travis/rabbitmq.config /etc/rabbitmq/rabbitmq.config
# Install rabbitmq_management RabbitMQ plugin
- sudo service rabbitmq-server restart ; sleep 5
- sudo rabbitmq-plugins enable rabbitmq_management
- sudo wget http://guest:guest@localhost:15672/cli/rabbitmqadmin -O /usr/local/bin/rabbitmqadmin
- sudo chmod +x /usr/local/bin/rabbitmqadmin
- sudo service rabbitmq-server restart
- sudo tail -n 30 /var/log/rabbitmq/*
# Print various binary versions
- mongod --version
- git --version
- pip --version
- virtualenv --version
# Print out various environment variables info
- make play
script:
# Clean up egg-info directories which get created when installing runners
# NOTE: We enable code coverage and per test timing information on master so build can take twice
# as long as PR builds
- if [ "${TRAVIS_PULL_REQUEST}" = "false" ] && [ "${IS_NIGHTLY_BUILD}" = "no" ]; then COMMAND_THRESHOLD=$(expr ${COMMAND_THRESHOLD} \* 2); fi; ./scripts/travis/time-command.sh "make ${TASK}" ${COMMAND_THRESHOLD}
# Run any additional nightly checks only as part of a nightly (cron) build
- if [ "${IS_NIGHTLY_BUILD}" = "yes" ]; then ./scripts/travis/run-nightly-make-task-if-exists.sh "${TASK}"; fi
# NOTE: We only generate and submit coverage report for master and version branches
# NOTE: We put this here and not after_success so build is marked as failed if this step fails
# See https://docs.travis-ci.com/user/customizing-the-build/#breaking-the-build
# https://github.com/travis-ci/travis-ci/issues/758#issuecomment-266756853
- if [ ${TASK} = 'ci-unit' ] || [ ${TASK} = 'ci-integration' ] && [ "${ENABLE_COVERAGE}" = 'yes' ]; then ./scripts/travis/submit-codecov-coverage.sh; fi
# Don't store cache for target PR branch (typically `master`), because it will be re-used for opened PRs
# See: https://docs.travis-ci.com/user/caching/#Pull-request-builds-and-caches
# Alternative: use strict pip pinning, including git-based pip packages
before_cache:
- if [ ${TRAVIS_PULL_REQUEST} = 'false' ] && [ "${IS_NIGHTLY_BUILD}" = "no" ]; then rm -rf virtualenv/; fi
# We want to be notified when a master or nightly build fails
notifications:
# Post build failures to '#stackstorm' channel in 'stackstorm' Slack
slack:
rooms:
- secure: "rPA22aDgvNe0/S/2e+cp1rSDdDUPufLXnCbfnRzMPVDSQ2UPdLmEl9IeOoEHZmq92AZtzY8UnQaPFuoM0HAPrYDgKopn4n4KpOo+xUlJ92qdNj5qk3Z1TmQHwUYFvCkMvaR/CpX2liRr/YB3qM+1vFAMsYgmqrBX8vcEqNJQy/M="
on_pull_requests: false
on_success: change # default: always
on_failure: always # default: always
You can’t perform that action at this time.