trabajo-afectivo/.gitlab/ci/base.yml

249 lines
6.8 KiB
YAML

# 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:
- ''