.travis.yml 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170
  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:
  37. - ./extra/install_dynamodb.sh
  38. - ./extra/install_couchbase_client.sh
  39. - python: '3.4'
  40. env: MATRIX_TOXENV=integration-rabbitmq
  41. stage: integration-test
  42. services:
  43. - rabbitmq
  44. - python: '3.4'
  45. env: MATRIX_TOXENV=integration-redis
  46. stage: integration-test
  47. services:
  48. - redis
  49. - python: '3.4'
  50. env: MATRIX_TOXENV=integration-dynamodb
  51. stage: integration-test
  52. before_install:
  53. - ./extra/install_dynamodb.sh
  54. - ./extra/install_couchbase_client.sh
  55. - python: '3.5'
  56. env: MATRIX_TOXENV=integration-rabbitmq
  57. stage: integration-test
  58. services:
  59. - rabbitmq
  60. - python: '3.5'
  61. env: MATRIX_TOXENV=integration-redis
  62. stage: integration-test
  63. services:
  64. - redis
  65. - python: '3.5'
  66. env: MATRIX_TOXENV=integration-dynamodb
  67. stage: integration-test
  68. before_install:
  69. - ./extra/install_dynamodb.sh
  70. - ./extra/install_couchbase_client.sh
  71. - python: '3.6'
  72. env: MATRIX_TOXENV=integration-rabbitmq
  73. stage: integration-test
  74. services:
  75. - rabbitmq
  76. - python: '3.6'
  77. env: MATRIX_TOXENV=integration-redis
  78. stage: integration-test
  79. services:
  80. - redis
  81. - python: '3.6'
  82. env: MATRIX_TOXENV=integration-dynamodb
  83. stage: integration-test
  84. before_install:
  85. - ./extra/install_dynamodb.sh
  86. - ./extra/install_couchbase_client.sh
  87. - python: '3.6'
  88. env: TOXENV=pypy-integration-rabbitmq PYPY_VERSION="pypy2.7-5.8.0"
  89. stage: integration-test
  90. services:
  91. - rabbitmq
  92. - python: '3.6'
  93. env: TOXENV=pypy-integration-redis PYPY_VERSION="pypy2.7-5.8.0"
  94. stage: integration-test
  95. services:
  96. - redis
  97. - python: '3.6'
  98. env: TOXENV=pypy-integration-dynamodb PYPY_VERSION="pypy2.7-5.8.0"
  99. stage: integration-test
  100. before_install:
  101. - ./extra/install_dynamodb.sh
  102. - if [[ -v MATRIX_TOXENV ]]; then export TOXENV=${TRAVIS_PYTHON_VERSION}-${MATRIX_TOXENV}; fi; env
  103. - |
  104. if [[ "$TOXENV" =~ "pypy" ]]; then
  105. export PYENV_ROOT="$HOME/.pyenv"
  106. if [ -f "$PYENV_ROOT/bin/pyenv" ]; then
  107. cd "$PYENV_ROOT" && git pull
  108. else
  109. rm -rf "$PYENV_ROOT" && git clone --depth 1 https://github.com/pyenv/pyenv.git "$PYENV_ROOT"
  110. fi
  111. "$PYENV_ROOT/bin/pyenv" install "$PYPY_VERSION"
  112. virtualenv --python="$PYENV_ROOT/versions/$PYPY_VERSION/bin/python" "$HOME/virtualenvs/$PYPY_VERSION"
  113. source "$HOME/virtualenvs/$PYPY_VERSION/bin/activate"
  114. which python
  115. fi
  116. - ./extra/install_couchbase_client.sh
  117. - python: '3.6'
  118. env: TOXENV=pypy-unit PYPY_VERSION="pypy2.7-5.8.0"
  119. stage: test
  120. - python: '3.6'
  121. env: TOXENV=flake8
  122. stage: lint
  123. - python: '3.6'
  124. env: TOXENV=flakeplus
  125. stage: lint
  126. - python: '3.6'
  127. env: TOXENV=apicheck
  128. stage: lint
  129. - python: '3.6'
  130. env: TOXENV=configcheck
  131. stage: lint
  132. - python: '3.6'
  133. env: TOXENV=bandit
  134. stage: lint
  135. - python: '3.6'
  136. env: TOXENV=pydocstyle
  137. stage: lint
  138. - python: '3.6'
  139. env: TOXENV=isort-check
  140. stage: lint
  141. before_install:
  142. - if [[ -v MATRIX_TOXENV ]]; then export TOXENV=${TRAVIS_PYTHON_VERSION}-${MATRIX_TOXENV}; fi; env
  143. - |
  144. if [[ "$TOXENV" =~ "pypy" ]]; then
  145. export PYENV_ROOT="$HOME/.pyenv"
  146. if [ -f "$PYENV_ROOT/bin/pyenv" ]; then
  147. cd "$PYENV_ROOT" && git pull
  148. else
  149. rm -rf "$PYENV_ROOT" && git clone --depth 1 https://github.com/pyenv/pyenv.git "$PYENV_ROOT"
  150. fi
  151. "$PYENV_ROOT/bin/pyenv" install "$PYPY_VERSION"
  152. virtualenv --python="$PYENV_ROOT/versions/$PYPY_VERSION/bin/python" "$HOME/virtualenvs/$PYPY_VERSION"
  153. source "$HOME/virtualenvs/$PYPY_VERSION/bin/activate"
  154. which python
  155. fi
  156. - ./extra/install_couchbase_client.sh
  157. after_success:
  158. - |
  159. if [[ -v MATRIX_TOXENV || "$TOXENV" =~ "pypy" ]]; then
  160. .tox/$TOXENV/bin/coverage xml
  161. .tox/$TOXENV/bin/codecov -e TOXENV
  162. fi;
  163. install: travis_retry pip install -U tox | cat
  164. script: tox -v -- -v
  165. notifications:
  166. irc:
  167. channels:
  168. - "chat.freenode.net#celery"
  169. on_success: change
  170. on_failure: change