base.yml 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254
  1. # Artifacts are stored for failed jobs
  2. .artifacts_error: &artifacts_error
  3. artifacts:
  4. expire_in: 1 week
  5. when: on_failure
  6. paths:
  7. - tmp/screenshot*
  8. - tmp/screenshots/*
  9. - log/*.log
  10. .variables_es: &variables_es
  11. variables:
  12. ES_INDEX_RAND: 'true'
  13. ES_URL: 'http://elasticsearch:9200'
  14. ELASTICSEARCH_TAG: '7.16'
  15. .variables_redis_memcached: &variables_redis_memcached
  16. variables:
  17. REDIS_URL: 'redis://redis:6379'
  18. MEMCACHE_SERVERS: 'memcached'
  19. .variables_selenium_firefox: &variables_selenium_firefox
  20. variables:
  21. REMOTE_URL: 'http://selenium-firefox:4444/wd/hub'
  22. BROWSER: 'firefox'
  23. BROWSER_HEADLESS: 'true'
  24. START_XVFB: 'false' # not needed for headless mode
  25. SE_NODE_MAX_SESSIONS: '5'
  26. SE_NODE_OVERRIDE_MAX_SESSIONS: 'true'
  27. .variables_selenium_chrome: &variables_selenium_chrome
  28. variables:
  29. REMOTE_URL: 'http://selenium-chrome:4444/wd/hub'
  30. BROWSER: chrome
  31. BROWSER_HEADLESS: 'true'
  32. START_XVFB: 'false' # not needed for headless mode
  33. SE_NODE_MAX_SESSIONS: '5'
  34. SE_NODE_OVERRIDE_MAX_SESSIONS: 'true'
  35. .variables_app_restart_cmd: &variables_app_restart_cmd
  36. variables:
  37. APP_RESTART_CMD: 'bundle exec rake environment zammad:ci:app:restart'
  38. .variables_rspec_slicing: &variables_rspec_slicing
  39. variables:
  40. RSPEC_EXAMPLE_MATCHES: '.' # Default: all. Set this to one of the slices in a job to run only that slice.
  41. RSPEC_EXAMPLE_SLICE_1_OF_4: '^[A-H]'
  42. RSPEC_EXAMPLE_SLICE_2_OF_4: '^[I-P]'
  43. RSPEC_EXAMPLE_SLICE_3_OF_4: '^[Q-S]'
  44. RSPEC_EXAMPLE_SLICE_4_OF_4: '^[^A-S]' # Rest, including lower case and other characters like '#'
  45. .rules_singletest: &rules_singletest
  46. rules:
  47. - if: $CI_MERGE_REQUEST_ID
  48. when: never
  49. - if: '$SINGLETESTNAME && $SINGLETESTNAME == $CI_JOB_NAME'
  50. when: always
  51. - if: '$SINGLETESTNAME && $SINGLETESTNAME != $CI_JOB_NAME'
  52. when: never
  53. - if: '$CI_JOB_NAME'
  54. when: on_success
  55. # Workaround to enable usage of mixed SSH and Docker GitLab CI runners
  56. .tags_docker: &tags_docker
  57. tags:
  58. - docker
  59. .tags_docker_low_concurrency: &tags_docker_low_concurrency
  60. tags:
  61. - docker
  62. - low_concurrency
  63. .env_base: &env_base
  64. <<: *tags_docker
  65. <<: *artifacts_error
  66. <<: *rules_singletest
  67. interruptible: true
  68. # DB Docker
  69. .docker_mysql: &docker_mysql
  70. name: $CI_REGISTRY/docker/zammad-mysql:stable
  71. alias: mysql
  72. .docker_postgresql: &docker_postgresql
  73. name: $CI_REGISTRY/docker/zammad-postgresql:stable
  74. alias: postgresql
  75. .docker_elasticsearch: &docker_elasticsearch
  76. name: $CI_REGISTRY/docker/zammad-elasticsearch:$ELASTICSEARCH_TAG
  77. alias: elasticsearch
  78. .docker_selenium_chrome: &docker_selenium_chrome
  79. name: $CI_REGISTRY/docker/zammad-selenium-chrome:stable
  80. alias: selenium-chrome
  81. .docker_selenium_firefox: &docker_selenium_firefox
  82. name: $CI_REGISTRY/docker/zammad-selenium-firefox:stable
  83. alias: selenium-firefox
  84. .docker_imap: &docker_imap
  85. name: $CI_REGISTRY/docker/zammad-imap:stable
  86. alias: mail
  87. .docker_redis: &docker_redis
  88. name: $CI_REGISTRY/docker/zammad-redis:stable
  89. alias: redis
  90. .docker_memcached: &docker_memcached
  91. name: $CI_REGISTRY/docker/zammad-memcached:stable
  92. alias: memcached
  93. command: ['memcached', '-m', '256M']
  94. # service templates
  95. .services_mysql: &services_mysql
  96. services:
  97. - <<: *docker_mysql
  98. .services_mysql_redis_memcached: &services_mysql_redis_memcached
  99. extends:
  100. - .variables_redis_memcached
  101. services:
  102. - <<: *docker_mysql
  103. - <<: *docker_redis
  104. - <<: *docker_memcached
  105. .services_postgresql: &services_postgresql
  106. services:
  107. - <<: *docker_postgresql
  108. .services_postgresql_redis_memcached: &services_postgresql_redis_memcached
  109. extends:
  110. - .variables_redis_memcached
  111. services:
  112. - <<: *docker_postgresql
  113. - <<: *docker_redis
  114. - <<: *docker_memcached
  115. .services_mysql_postgresql_redis_memcached:
  116. &services_mysql_postgresql_redis_memcached
  117. extends:
  118. - .variables_redis_memcached
  119. services:
  120. - <<: *docker_mysql
  121. - <<: *docker_postgresql
  122. - <<: *docker_redis
  123. - <<: *docker_memcached
  124. .services_postgresql_selenium_chrome: &services_postgresql_selenium_chrome
  125. extends:
  126. - .variables_selenium_chrome
  127. services:
  128. - <<: *docker_postgresql
  129. - <<: *docker_selenium_chrome
  130. .services_postgresql_selenium_firefox: &services_postgresql_selenium_firefox
  131. extends:
  132. - .variables_selenium_firefox
  133. services:
  134. - <<: *docker_postgresql
  135. - <<: *docker_selenium_firefox
  136. .services_mysql_postgresql_imap: &services_mysql_postgresql_imap
  137. services:
  138. - <<: *docker_mysql
  139. - <<: *docker_postgresql
  140. - <<: *docker_imap
  141. .services_mysql_postgresql_elasticsearch:
  142. &services_mysql_postgresql_elasticsearch
  143. services:
  144. - <<: *docker_mysql
  145. - <<: *docker_postgresql
  146. - <<: *docker_elasticsearch
  147. .services_mysql_postgresql_redis_memcached_elasticsearch:
  148. &services_mysql_postgresql_redis_memcached_elasticsearch
  149. extends:
  150. - .variables_redis_memcached
  151. services:
  152. - <<: *docker_mysql
  153. - <<: *docker_postgresql
  154. - <<: *docker_redis
  155. - <<: *docker_memcached
  156. - <<: *docker_elasticsearch
  157. .services_mysql_postgresql_elasticsearch_selenium_chrome_imap:
  158. &services_mysql_postgresql_elasticsearch_selenium_chrome_imap
  159. extends:
  160. - .variables_selenium_chrome
  161. services:
  162. - <<: *docker_mysql
  163. - <<: *docker_postgresql
  164. - <<: *docker_elasticsearch
  165. - <<: *docker_selenium_chrome
  166. - <<: *docker_imap
  167. .services_mysql_postgresql_elasticsearch_selenium_firefox_imap:
  168. &services_mysql_postgresql_elasticsearch_selenium_firefox_imap
  169. extends:
  170. - .variables_selenium_firefox
  171. services:
  172. - <<: *docker_mysql
  173. - <<: *docker_postgresql
  174. - <<: *docker_elasticsearch
  175. - <<: *docker_selenium_firefox
  176. - <<: *docker_imap
  177. .services_mysql_postgresql_elasticsearch_selenium_chrome_imap_redis_memcached:
  178. &services_mysql_postgresql_elasticsearch_selenium_chrome_imap_redis_memcached
  179. extends:
  180. - .variables_selenium_chrome
  181. - .variables_redis_memcached
  182. services:
  183. - <<: *docker_mysql
  184. - <<: *docker_postgresql
  185. - <<: *docker_elasticsearch
  186. - <<: *docker_selenium_chrome
  187. - <<: *docker_imap
  188. - <<: *docker_redis
  189. - <<: *docker_memcached
  190. .services_mysql_postgresql_elasticsearch_selenium_firefox_imap_redis_memcached:
  191. &services_mysql_postgresql_elasticsearch_selenium_firefox_imap_redis_memcached
  192. extends:
  193. - .variables_selenium_firefox
  194. - .variables_redis_memcached
  195. services:
  196. - <<: *docker_mysql
  197. - <<: *docker_postgresql
  198. - <<: *docker_elasticsearch
  199. - <<: *docker_selenium_firefox
  200. - <<: *docker_imap
  201. - <<: *docker_redis
  202. - <<: *docker_memcached
  203. .rules_integration_manual_start: &rules_integration_manual_start
  204. rules:
  205. - if: $CI_MERGE_REQUEST_ID
  206. when: never
  207. - if: '$CI_COMMIT_BRANCH =~ /^private/ && $INTEGRATION_TESTS == null'
  208. when: manual
  209. allow_failure: true
  210. - when: on_success
  211. # we need at least one job to store and include this template
  212. # but we skip this via 'only' -> 'variables' -> '$IGNORE'
  213. # $IGNORE is not defined
  214. ignore:
  215. stage: test
  216. only:
  217. variables:
  218. - $IGNORE
  219. script:
  220. - ''