# Artifacts are stored for failed jobs for 2 days .artifacts_error: &artifacts_error artifacts: expire_in: 2 days when: on_failure paths: - tmp/screenshot* - tmp/screenshots/* - log/*.log .variables_es: &variables_es variables: ES_INDEX_RAND: "true" ES_URL: "http://elasticsearch:9200" .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" # Settings for Selenium 3: NODE_MAX_INSTANCES: "5" NODE_MAX_SESSION: "5" .variables_selenium_chrome: &variables_selenium_chrome variables: REMOTE_URL: "http://selenium-chrome:4444/wd/hub" BROWSER: chrome # Settings for Selenium 3: NODE_MAX_INSTANCES: "5" NODE_MAX_SESSION: "5" .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 # Workaround for blocked port 25 access on cloud provider infrastructure .tags_mail: &tags_mail tags: - mail .env_base: &env_base <<: *tags_docker <<: *artifacts_error <<: *rules_singletest # 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: &services_mysql_postgresql services: - <<: *docker_mysql - <<: *docker_postgresql .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 variables: ELASTICSEARCH_TAG: 'stable' services: - <<: *docker_mysql - <<: *docker_postgresql - <<: *docker_elasticsearch .services_mysql_postgresql_elasticsearch_selenium_chrome_imap: &services_mysql_postgresql_elasticsearch_selenium_chrome_imap extends: - .variables_selenium_chrome variables: ELASTICSEARCH_TAG: 'stable' 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 variables: ELASTICSEARCH_TAG: 'stable' 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 variables: ELASTICSEARCH_TAG: 'stable' 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 variables: ELASTICSEARCH_TAG: 'stable' 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: - ''