dist: trusty group: deprecated-2017Q4 language: python python: 2.7 branches: only: - master cache: yarn: true directories: - "${HOME}/virtualenv/python$(python -c 'import platform; print(platform.python_version())')" - "$NODE_DIR" - node_modules - "${HOME}/google-cloud-sdk" addons: apt: update: true packages: - libxmlsec1-dev - libgeoip-dev chrome: stable env: global: - NODE_ENV=development - PIP_DISABLE_PIP_VERSION_CHECK=on - PIP_QUIET=1 - SENTRY_LIGHT_BUILD=1 - SENTRY_SKIP_BACKEND_VALIDATION=1 - SOUTH_TESTS_MIGRATE=1 - DJANGO_VERSION=">=1.6.11,<1.7" # node's version is pinned by .nvmrc and is autodetected by `nvm install`. - NODE_DIR="${HOME}/.nvm/versions/node/v$(< .nvmrc)" - YARN_VERSION="1.13.0" - NODE_OPTIONS=--max-old-space-size=4096 script: # certain commands require sentry init to be run, but this is only true for # running things within Travis - make travis-test-$TEST_SUITE - make travis-scan-$TEST_SUITE # installing dependencies for after_* steps here ensures they get cached # since those steps execute after travis runs `store build cache` after_failure: - dmesg | tail -n 100 after_script: - | coverage_files=$(ls .artifacts/*coverage.xml || true) if [[ -n "$coverage_files" || -f .artifacts/coverage/cobertura-coverage.xml ]]; then pip install codecov codecov -e TEST_SUITE fi - npm install -g @zeus-ci/cli - zeus upload -t "text/xml+xunit" .artifacts/*junit.xml - zeus upload -t "text/xml+coverage" .artifacts/*coverage.xml - zeus upload -t "text/xml+coverage" .artifacts/coverage/cobertura-coverage.xml - zeus upload -t "text/html+pytest" .artifacts/*pytest.html - zeus upload -t "text/plain+pycodestyle" .artifacts/*pycodestyle.log - zeus upload -t "text/xml+checkstyle" .artifacts/*checkstyle.xml - zeus upload -t "application/webpack-stats+json" .artifacts/*webpack-stats.json base_postgres: &postgres_default python: 2.7 services: - memcached - redis-server - postgresql install: - python setup.py install_egg_info - pip install -e ".[dev,tests,optional]" before_script: - psql -c 'create database sentry;' -U postgres before_install: - docker run -d --network host --name clickhouse-server --ulimit nofile=262144:262144 yandex/clickhouse-server:18.14.9 - docker run -d --network host --name snuba --env SNUBA_SETTINGS=test --env CLICKHOUSE_SERVER=localhost:9000 getsentry/snuba - docker ps -a base_acceptance: &acceptance_default python: 2.7 services: - docker - memcached - redis-server - postgresql before_install: - find "$NODE_DIR" -type d -empty -delete - nvm install - npm install -g "yarn@${YARN_VERSION}" - docker run -d --network host --name clickhouse-server --ulimit nofile=262144:262144 yandex/clickhouse-server:18.14.9 - docker run -d --network host --name snuba --env SNUBA_SETTINGS=test --env CLICKHOUSE_SERVER=localhost:9000 getsentry/snuba - docker ps -a install: - yarn install --pure-lockfile - python setup.py install_egg_info - pip install -e ".[dev,tests,optional]" - wget -N "https://chromedriver.storage.googleapis.com/$(curl https://chromedriver.storage.googleapis.com/LATEST_RELEASE_74)/chromedriver_linux64.zip" -P ~/ - unzip ~/chromedriver_linux64.zip -d ~/ - rm ~/chromedriver_linux64.zip - sudo install -m755 ~/chromedriver /usr/local/bin/ before_script: - psql -c 'create database sentry;' -U postgres # each job in the matrix inherits `env/global` and uses everything above, # but custom `services`, `before_install`, `install`, and `before_script` directives # may be defined to define and setup individual job environments with more precision. matrix: fast_finish: true include: # Lint python and javascript together - python: 2.7 name: 'Linter' env: TEST_SUITE=lint install: - find "$NODE_DIR" -type d -empty -delete - nvm install - npm install -g "yarn@${YARN_VERSION}" - pip install -r requirements-dev.txt - yarn install --pure-lockfile - <<: *postgres_default name: 'Backend [Postgres] (1/2)' env: TEST_SUITE=postgres DB=postgres TOTAL_TEST_GROUPS=2 TEST_GROUP=0 - <<: *postgres_default name: 'Backend [Postgres] (2/2)' env: TEST_SUITE=postgres DB=postgres TOTAL_TEST_GROUPS=2 TEST_GROUP=1 # django 1.8 compatibility - <<: *postgres_default name: 'Backend [Postgres] (Django 1.8) (1/2)' env: TEST_SUITE=postgres DB=postgres DJANGO_VERSION=">=1.8,<1.9" TOTAL_TEST_GROUPS=2 TEST_GROUP=0 - <<: *postgres_default name: 'Backend [Postgres] (Django 1.8) (2/2)' env: TEST_SUITE=postgres DB=postgres DJANGO_VERSION=">=1.8,<1.9" TOTAL_TEST_GROUPS=2 TEST_GROUP=1 # django 1.8 compatibility with migrations - <<: *postgres_default name: 'Backend [Postgres] (Django 1.8, No migrations) (1/2)' env: TEST_SUITE=postgres DJANGO_VERSION=">=1.8,<1.9" SOUTH_TESTS_MIGRATE=0 TOTAL_TEST_GROUPS=2 TEST_GROUP=0 - <<: *postgres_default name: 'Backend [Postgres] (Django 1.8, No migrations) (2/2)' env: TEST_SUITE=postgres DJANGO_VERSION=">=1.8,<1.9" SOUTH_TESTS_MIGRATE=0 TOTAL_TEST_GROUPS=2 TEST_GROUP=1 # XXX(markus): Remove after rust interfaces are done - <<: *postgres_default name: 'Backend [Postgres] (Rust Interface Renormalization)' env: TEST_SUITE=postgres DB=postgres SENTRY_TEST_USE_RUST_INTERFACE_RENORMALIZATION=1 - python: 2.7 name: 'Backend [Riak]' env: TEST_SUITE=riak DB=postgres services: - memcached - redis-server - postgresql - riak install: - python setup.py install_egg_info - pip install -e ".[dev,tests,optional]" before_script: - psql -c 'create database sentry;' -U postgres before_install: - docker run -d --network host --name clickhouse-server --ulimit nofile=262144:262144 yandex/clickhouse-server:18.14.9 - docker run -d --network host --name snuba --env SNUBA_SETTINGS=test --env CLICKHOUSE_SERVER=localhost:9000 getsentry/snuba - docker ps -a - <<: *acceptance_default name: 'Acceptance' env: TEST_SUITE=acceptance USE_SNUBA=1 # XXX(markus): Remove after rust interfaces are done - <<: *acceptance_default python: 2.7 name: 'Acceptance (Rust Interface Renormalization)' env: TEST_SUITE=acceptance USE_SNUBA=1 SENTRY_TEST_USE_RUST_INTERFACE_RENORMALIZATION=1 PERCY_ENABLE=0 - python: 2.7 name: 'Frontend' env: TEST_SUITE=js before_install: - find "$NODE_DIR" -type d -empty -delete - nvm install - npm install -g "yarn@${YARN_VERSION}" install: - yarn install --pure-lockfile - python: 2.7 name: 'Command Line' env: TEST_SUITE=cli services: - postgresql - redis-server install: - python setup.py install_egg_info - pip install -e . before_script: - psql -c 'create database sentry;' -U postgres - python: 2.7 name: 'Distribution build' env: TEST_SUITE=dist before_install: - find "$NODE_DIR" -type d -empty -delete - nvm install - npm install -g "yarn@${YARN_VERSION}" - <<: *postgres_default name: 'Symbolicator Integration' env: TEST_SUITE=symbolicator before_install: - docker run -d --network host --name clickhouse-server --ulimit nofile=262144:262144 yandex/clickhouse-server:18.14.9 - docker run -d --network host --name snuba --env SNUBA_SETTINGS=test --env CLICKHOUSE_SERVER=localhost:9000 getsentry/snuba - docker run -d --network host --name symbolicator us.gcr.io/sentryio/symbolicator:latest run - docker ps -a # snuba in testing - python: 2.7 name: 'Snuba Integration' env: TEST_SUITE=snuba USE_SNUBA=1 SENTRY_ZOOKEEPER_HOSTS=localhost:2181 SENTRY_KAFKA_HOSTS=localhost:9092 services: - docker - memcached - redis-server - postgresql before_install: - docker run -d --network host --name zookeeper -e ZOOKEEPER_CLIENT_PORT=2181 confluentinc/cp-zookeeper:4.1.0 - docker run -d --network host --name kafka -e KAFKA_ZOOKEEPER_CONNECT=localhost:2181 -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://localhost:9092 -e KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR=1 confluentinc/cp-kafka:4.1.0 - docker run -d --network host --name clickhouse-server --ulimit nofile=262144:262144 yandex/clickhouse-server:18.14.9 - docker run -d --network host --name snuba --env SNUBA_SETTINGS=test --env CLICKHOUSE_SERVER=localhost:9000 getsentry/snuba - docker ps -a install: - python setup.py install_egg_info - pip install -e ".[dev,tests,optional]" - pip install confluent-kafka before_script: - psql -c 'create database sentry;' -U postgres # XXX(markus): Remove after rust interfaces are done - python: 2.7 name: 'Snuba Integration (Rust Interface Renormalization)' env: TEST_SUITE=snuba USE_SNUBA=1 SENTRY_ZOOKEEPER_HOSTS=localhost:2181 SENTRY_KAFKA_HOSTS=localhost:9092 SENTRY_TEST_USE_RUST_INTERFACE_RENORMALIZATION=1 services: - docker - memcached - redis-server - postgresql before_install: - docker run -d --network host --name zookeeper -e ZOOKEEPER_CLIENT_PORT=2181 confluentinc/cp-zookeeper:4.1.0 - docker run -d --network host --name kafka -e KAFKA_ZOOKEEPER_CONNECT=localhost:2181 -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://localhost:9092 -e KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR=1 confluentinc/cp-kafka:4.1.0 - docker run -d --network host --name clickhouse-server --ulimit nofile=262144:262144 yandex/clickhouse-server:18.14.9 - docker run -d --network host --name snuba --env SNUBA_SETTINGS=test --env CLICKHOUSE_SERVER=localhost:9000 getsentry/snuba - docker ps -a install: - python setup.py install_egg_info - pip install -e ".[dev,tests,optional]" - pip install confluent-kafka before_script: - psql -c 'create database sentry;' -U postgres # Deploy 'storybook' (component & style guide) - allowed to fail - language: node_js name: 'Storybook Deploy' env: STORYBOOK_BUILD=1 before_install: # Decrypt the credentials we added to the repo using the key we added with the Travis command line tool - openssl aes-256-cbc -K $encrypted_020be61ef175_key -iv $encrypted_020be61ef175_iv -in .travis/storybook-credentials.tar.gz.enc -out credentials.tar.gz -d # If the SDK is not already cached, download it and unpack it - if [ ! -d ${HOME}/google-cloud-sdk ]; then curl https://sdk.cloud.google.com | bash; fi - tar -xzf credentials.tar.gz # Use the decrypted service account credentials to authenticate the command line tool - gcloud auth activate-service-account --key-file client-secret.json - npm install -g "yarn@${YARN_VERSION}" install: - yarn install --pure-lockfile - gcloud version script: bash .travis/deploy-storybook.sh after_success: skip after_failure: skip # jobs are defined in matrix/include # to specify which jobs are allowed to fail, match the env exactly in matrix/allow_failures allow_failures: - language: node_js env: STORYBOOK_BUILD=1 # XXX(markus): Remove after rust interfaces are done - env: TEST_SUITE=postgres DB=postgres SENTRY_TEST_USE_RUST_INTERFACE_RENORMALIZATION=1 - env: TEST_SUITE=symbolicator notifications: webhooks: urls: - https://zeus.ci/hooks/fa079cf6-8e6b-11e7-9155-0a580a28081c/public/provider/travis/webhook on_success: always on_failure: always on_start: always on_cancel: always on_error: always