base.yml 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249
  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. .variables_redis_memcached: &variables_redis_memcached
  15. variables:
  16. REDIS_URL: "redis://redis:6379"
  17. MEMCACHE_SERVERS: "memcached"
  18. .variables_selenium_firefox: &variables_selenium_firefox
  19. variables:
  20. REMOTE_URL: "http://selenium-firefox:4444/wd/hub"
  21. BROWSER: "firefox"
  22. START_XVFB: "false" # not needed for headless mode
  23. SE_NODE_MAX_SESSIONS: "5"
  24. SE_NODE_OVERRIDE_MAX_SESSIONS: "true"
  25. .variables_selenium_chrome: &variables_selenium_chrome
  26. variables:
  27. REMOTE_URL: "http://selenium-chrome:4444/wd/hub"
  28. BROWSER: chrome
  29. START_XVFB: "false" # not needed for headless mode
  30. SE_NODE_MAX_SESSIONS: "5"
  31. SE_NODE_OVERRIDE_MAX_SESSIONS: "true"
  32. .variables_app_restart_cmd: &variables_app_restart_cmd
  33. variables:
  34. APP_RESTART_CMD: "bundle exec rake environment zammad:ci:app:restart"
  35. .variables_rspec_slicing: &variables_rspec_slicing
  36. variables:
  37. RSPEC_EXAMPLE_MATCHES: "." # Default: all. Set this to one of the slices in a job to run only that slice.
  38. RSPEC_EXAMPLE_SLICE_1_OF_4: "^[A-H]"
  39. RSPEC_EXAMPLE_SLICE_2_OF_4: "^[I-P]"
  40. RSPEC_EXAMPLE_SLICE_3_OF_4: "^[Q-S]"
  41. RSPEC_EXAMPLE_SLICE_4_OF_4: "^[^A-S]" # Rest, including lower case and other characters like '#'
  42. .rules_singletest: &rules_singletest
  43. rules:
  44. - if: $CI_MERGE_REQUEST_ID
  45. when: never
  46. - if: '$SINGLETESTNAME && $SINGLETESTNAME == $CI_JOB_NAME'
  47. when: always
  48. - if: '$SINGLETESTNAME && $SINGLETESTNAME != $CI_JOB_NAME'
  49. when: never
  50. - if: '$CI_JOB_NAME'
  51. when: on_success
  52. # Workaround to enable usage of mixed SSH and Docker GitLab CI runners
  53. .tags_docker: &tags_docker
  54. tags:
  55. - docker
  56. .tags_docker_low_concurrency: &tags_docker_low_concurrency
  57. tags:
  58. - docker
  59. - low_concurrency
  60. # Workaround for blocked port 25 access on cloud provider infrastructure
  61. .tags_mail: &tags_mail
  62. tags:
  63. - mail
  64. .env_base: &env_base
  65. <<: *tags_docker
  66. <<: *artifacts_error
  67. <<: *rules_singletest
  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: &services_mysql_postgresql_redis_memcached
  116. extends:
  117. - .variables_redis_memcached
  118. services:
  119. - <<: *docker_mysql
  120. - <<: *docker_postgresql
  121. - <<: *docker_redis
  122. - <<: *docker_memcached
  123. .services_postgresql_selenium_chrome: &services_postgresql_selenium_chrome
  124. extends:
  125. - .variables_selenium_chrome
  126. services:
  127. - <<: *docker_postgresql
  128. - <<: *docker_selenium_chrome
  129. .services_postgresql_selenium_firefox: &services_postgresql_selenium_firefox
  130. extends:
  131. - .variables_selenium_firefox
  132. services:
  133. - <<: *docker_postgresql
  134. - <<: *docker_selenium_firefox
  135. .services_mysql_postgresql_imap: &services_mysql_postgresql_imap
  136. services:
  137. - <<: *docker_mysql
  138. - <<: *docker_postgresql
  139. - <<: *docker_imap
  140. .services_mysql_postgresql_elasticsearch: &services_mysql_postgresql_elasticsearch
  141. variables:
  142. ELASTICSEARCH_TAG: 'stable'
  143. services:
  144. - <<: *docker_mysql
  145. - <<: *docker_postgresql
  146. - <<: *docker_elasticsearch
  147. .services_mysql_postgresql_elasticsearch_selenium_chrome_imap: &services_mysql_postgresql_elasticsearch_selenium_chrome_imap
  148. extends:
  149. - .variables_selenium_chrome
  150. variables:
  151. ELASTICSEARCH_TAG: 'stable'
  152. services:
  153. - <<: *docker_mysql
  154. - <<: *docker_postgresql
  155. - <<: *docker_elasticsearch
  156. - <<: *docker_selenium_chrome
  157. - <<: *docker_imap
  158. .services_mysql_postgresql_elasticsearch_selenium_firefox_imap: &services_mysql_postgresql_elasticsearch_selenium_firefox_imap
  159. extends:
  160. - .variables_selenium_firefox
  161. variables:
  162. ELASTICSEARCH_TAG: 'stable'
  163. services:
  164. - <<: *docker_mysql
  165. - <<: *docker_postgresql
  166. - <<: *docker_elasticsearch
  167. - <<: *docker_selenium_firefox
  168. - <<: *docker_imap
  169. .services_mysql_postgresql_elasticsearch_selenium_chrome_imap_redis_memcached: &services_mysql_postgresql_elasticsearch_selenium_chrome_imap_redis_memcached
  170. extends:
  171. - .variables_selenium_chrome
  172. - .variables_redis_memcached
  173. variables:
  174. ELASTICSEARCH_TAG: 'stable'
  175. services:
  176. - <<: *docker_mysql
  177. - <<: *docker_postgresql
  178. - <<: *docker_elasticsearch
  179. - <<: *docker_selenium_chrome
  180. - <<: *docker_imap
  181. - <<: *docker_redis
  182. - <<: *docker_memcached
  183. .services_mysql_postgresql_elasticsearch_selenium_firefox_imap_redis_memcached: &services_mysql_postgresql_elasticsearch_selenium_firefox_imap_redis_memcached
  184. extends:
  185. - .variables_selenium_firefox
  186. - .variables_redis_memcached
  187. variables:
  188. ELASTICSEARCH_TAG: 'stable'
  189. services:
  190. - <<: *docker_mysql
  191. - <<: *docker_postgresql
  192. - <<: *docker_elasticsearch
  193. - <<: *docker_selenium_firefox
  194. - <<: *docker_imap
  195. - <<: *docker_redis
  196. - <<: *docker_memcached
  197. .rules_integration_manual_start: &rules_integration_manual_start
  198. rules:
  199. - if: $CI_MERGE_REQUEST_ID
  200. when: never
  201. - if: '$CI_COMMIT_BRANCH =~ /^private/ && $INTEGRATION_TESTS == null'
  202. when: manual
  203. allow_failure: true
  204. - when: on_success
  205. # we need at least one job to store and include this template
  206. # but we skip this via 'only' -> 'variables' -> '$IGNORE'
  207. # $IGNORE is not defined
  208. ignore:
  209. stage: test
  210. only:
  211. variables:
  212. - $IGNORE
  213. script:
  214. - ''