dist: trusty env: global: # Ensure the vendored libmysqlclient library can be found at run-time. - LD_LIBRARY_PATH="$HOME/venv/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH" - BROKER_URL='amqp://guest:guest@localhost:5672//' - DATABASE_URL='mysql://root@localhost/test_treeherder' - ELASTICSEARCH_URL='http://127.0.0.1:9200' - TREEHERDER_DJANGO_SECRET_KEY='secretkey-of-at-50-characters-to-pass-check-deploy' matrix: include: # Each entry here creates another sub-job. # Job 1: Linters - env: python-linters sudo: false language: python python: "2.7.13" cache: directories: - ~/venv before_install: # Create a clean virtualenv rather than using the one given to us, # to work around: https://github.com/travis-ci/travis-ci/issues/4873 - if [[ ! -f ~/venv/bin/activate ]]; then virtualenv -p python ~/venv; fi - source ~/venv/bin/activate - pip install --disable-pip-version-check --upgrade pip==8.1.1 install: - pip install --disable-pip-version-check --require-hashes -r requirements/common.txt -r requirements/dev.txt script: - python lints/queuelint.py - flake8 --show-source - isort --check-only --diff --quiet # Job 2: Nodejs UI tests - env: ui-tests sudo: false language: node_js node_js: "7.9.0" cache: # Note: This won't re-use the same cache as the linters job, # since caches are tied to the language/version combination. directories: - node_modules addons: firefox: latest before_install: # Required until Travis makes yarn available in the environment, # since we override the default `install` for clarity. - curl -sSfL https://yarnpkg.com/install.sh | bash - export PATH=$HOME/.yarn/bin:$PATH install: # `--frozen-lockfile` will catch cases where people have forgotten to update `yarn.lock`. # `--no-bin-links` is only necessary on Windows hosts, but we include here to ensure # that the package.json scripts aren't relying on symlinks that won't exist elsewhere. - yarn install --frozen-lockfile --no-bin-links before_script: # Required for Karma tests (http://docs.travis-ci.com/user/gui-and-headless-browsers/) - export DISPLAY=:99.0 - sh -e /etc/init.d/xvfb start script: - yarn test - yarn run build # Job 3: Python Tests Chunk A - env: python-tests-main # TODO: Investigate switching back to the container infra, by setting `sudo: false`. sudo: required language: python python: "2.7.13" cache: directories: - ~/venv services: - rabbitmq before_install: - curl -sSo ~/elasticsearch.deb https://download.elastic.co/elasticsearch/release/org/elasticsearch/distribution/deb/elasticsearch/2.4.4/elasticsearch-2.4.4.deb && sudo dpkg -i ~/elasticsearch.deb - sudo service elasticsearch start - sudo cp vagrant/mysql.cnf /etc/mysql/conf.d/treeherder.cnf - sudo service mysql restart # Create a clean virtualenv rather than using the one given to us, # to work around: https://github.com/travis-ci/travis-ci/issues/4873 - if [[ ! -f ~/venv/bin/activate ]]; then virtualenv -p python ~/venv; fi - source ~/venv/bin/activate - pip install --disable-pip-version-check --upgrade pip==8.1.1 - ./bin/vendor-libmysqlclient.sh ~/venv # Create the test database for `manage.py check --deploy`. - mysql -u root -e 'create database test_treeherder;' install: - pip install --disable-pip-version-check --require-hashes -r requirements/common.txt -r requirements/dev.txt before_script: - while ! curl localhost:9200 &>/dev/null; do sleep 1; done script: # Several security features in settings.py (eg setting HSTS headers) are conditional on # 'https://' being in the site URL. In addition, we override the test environment's debug # value so the tests pass. The real environment variable will be checked during deployment. - SITE_URL='https://treeherder.dev' TREEHERDER_DEBUG='False' ./manage.py check --deploy --fail-level WARNING - py.test tests/ --runslow --ignore=tests/e2e/ --ignore=tests/etl/ --ignore=tests/log_parser/ --ignore=tests/webapp/ --ignore=tests/selenium/ # Job 4: Python Tests Chunk B - env: python-tests-e2e-etl-logparser # TODO: Investigate switching back to the container infra, by setting `sudo: false`. sudo: required language: python python: "2.7.13" cache: directories: - ~/venv services: - rabbitmq before_install: - curl -sSo ~/elasticsearch.deb https://download.elastic.co/elasticsearch/release/org/elasticsearch/distribution/deb/elasticsearch/2.4.4/elasticsearch-2.4.4.deb && sudo dpkg -i ~/elasticsearch.deb - sudo service elasticsearch start - sudo cp vagrant/mysql.cnf /etc/mysql/conf.d/treeherder.cnf - sudo service mysql restart # Create a clean virtualenv rather than using the one given to us, # to work around: https://github.com/travis-ci/travis-ci/issues/4873 - if [[ ! -f ~/venv/bin/activate ]]; then virtualenv -p python ~/venv; fi - source ~/venv/bin/activate - pip install --disable-pip-version-check --upgrade pip==8.1.1 - ./bin/vendor-libmysqlclient.sh ~/venv install: - pip install --disable-pip-version-check --require-hashes -r requirements/common.txt -r requirements/dev.txt before_script: - while ! curl localhost:9200 &>/dev/null; do sleep 1; done script: - py.test tests/e2e/ tests/etl/ tests/log_parser/ --runslow # Job 5: Python Tests Chunk C - env: python-tests-webapp # TODO: Investigate switching back to the container infra, by setting `sudo: false`. sudo: required language: python python: "2.7.13" cache: directories: - ~/venv services: - rabbitmq before_install: - curl -sSo ~/elasticsearch.deb https://download.elastic.co/elasticsearch/release/org/elasticsearch/distribution/deb/elasticsearch/2.4.4/elasticsearch-2.4.4.deb && sudo dpkg -i ~/elasticsearch.deb - sudo service elasticsearch start - sudo cp vagrant/mysql.cnf /etc/mysql/conf.d/treeherder.cnf - sudo service mysql restart # Create a clean virtualenv rather than using the one given to us, # to work around: https://github.com/travis-ci/travis-ci/issues/4873 - if [[ ! -f ~/venv/bin/activate ]]; then virtualenv -p python ~/venv; fi - source ~/venv/bin/activate - pip install --disable-pip-version-check --upgrade pip==8.1.1 - ./bin/vendor-libmysqlclient.sh ~/venv install: - pip install --disable-pip-version-check --require-hashes -r requirements/common.txt -r requirements/dev.txt before_script: - while ! curl localhost:9200 &>/dev/null; do sleep 1; done script: - py.test tests/webapp/ --runslow # Job 6: Python Tests - Selenium integration - env: python-tests-selenium # TODO: Investigate switching back to the container infra, by setting `sudo: false`. sudo: required language: python python: "2.7.13" cache: directories: - ~/venv addons: firefox: latest services: - rabbitmq before_install: - curl -sSo ~/elasticsearch.deb https://download.elastic.co/elasticsearch/release/org/elasticsearch/distribution/deb/elasticsearch/2.4.4/elasticsearch-2.4.4.deb && sudo dpkg -i ~/elasticsearch.deb - sudo service elasticsearch start - sudo cp vagrant/mysql.cnf /etc/mysql/conf.d/treeherder.cnf - sudo service mysql restart # Create a clean virtualenv rather than using the one given to us, # to work around: https://github.com/travis-ci/travis-ci/issues/4873 - if [[ ! -f ~/venv/bin/activate ]]; then virtualenv -p python ~/venv; fi - source ~/venv/bin/activate - pip install --disable-pip-version-check --upgrade pip==8.1.1 - ./bin/vendor-libmysqlclient.sh ~/venv - mkdir -p $HOME/bin - wget https://github.com/mozilla/geckodriver/releases/download/v0.14.0/geckodriver-v0.14.0-linux64.tar.gz - tar -xzf geckodriver-v0.14.0-linux64.tar.gz -C $HOME/bin - nvm install 7.9.0 # Required until Travis makes yarn available in the environment, # since we override the default `install` for clarity. - curl -sSfL https://yarnpkg.com/install.sh | bash - export PATH=$HOME/.yarn/bin:$PATH install: - pip install --disable-pip-version-check --require-hashes -r requirements/common.txt -r requirements/dev.txt - yarn install --frozen-lockfile --no-bin-links before_script: - while ! curl localhost:9200 &>/dev/null; do sleep 1; done - "export DISPLAY=:99.0" - "sh -e /etc/init.d/xvfb start" - sleep 3 # give xvfb some time to start script: - yarn run build - py.test tests/selenium/ --runselenium --driver Firefox notifications: email: on_success: never on_failure: always