.travis.yml 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149
  1. language: python
  2. sudo: required
  3. dist: trusty
  4. cache: pip
  5. python:
  6. - '2.7'
  7. - '3.4'
  8. - '3.5'
  9. - '3.6'
  10. os:
  11. - linux
  12. stages:
  13. - lint
  14. - test
  15. - integration-test
  16. env:
  17. global:
  18. - PYTHONUNBUFFERED=yes
  19. matrix:
  20. - MATRIX_TOXENV=unit
  21. matrix:
  22. include:
  23. - python: '2.7'
  24. env: MATRIX_TOXENV=integration-rabbitmq
  25. stage: integration-test
  26. services:
  27. - rabbitmq
  28. - python: '2.7'
  29. env: MATRIX_TOXENV=integration-redis
  30. stage: integration-test
  31. services:
  32. - redis
  33. - python: '2.7'
  34. env: MATRIX_TOXENV=integration-dynamodb
  35. stage: integration-test
  36. before_install: ./extra/install_dynamodb.sh
  37. - python: '3.4'
  38. env: MATRIX_TOXENV=integration-rabbitmq
  39. stage: integration-test
  40. services:
  41. - rabbitmq
  42. - python: '3.4'
  43. env: MATRIX_TOXENV=integration-redis
  44. stage: integration-test
  45. services:
  46. - redis
  47. - python: '3.4'
  48. env: MATRIX_TOXENV=integration-dynamodb
  49. stage: integration-test
  50. before_install: ./extra/install_dynamodb.sh
  51. - python: '3.5'
  52. env: MATRIX_TOXENV=integration-rabbitmq
  53. stage: integration-test
  54. services:
  55. - rabbitmq
  56. - python: '3.5'
  57. env: MATRIX_TOXENV=integration-redis
  58. stage: integration-test
  59. services:
  60. - redis
  61. - python: '3.5'
  62. env: MATRIX_TOXENV=integration-dynamodb
  63. stage: integration-test
  64. before_install: ./extra/install_dynamodb.sh
  65. - python: '3.6'
  66. env: MATRIX_TOXENV=integration-rabbitmq
  67. stage: integration-test
  68. services:
  69. - rabbitmq
  70. - python: '3.6'
  71. env: MATRIX_TOXENV=integration-redis
  72. stage: integration-test
  73. services:
  74. - redis
  75. - python: '3.6'
  76. env: MATRIX_TOXENV=integration-dynamodb
  77. stage: integration-test
  78. before_install: ./extra/install_dynamodb.sh
  79. - python: '3.6'
  80. env: TOXENV=pypy-integration-rabbitmq PYPY_VERSION="pypy2.7-5.8.0"
  81. stage: integration-test
  82. services:
  83. - rabbitmq
  84. - python: '3.6'
  85. env: TOXENV=pypy-integration-redis PYPY_VERSION="pypy2.7-5.8.0"
  86. stage: integration-test
  87. services:
  88. - redis
  89. - python: '3.6'
  90. env: TOXENV=pypy-integration-dynamodb PYPY_VERSION="pypy2.7-5.8.0"
  91. stage: integration-test
  92. before_install: ./extra/install_dynamodb.sh
  93. - python: '3.6'
  94. env: TOXENV=pypy-unit PYPY_VERSION="pypy2.7-5.8.0"
  95. stage: test
  96. - python: '3.6'
  97. env: TOXENV=flake8
  98. stage: lint
  99. - python: '3.6'
  100. env: TOXENV=flakeplus
  101. stage: lint
  102. - python: '3.6'
  103. env: TOXENV=apicheck
  104. stage: lint
  105. - python: '3.6'
  106. env: TOXENV=configcheck
  107. stage: lint
  108. - python: '3.6'
  109. env: TOXENV=bandit
  110. stage: lint
  111. - python: '3.6'
  112. env: TOXENV=pydocstyle
  113. stage: lint
  114. - python: '3.6'
  115. env: TOXENV=isort-check
  116. stage: lint
  117. before_install:
  118. - if [[ -v MATRIX_TOXENV ]]; then export TOXENV=${TRAVIS_PYTHON_VERSION}-${MATRIX_TOXENV}; fi; env
  119. - |
  120. if [[ "$TOXENV" =~ "pypy" ]]; then
  121. export PYENV_ROOT="$HOME/.pyenv"
  122. if [ -f "$PYENV_ROOT/bin/pyenv" ]; then
  123. cd "$PYENV_ROOT" && git pull
  124. else
  125. rm -rf "$PYENV_ROOT" && git clone --depth 1 https://github.com/pyenv/pyenv.git "$PYENV_ROOT"
  126. fi
  127. "$PYENV_ROOT/bin/pyenv" install "$PYPY_VERSION"
  128. virtualenv --python="$PYENV_ROOT/versions/$PYPY_VERSION/bin/python" "$HOME/virtualenvs/$PYPY_VERSION"
  129. source "$HOME/virtualenvs/$PYPY_VERSION/bin/activate"
  130. which python
  131. fi
  132. - |
  133. wget -qO - https://packages.couchbase.com/ubuntu/couchbase.key | sudo apt-key add -
  134. sudo apt-add-repository -y 'deb http://packages.couchbase.com/ubuntu trusty trusty/main'
  135. sudo apt-get update && sudo apt-get install -y libcouchbase-dev
  136. after_success:
  137. - |
  138. if [[ -v MATRIX_TOXENV || "$TOXENV" =~ "pypy" ]]; then
  139. .tox/$TOXENV/bin/coverage xml
  140. .tox/$TOXENV/bin/codecov -e TOXENV
  141. fi;
  142. install: travis_retry pip install -U tox | cat
  143. script: tox -v -- -v
  144. notifications:
  145. irc:
  146. channels:
  147. - "chat.freenode.net#celery"
  148. on_success: change
  149. on_failure: change