.travis.yml 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288
  1. dist: trusty
  2. language: python
  3. cache:
  4. directories:
  5. - $HOME/.cache/pip
  6. - $TRAVIS_BUILD_DIR/.tox
  7. os:
  8. - linux
  9. # - osx
  10. matrix:
  11. fast_finish: true
  12. allow_failures:
  13. - os: osx
  14. include:
  15. - python: 2.7
  16. env: TOX_ENV=py27-aws TOX_TEST=test.test_block_store_service
  17. - python: 2.7
  18. env: TOX_ENV=py27-azure TOX_TEST=test.test_block_store_service
  19. - python: 2.7
  20. env: TOX_ENV=py27-openstack TOX_TEST=test.test_block_store_service
  21. - python: 2.7
  22. env: TOX_ENV=py27-aws TOX_TEST=test.test_cloud_factory
  23. - python: 2.7
  24. env: TOX_ENV=py27-azure TOX_TEST=test.test_cloud_factory
  25. - python: 2.7
  26. env: TOX_ENV=py27-openstack TOX_TEST=test.test_cloud_factory
  27. - python: 2.7
  28. env: TOX_ENV=py27-aws TOX_TEST=test.test_cloud_helpers
  29. - python: 2.7
  30. env: TOX_ENV=py27-azure TOX_TEST=test.test_cloud_helpers
  31. - python: 2.7
  32. env: TOX_ENV=py27-openstack TOX_TEST=test.test_cloud_helpers
  33. - python: 2.7
  34. env: TOX_ENV=py27-aws TOX_TEST=test.test_compute_service
  35. - python: 2.7
  36. env: TOX_ENV=py27-azure TOX_TEST=test.test_compute_service
  37. - python: 2.7
  38. env: TOX_ENV=py27-openstack TOX_TEST=test.test_compute_service
  39. - python: 2.7
  40. env: TOX_ENV=py27-aws TOX_TEST=test.test_interface
  41. - python: 2.7
  42. env: TOX_ENV=py27-azure TOX_TEST=test.test_interface
  43. - python: 2.7
  44. env: TOX_ENV=py27-openstack TOX_TEST=test.test_interface
  45. - python: 2.7
  46. env: TOX_ENV=py27-aws TOX_TEST=test.test_network_service
  47. - python: 2.7
  48. env: TOX_ENV=py27-azure TOX_TEST=test.test_network_service
  49. - python: 2.7
  50. env: TOX_ENV=py27-openstack TOX_TEST=test.test_network_service
  51. - python: 2.7
  52. env: TOX_ENV=py27-aws TOX_TEST=test.test_object_life_cycle
  53. - python: 2.7
  54. env: TOX_ENV=py27-azure TOX_TEST=test.test_object_life_cycle
  55. - python: 2.7
  56. env: TOX_ENV=py27-openstack TOX_TEST=test.test_object_life_cycle
  57. - python: 2.7
  58. env: TOX_ENV=py27-aws TOX_TEST=test.test_object_store_service
  59. - python: 2.7
  60. env: TOX_ENV=py27-azure TOX_TEST=test.test_object_store_service
  61. - python: 2.7
  62. env: TOX_ENV=py27-openstack TOX_TEST=test.test_object_store_service
  63. - python: 2.7
  64. env: TOX_ENV=py27-aws TOX_TEST=test.test_region_service
  65. - python: 2.7
  66. env: TOX_ENV=py27-azure TOX_TEST=test.test_region_service
  67. - python: 2.7
  68. env: TOX_ENV=py27-openstack TOX_TEST=test.test_region_service
  69. - python: 2.7
  70. env: TOX_ENV=py27-aws TOX_TEST=test.test_security_service
  71. - python: 2.7
  72. env: TOX_ENV=py27-azure TOX_TEST=test.test_security_service
  73. - python: 2.7
  74. env: TOX_ENV=py27-openstack TOX_TEST=test.test_security_service
  75. - python: 2.7
  76. env: TOX_ENV=py27-aws TOX_TEST=test.test_vm_types_service
  77. - python: 2.7
  78. env: TOX_ENV=py27-azure TOX_TEST=test.test_vm_types_service
  79. - python: 2.7
  80. env: TOX_ENV=py27-openstack TOX_TEST=test.test_vm_types_service
  81. - python: 2.7
  82. env: TOX_ENV=py27-aws TOX_TEST=test.test_image_service
  83. - python: 2.7
  84. env: TOX_ENV=py27-azure TOX_TEST=test.test_image_service
  85. - python: 2.7
  86. env: TOX_ENV=py27-openstack TOX_TEST=test.test_image_service
  87. - python: 3.6
  88. env: TOX_ENV=py36-aws TOX_TEST=test.test_block_store_service
  89. - python: 3.6
  90. env: TOX_ENV=py36-azure TOX_TEST=test.test_block_store_service
  91. - python: 3.6
  92. env: TOX_ENV=py36-openstack TOX_TEST=test.test_block_store_service
  93. - python: 3.6
  94. env: TOX_ENV=py36-aws TOX_TEST=test.test_cloud_factory
  95. - python: 3.6
  96. env: TOX_ENV=py36-azure TOX_TEST=test.test_cloud_factory
  97. - python: 3.6
  98. env: TOX_ENV=py36-openstack TOX_TEST=test.test_cloud_factory
  99. - python: 3.6
  100. env: TOX_ENV=py36-aws TOX_TEST=test.test_cloud_helpers
  101. - python: 3.6
  102. env: TOX_ENV=py36-azure TOX_TEST=test.test_cloud_helpers
  103. - python: 3.6
  104. env: TOX_ENV=py36-openstack TOX_TEST=test.test_cloud_helpers
  105. - python: 3.6
  106. env: TOX_ENV=py36-aws TOX_TEST=test.test_compute_service
  107. - python: 3.6
  108. env: TOX_ENV=py36-azure TOX_TEST=test.test_compute_service
  109. - python: 3.6
  110. env: TOX_ENV=py36-openstack TOX_TEST=test.test_compute_service
  111. - python: 3.6
  112. env: TOX_ENV=py36-aws TOX_TEST=test.test_interface
  113. - python: 3.6
  114. env: TOX_ENV=py36-azure TOX_TEST=test.test_interface
  115. - python: 3.6
  116. env: TOX_ENV=py36-openstack TOX_TEST=test.test_interface
  117. - python: 3.6
  118. env: TOX_ENV=py36-aws TOX_TEST=test.test_network_service
  119. - python: 3.6
  120. env: TOX_ENV=py36-azure TOX_TEST=test.test_network_service
  121. - python: 3.6
  122. env: TOX_ENV=py36-openstack TOX_TEST=test.test_network_service
  123. - python: 3.6
  124. env: TOX_ENV=py36-aws TOX_TEST=test.test_object_life_cycle
  125. - python: 3.6
  126. env: TOX_ENV=py36-azure TOX_TEST=test.test_object_life_cycle
  127. - python: 3.6
  128. env: TOX_ENV=py36-openstack TOX_TEST=test.test_object_life_cycle
  129. - python: 3.6
  130. env: TOX_ENV=py36-aws TOX_TEST=test.test_object_store_service
  131. - python: 3.6
  132. env: TOX_ENV=py36-azure TOX_TEST=test.test_object_store_service
  133. - python: 3.6
  134. env: TOX_ENV=py36-openstack TOX_TEST=test.test_object_store_service
  135. - python: 3.6
  136. env: TOX_ENV=py36-aws TOX_TEST=test.test_region_service
  137. - python: 3.6
  138. env: TOX_ENV=py36-azure TOX_TEST=test.test_region_service
  139. - python: 3.6
  140. env: TOX_ENV=py36-openstack TOX_TEST=test.test_region_service
  141. - python: 3.6
  142. env: TOX_ENV=py36-aws TOX_TEST=test.test_security_service
  143. - python: 3.6
  144. env: TOX_ENV=py36-azure TOX_TEST=test.test_security_service
  145. - python: 3.6
  146. env: TOX_ENV=py36-openstack TOX_TEST=test.test_security_service
  147. - python: 3.6
  148. env: TOX_ENV=py36-aws TOX_TEST=test.test_vm_types_service
  149. - python: 3.6
  150. env: TOX_ENV=py36-azure TOX_TEST=test.test_vm_types_service
  151. - python: 3.6
  152. env: TOX_ENV=py36-openstack TOX_TEST=test.test_vm_types_service
  153. - python: 3.6
  154. env: TOX_ENV=py36-aws TOX_TEST=test.test_image_service
  155. - python: 3.6
  156. env: TOX_ENV=py36-azure TOX_TEST=test.test_image_service
  157. - python: 3.6
  158. env: TOX_ENV=py36-openstack TOX_TEST=test.test_image_service
  159. - python: pypy-5.3.1
  160. env: TOX_ENV=pypy-aws TOX_TEST=test.test_block_store_service
  161. - python: pypy-5.3.1
  162. env: TOX_ENV=pypy-azure TOX_TEST=test.test_block_store_service
  163. - python: pypy-5.3.1
  164. env: TOX_ENV=pypy-openstack TOX_TEST=test.test_block_store_service
  165. - python: pypy-5.3.1
  166. env: TOX_ENV=pypy-aws TOX_TEST=test.test_cloud_factory
  167. - python: pypy-5.3.1
  168. env: TOX_ENV=pypy-azure TOX_TEST=test.test_cloud_factory
  169. - python: pypy-5.3.1
  170. env: TOX_ENV=pypy-openstack TOX_TEST=test.test_cloud_factory
  171. - python: pypy-5.3.1
  172. env: TOX_ENV=pypy-aws TOX_TEST=test.test_cloud_helpers
  173. - python: pypy-5.3.1
  174. env: TOX_ENV=pypy-azure TOX_TEST=test.test_cloud_helpers
  175. - python: pypy-5.3.1
  176. env: TOX_ENV=pypy-openstack TOX_TEST=test.test_cloud_helpers
  177. - python: pypy-5.3.1
  178. env: TOX_ENV=pypy-aws TOX_TEST=test.test_compute_service
  179. - python: pypy-5.3.1
  180. env: TOX_ENV=pypy-azure TOX_TEST=test.test_compute_service
  181. - python: pypy-5.3.1
  182. env: TOX_ENV=pypy-openstack TOX_TEST=test.test_compute_service
  183. - python: pypy-5.3.1
  184. env: TOX_ENV=pypy-aws TOX_TEST=test.test_interface
  185. - python: pypy-5.3.1
  186. env: TOX_ENV=pypy-azure TOX_TEST=test.test_interface
  187. - python: pypy-5.3.1
  188. env: TOX_ENV=pypy-openstack TOX_TEST=test.test_interface
  189. - python: pypy-5.3.1
  190. env: TOX_ENV=pypy-aws TOX_TEST=test.test_network_service
  191. - python: pypy-5.3.1
  192. env: TOX_ENV=pypy-azure TOX_TEST=test.test_network_service
  193. - python: pypy-5.3.1
  194. env: TOX_ENV=pypy-openstack TOX_TEST=test.test_network_service
  195. - python: pypy-5.3.1
  196. env: TOX_ENV=pypy-aws TOX_TEST=test.test_object_life_cycle
  197. - python: pypy-5.3.1
  198. env: TOX_ENV=pypy-azure TOX_TEST=test.test_object_life_cycle
  199. - python: pypy-5.3.1
  200. env: TOX_ENV=pypy-openstack TOX_TEST=test.test_object_life_cycle
  201. - python: pypy-5.3.1
  202. env: TOX_ENV=pypy-aws TOX_TEST=test.test_object_store_service
  203. - python: pypy-5.3.1
  204. env: TOX_ENV=pypy-azure TOX_TEST=test.test_object_store_service
  205. - python: pypy-5.3.1
  206. env: TOX_ENV=pypy-openstack TOX_TEST=test.test_object_store_service
  207. - python: pypy-5.3.1
  208. env: TOX_ENV=pypy-aws TOX_TEST=test.test_region_service
  209. - python: pypy-5.3.1
  210. env: TOX_ENV=pypy-azure TOX_TEST=test.test_region_service
  211. - python: pypy-5.3.1
  212. env: TOX_ENV=pypy-openstack TOX_TEST=test.test_region_service
  213. - python: pypy-5.3.1
  214. env: TOX_ENV=pypy-aws TOX_TEST=test.test_security_service
  215. - python: pypy-5.3.1
  216. env: TOX_ENV=pypy-azure TOX_TEST=test.test_security_service
  217. - python: pypy-5.3.1
  218. env: TOX_ENV=pypy-openstack TOX_TEST=test.test_security_service
  219. - python: pypy-5.3.1
  220. env: TOX_ENV=pypy-aws TOX_TEST=test.test_vm_types_service
  221. - python: pypy-5.3.1
  222. env: TOX_ENV=pypy-azure TOX_TEST=test.test_vm_types_service
  223. - python: pypy-5.3.1
  224. env: TOX_ENV=pypy-openstack TOX_TEST=test.test_vm_types_service
  225. - python: pypy-5.3.1
  226. env: TOX_ENV=pypy-aws TOX_TEST=test.test_image_service
  227. - python: pypy-5.3.1
  228. env: TOX_ENV=pypy-azure TOX_TEST=test.test_image_service
  229. - python: pypy-5.3.1
  230. env: TOX_ENV=pypy-openstack TOX_TEST=test.test_image_service
  231. env:
  232. global:
  233. - PYTHONUNBUFFERED=True
  234. before_install:
  235. - |
  236. case "$TRAVIS_EVENT_TYPE" in
  237. push|pull_request)
  238. # Check whether we need to run a test for this provider
  239. DOCS_REGEX='(\.rst$)|(^(docs))/'
  240. FILES_IN_CHANGESET="`git diff --name-only $TRAVIS_COMMIT_RANGE`"
  241. echo "$FILES_IN_CHANGESET" | grep -qvE "$DOCS_REGEX" || {
  242. echo "Only docs were updated. Stopping build process."
  243. exit
  244. }
  245. echo "$FILES_IN_CHANGESET" | grep -qvE "$DOCS_REGEX|(^(cloudbridge/cloud/providers))" || {
  246. echo "Only docs and providers were updated. Checking whether this provider was changed."
  247. # Extract env and provider from $TOXENV into $PYENV and $PROVIDER respectively
  248. IFS=- read PYENV PROVIDER <<< "$TOX_ENV"
  249. echo "$FILES_IN_CHANGESET" | grep -qE "^(cloudbridge/cloud/providers/$PROVIDER)" && {
  250. echo "This provider was affected by this changeset. Running tests."
  251. } || {
  252. echo "This provider was not affected by this changeset. Stopping build process."
  253. exit
  254. }
  255. }
  256. ;;
  257. *)
  258. echo "Build triggered through API or CRON job. Running regardless of changes"
  259. ;;
  260. esac
  261. install:
  262. - pip install -U pip
  263. - pip install -U setuptools
  264. - pip install tox
  265. - pip install coveralls
  266. - pip install codecov
  267. script:
  268. - tox -r -e $TOX_ENV -- $TOX_TEST
  269. after_script:
  270. - |
  271. case "$TRAVIS_EVENT_TYPE" in
  272. push|pull_request)
  273. # Don't run coverage if tests or cloudbridge interface was not affected
  274. DOCS_REGEX='(\.rst$)|(^(docs))/'
  275. FILES_IN_CHANGESET="`git diff --name-only $TRAVIS_COMMIT_RANGE`"
  276. echo "$FILES_IN_CHANGESET" | grep -qvE "$DOCS_REGEX|(^(cloudbridge/cloud/providers))" && {
  277. coveralls &
  278. codecov &
  279. wait
  280. } || {
  281. echo "Only docs and providers were updated. Not running coverage."
  282. }
  283. ;;
  284. *)
  285. echo "Build triggered through API or CRON job. Running regardless of changes"
  286. coveralls & codecov & wait
  287. ;;
  288. esac