123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254 |
- # Artifacts are stored for failed jobs
- .artifacts_error: &artifacts_error
- artifacts:
- expire_in: 1 week
- when: on_failure
- paths:
- - tmp/screenshot*
- - tmp/screenshots/*
- - log/*.log
- .variables_es: &variables_es
- variables:
- ES_INDEX_RAND: 'true'
- ES_URL: 'http://elasticsearch:9200'
- ELASTICSEARCH_TAG: '7.16'
- .variables_redis_memcached: &variables_redis_memcached
- variables:
- REDIS_URL: 'redis://redis:6379'
- MEMCACHE_SERVERS: 'memcached'
- .variables_selenium_firefox: &variables_selenium_firefox
- variables:
- REMOTE_URL: 'http://selenium-firefox:4444/wd/hub'
- BROWSER: 'firefox'
- BROWSER_HEADLESS: 'true'
- START_XVFB: 'false' # not needed for headless mode
- SE_NODE_MAX_SESSIONS: '5'
- SE_NODE_OVERRIDE_MAX_SESSIONS: 'true'
- .variables_selenium_chrome: &variables_selenium_chrome
- variables:
- REMOTE_URL: 'http://selenium-chrome:4444/wd/hub'
- BROWSER: chrome
- BROWSER_HEADLESS: 'true'
- START_XVFB: 'false' # not needed for headless mode
- SE_NODE_MAX_SESSIONS: '5'
- SE_NODE_OVERRIDE_MAX_SESSIONS: 'true'
- .variables_app_restart_cmd: &variables_app_restart_cmd
- variables:
- APP_RESTART_CMD: 'bundle exec rake environment zammad:ci:app:restart'
- .variables_rspec_slicing: &variables_rspec_slicing
- variables:
- RSPEC_EXAMPLE_MATCHES: '.' # Default: all. Set this to one of the slices in a job to run only that slice.
- RSPEC_EXAMPLE_SLICE_1_OF_4: '^[A-H]'
- RSPEC_EXAMPLE_SLICE_2_OF_4: '^[I-P]'
- RSPEC_EXAMPLE_SLICE_3_OF_4: '^[Q-S]'
- RSPEC_EXAMPLE_SLICE_4_OF_4: '^[^A-S]' # Rest, including lower case and other characters like '#'
- .rules_singletest: &rules_singletest
- rules:
- - if: $CI_MERGE_REQUEST_ID
- when: never
- - if: '$SINGLETESTNAME && $SINGLETESTNAME == $CI_JOB_NAME'
- when: always
- - if: '$SINGLETESTNAME && $SINGLETESTNAME != $CI_JOB_NAME'
- when: never
- - if: '$CI_JOB_NAME'
- when: on_success
- # Workaround to enable usage of mixed SSH and Docker GitLab CI runners
- .tags_docker: &tags_docker
- tags:
- - docker
- .tags_docker_low_concurrency: &tags_docker_low_concurrency
- tags:
- - docker
- - low_concurrency
- .env_base: &env_base
- <<: *tags_docker
- <<: *artifacts_error
- <<: *rules_singletest
- interruptible: true
- # DB Docker
- .docker_mysql: &docker_mysql
- name: $CI_REGISTRY/docker/zammad-mysql:stable
- alias: mysql
- .docker_postgresql: &docker_postgresql
- name: $CI_REGISTRY/docker/zammad-postgresql:stable
- alias: postgresql
- .docker_elasticsearch: &docker_elasticsearch
- name: $CI_REGISTRY/docker/zammad-elasticsearch:$ELASTICSEARCH_TAG
- alias: elasticsearch
- .docker_selenium_chrome: &docker_selenium_chrome
- name: $CI_REGISTRY/docker/zammad-selenium-chrome:stable
- alias: selenium-chrome
- .docker_selenium_firefox: &docker_selenium_firefox
- name: $CI_REGISTRY/docker/zammad-selenium-firefox:stable
- alias: selenium-firefox
- .docker_imap: &docker_imap
- name: $CI_REGISTRY/docker/zammad-imap:stable
- alias: mail
- .docker_redis: &docker_redis
- name: $CI_REGISTRY/docker/zammad-redis:stable
- alias: redis
- .docker_memcached: &docker_memcached
- name: $CI_REGISTRY/docker/zammad-memcached:stable
- alias: memcached
- command: ['memcached', '-m', '256M']
- # service templates
- .services_mysql: &services_mysql
- services:
- - <<: *docker_mysql
- .services_mysql_redis_memcached: &services_mysql_redis_memcached
- extends:
- - .variables_redis_memcached
- services:
- - <<: *docker_mysql
- - <<: *docker_redis
- - <<: *docker_memcached
- .services_postgresql: &services_postgresql
- services:
- - <<: *docker_postgresql
- .services_postgresql_redis_memcached: &services_postgresql_redis_memcached
- extends:
- - .variables_redis_memcached
- services:
- - <<: *docker_postgresql
- - <<: *docker_redis
- - <<: *docker_memcached
- .services_mysql_postgresql_redis_memcached:
- &services_mysql_postgresql_redis_memcached
- extends:
- - .variables_redis_memcached
- services:
- - <<: *docker_mysql
- - <<: *docker_postgresql
- - <<: *docker_redis
- - <<: *docker_memcached
- .services_postgresql_selenium_chrome: &services_postgresql_selenium_chrome
- extends:
- - .variables_selenium_chrome
- services:
- - <<: *docker_postgresql
- - <<: *docker_selenium_chrome
- .services_postgresql_selenium_firefox: &services_postgresql_selenium_firefox
- extends:
- - .variables_selenium_firefox
- services:
- - <<: *docker_postgresql
- - <<: *docker_selenium_firefox
- .services_mysql_postgresql_imap: &services_mysql_postgresql_imap
- services:
- - <<: *docker_mysql
- - <<: *docker_postgresql
- - <<: *docker_imap
- .services_mysql_postgresql_elasticsearch:
- &services_mysql_postgresql_elasticsearch
- services:
- - <<: *docker_mysql
- - <<: *docker_postgresql
- - <<: *docker_elasticsearch
- .services_mysql_postgresql_redis_memcached_elasticsearch:
- &services_mysql_postgresql_redis_memcached_elasticsearch
- extends:
- - .variables_redis_memcached
- services:
- - <<: *docker_mysql
- - <<: *docker_postgresql
- - <<: *docker_redis
- - <<: *docker_memcached
- - <<: *docker_elasticsearch
- .services_mysql_postgresql_elasticsearch_selenium_chrome_imap:
- &services_mysql_postgresql_elasticsearch_selenium_chrome_imap
- extends:
- - .variables_selenium_chrome
- services:
- - <<: *docker_mysql
- - <<: *docker_postgresql
- - <<: *docker_elasticsearch
- - <<: *docker_selenium_chrome
- - <<: *docker_imap
- .services_mysql_postgresql_elasticsearch_selenium_firefox_imap:
- &services_mysql_postgresql_elasticsearch_selenium_firefox_imap
- extends:
- - .variables_selenium_firefox
- services:
- - <<: *docker_mysql
- - <<: *docker_postgresql
- - <<: *docker_elasticsearch
- - <<: *docker_selenium_firefox
- - <<: *docker_imap
- .services_mysql_postgresql_elasticsearch_selenium_chrome_imap_redis_memcached:
- &services_mysql_postgresql_elasticsearch_selenium_chrome_imap_redis_memcached
- extends:
- - .variables_selenium_chrome
- - .variables_redis_memcached
- services:
- - <<: *docker_mysql
- - <<: *docker_postgresql
- - <<: *docker_elasticsearch
- - <<: *docker_selenium_chrome
- - <<: *docker_imap
- - <<: *docker_redis
- - <<: *docker_memcached
- .services_mysql_postgresql_elasticsearch_selenium_firefox_imap_redis_memcached:
- &services_mysql_postgresql_elasticsearch_selenium_firefox_imap_redis_memcached
- extends:
- - .variables_selenium_firefox
- - .variables_redis_memcached
- services:
- - <<: *docker_mysql
- - <<: *docker_postgresql
- - <<: *docker_elasticsearch
- - <<: *docker_selenium_firefox
- - <<: *docker_imap
- - <<: *docker_redis
- - <<: *docker_memcached
- .rules_integration_manual_start: &rules_integration_manual_start
- rules:
- - if: $CI_MERGE_REQUEST_ID
- when: never
- - if: '$CI_COMMIT_BRANCH =~ /^private/ && $INTEGRATION_TESTS == null'
- when: manual
- allow_failure: true
- - when: on_success
- # we need at least one job to store and include this template
- # but we skip this via 'only' -> 'variables' -> '$IGNORE'
- # $IGNORE is not defined
- ignore:
- stage: test
- only:
- variables:
- - $IGNORE
- script:
- - ''
|