123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660 |
- image: registry.znuny.com/docker/zammad-ruby:2.5.5
- # Global variables added to the ENV of each job
- variables:
- # for faster translation loading
- Z_LOCALES: "en-us:de-de"
- # Browser tests and variables
- RAILS_SERVE_STATIC_FILES: "true"
- REMOTE_URL: "http://selenium:24444/wd/hub"
- TZ: "Europe/London"
- # docker elgalu/selenium variables for parallel browser instance creation
- MAX_INSTANCES: "50"
- MAX_SESSIONS: "50"
- # docker-imap-devel variables required for browser tests
- MAILNAME: "mail.test.dc.zammad.com"
- MAILBOX_INIT: "zammad@mail.test.dc.zammad.com:zammad"
- MAIL_ADDRESS: "zammad@mail.test.dc.zammad.com"
- MAIL_PASS: "zammad"
- # Artifacts are stored for failed jobs for 2 days
- .artifacts_error_template: &artifacts_error
- artifacts:
- expire_in: 2 days
- when: on_failure
- paths:
- - tmp/screenshot*
- - tmp/screenshots/*
- - log/*.log
- # Workaround to enable usage of mixed SSH and Docker GitLab CI runners
- .docker_env_template: &docker_env
- tags:
- - docker
- # Workaround for blocked port 25 access on cloud provider infrastructure
- .requires_mail_port_access_template: &requires_mail_port_access
- tags:
- - mail
- .base_env_template: &base_env
- <<: *docker_env
- <<: *artifacts_error
- # General required Docker services for different/random DB envs
- .services_mysql_template: &services_mysql
- services:
- - name: registry.znuny.com/docker/zammad-mysql:latest
- alias: mysql
- .services_postgresql_template: &services_postgresql
- services:
- - name: registry.znuny.com/docker/zammad-postgresql:latest
- alias: postgresql
- .services_random_db_template: &services_random_db
- services:
- - name: registry.znuny.com/docker/zammad-mysql:latest
- alias: mysql
- - name: registry.znuny.com/docker/zammad-postgresql:latest
- alias: postgresql
- # Cache gems in between jobs and pipelines
- cache:
- key: "ruby25"
- paths:
- - vendor/ruby
- # Initialize application env
- before_script:
- - bundle install -j $(nproc) --path vendor
- - bundle exec ruby script/build/database_config.rb
- # Stages
- stages:
- - pre
- - test
- - browser-core
- - browser-integration
- # pre stage
- # Workaround to enable usage of mixed SSH and Docker GitLab CI runners
- .pre_stage_template: &pre_stage
- <<: *docker_env
- stage: pre
- before_script:
- - '' # disable before_script for pre "non-application" env
- pre:rubocop:
- <<: *pre_stage
- script:
- - bundle install -j $(nproc) --path vendor
- - bundle exec rubocop
- pre:coffeelint:
- <<: *pre_stage
- script:
- - coffeelint app/
- pre:bundle-audit:
- <<: *pre_stage
- script:
- - gem install bundler-audit
- - bundle-audit update
- - bundle-audit --ignore CVE-2015-9284
- pre:github:
- <<: *pre_stage
- tags:
- - deploy
- script:
- - script/build/sync_repo.sh git@github.com:zammad/zammad.git
- # test stage
- ## RSpec
- .script_rspec_template: &script_rspec_definition
- <<: *base_env
- variables:
- RAILS_ENV: "test"
- script:
- - bundle exec rake zammad:db:init
- - bundle exec rspec -t ~type:system -t ~searchindex
- test:rspec:mysql:
- stage: test
- <<: *services_mysql
- <<: *script_rspec_definition
- test:rspec:postgresql:
- stage: test
- <<: *services_postgresql
- <<: *script_rspec_definition
- ## Unit and Controller tests
- .script_unit_template: &script_unit_definition
- <<: *base_env
- variables:
- RAILS_ENV: "test"
- script:
- - bundle exec rake zammad:db:init
- - bundle exec rake test:units
- - bundle exec rails test test/integration/object_manager_test.rb
- - bundle exec rails test test/integration/package_test.rb
- test:unit:mysql:
- stage: test
- <<: *services_mysql
- <<: *script_unit_definition
- test:unit:postgresql:
- stage: test
- <<: *services_postgresql
- <<: *script_unit_definition
- ## Integration tests
- .test_integration_template: &test_integration_definition
- <<: *base_env
- <<: *services_random_db
- stage: test
- variables:
- RAILS_ENV: "test"
- test:integration:email_helper_deliver:
- <<: *test_integration_definition
- <<: *requires_mail_port_access
- script:
- - bundle exec rake zammad:db:unseeded
- - bundle exec rails test test/integration/email_helper_test.rb
- - bundle exec rails test test/integration/email_deliver_test.rb
- - bundle exec rails test test/integration/email_keep_on_server_test.rb
- - bundle exec rails test test/integration/email_postmaster_to_sender.rb
- test:integration:facebook:
- <<: *test_integration_definition
- script:
- - bundle exec rake zammad:db:init
- - bundle exec rails test test/integration/facebook_test.rb
- allow_failure: true
- test:integration:geo:
- <<: *test_integration_definition
- script:
- - bundle exec rake zammad:db:unseeded
- - bundle exec rails test test/integration/geo_calendar_test.rb
- - bundle exec rails test test/integration/geo_location_test.rb
- - bundle exec rails test test/integration/geo_ip_test.rb
- test:integration:user_agent:
- <<: *test_integration_definition
- script:
- - bundle exec rake zammad:db:unseeded
- - bundle exec rails test test/integration/user_agent_test.rb
- - export ZAMMAD_PROXY_TEST=true
- - bundle exec rails test test/integration/user_agent_test.rb
- allow_failure: true
- test:integration:slack:
- <<: *test_integration_definition
- script:
- - bundle exec rake zammad:db:unseeded
- - echo "gem 'slack-api'" >> Gemfile.local
- - bundle install -j $(nproc)
- - bundle exec rails test test/integration/slack_test.rb
- test:integration:clearbit:
- <<: *test_integration_definition
- script:
- - bundle exec rake zammad:db:unseeded
- - bundle exec rails test test/integration/clearbit_test.rb
- allow_failure: true
- ### Elasticsearch
- .script_integration_es_variables: &script_integration_es_variables
- ES_INDEX_RAND: "true"
- ES_URL: "http://elasticsearch:9200"
- .script_integration_es_template: &script_integration_es_definition
- <<: *base_env
- stage: test
- variables:
- <<: *script_integration_es_variables
- RAILS_ENV: "test"
- script:
- - bundle exec rake zammad:db:unseeded
- - bundle exec rails test test/integration/elasticsearch_active_test.rb
- - bundle exec rails test test/integration/elasticsearch_test.rb
- - bundle exec rspec --tag searchindex --tag ~type:system
- - bundle exec rails test test/integration/report_test.rb
- test:integration:es:5.6:
- <<: *script_integration_es_definition
- services:
- - name: registry.znuny.com/docker/zammad-mysql:latest
- alias: mysql
- - name: registry.znuny.com/docker/zammad-postgresql:latest
- alias: postgresql
- - name: registry.znuny.com/docker/zammad-elasticsearch:5.6
- alias: elasticsearch
- test:integration:es:6:
- <<: *script_integration_es_definition
- services:
- - name: registry.znuny.com/docker/zammad-mysql:latest
- alias: mysql
- - name: registry.znuny.com/docker/zammad-postgresql:latest
- alias: postgresql
- - name: registry.znuny.com/docker/zammad-elasticsearch:6
- alias: elasticsearch
- test:integration:es:7:
- <<: *script_integration_es_definition
- services:
- - name: registry.znuny.com/docker/zammad-mysql:latest
- alias: mysql
- - name: registry.znuny.com/docker/zammad-postgresql:latest
- alias: postgresql
- - name: registry.znuny.com/docker/zammad-elasticsearch:7
- alias: elasticsearch
- ### Zendesk
- test:integration:zendesk:
- <<: *base_env
- <<: *services_random_db
- stage: test
- variables:
- RAILS_ENV: "test"
- script:
- - bundle exec rake zammad:db:unseeded
- - bundle exec rails test test/integration/zendesk_import_test.rb
- allow_failure: true
- ### OTRS
- .script_integration_otrs_template: &script_integration_otrs_definition
- <<: *base_env
- <<: *services_random_db
- stage: test
- script:
- - bundle exec rake zammad:db:unseeded
- - bundle exec rails test test/integration/otrs_import_test.rb
- test:integration:otrs_6:
- <<: *script_integration_otrs_definition
- variables:
- RAILS_ENV: "test"
- IMPORT_OTRS_ENDPOINT: "https://vz1185.test.znuny.com/otrs/public.pl?Action=ZammadMigrator"
- test:integration:otrs_5:
- <<: *script_integration_otrs_definition
- variables:
- RAILS_ENV: "test"
- IMPORT_OTRS_ENDPOINT: "http://vz1109.demo.znuny.com/otrs/public.pl?Action=ZammadMigrator"
- test:integration:otrs_4:
- <<: *script_integration_otrs_definition
- variables:
- RAILS_ENV: "test"
- IMPORT_OTRS_ENDPOINT: "http://vz383.demo.znuny.com/otrs/public.pl?Action=ZammadMigrator"
- test:integration:otrs_33:
- <<: *script_integration_otrs_definition
- variables:
- RAILS_ENV: "test"
- IMPORT_OTRS_ENDPOINT: "http://vz305.demo.znuny.com/otrs/public.pl?Action=ZammadMigrator"
- test:integration:otrs_32:
- <<: *script_integration_otrs_definition
- variables:
- RAILS_ENV: "test"
- IMPORT_OTRS_ENDPOINT: "http://vz382.demo.znuny.com/otrs/public.pl?Action=ZammadMigrator"
- test:integration:otrs_31:
- <<: *script_integration_otrs_definition
- variables:
- RAILS_ENV: "test"
- IMPORT_OTRS_ENDPOINT: "http://vz381.demo.znuny.com/otrs/public.pl?Action=ZammadMigrator"
- # Browser tests
- ## preparation (asset precompile)
- browser:build:
- <<: *base_env
- <<: *services_postgresql
- stage: test
- variables:
- RAILS_ENV: "production"
- script:
- - bundle exec rake zammad:db:unseeded
- - bundle exec rake assets:precompile
- artifacts:
- expire_in: 1 week
- paths:
- - public/assets/.sprockets-manifest*
- - public/assets/application-*
- - public/assets/knowledge_base*
- - public/assets/print-*
- .services_browser_template: &services_browser_definition
- services:
- - name: registry.znuny.com/docker/zammad-mysql:latest
- alias: mysql
- - name: registry.znuny.com/docker/zammad-postgresql:latest
- alias: postgresql
- - name: registry.znuny.com/docker/zammad-elasticsearch:stable
- alias: elasticsearch
- - name: docker.io/elgalu/selenium:3.14.0-p17
- alias: selenium
- - name: registry.znuny.com/docker/docker-imap-devel:latest
- alias: mail
- ## Browser core tests
- .variables_browser_template: &variables_browser_definition
- RAILS_ENV: "production"
- APP_RESTART_CMD: "bundle exec rake zammad:ci:app:restart"
- .test_browser_core_template: &test_browser_core_definition
- <<: *base_env
- stage: browser-core
- dependencies:
- - browser:build
- ## Capybara
- .test_capybara_template: &test_capybara_definition
- <<: *test_browser_core_definition
- script:
- - bundle exec rake zammad:ci:test:prepare[with_elasticsearch]
- - bundle exec rspec --fail-fast -t type:system
- .variables_capybara_chrome_template: &variables_capybara_chrome_definition
- <<: *test_capybara_definition
- variables:
- <<: *script_integration_es_variables
- RAILS_ENV: "test"
- BROWSER: "chrome"
- .variables_capybara_ff_template: &variables_capybara_ff_definition
- <<: *test_capybara_definition
- variables:
- <<: *script_integration_es_variables
- RAILS_ENV: "test"
- BROWSER: "firefox"
- test:browser:core:capybara_chrome:
- <<: *variables_capybara_chrome_definition
- <<: *services_browser_definition
- test:browser:core:capybara_ff:
- <<: *variables_capybara_ff_definition
- <<: *services_browser_definition
- ### API clients
- test:browser:integration:api_client_ruby:
- <<: *test_browser_core_definition
- <<: *services_random_db
- variables:
- <<: *variables_browser_definition
- script:
- - RAILS_ENV=test bundle exec rake db:create
- - cp contrib/auto_wizard_test.json auto_wizard.json
- - bundle exec rake zammad:ci:test:start
- - git clone https://github.com/zammad/zammad-api-client-ruby.git
- - cd zammad-api-client-ruby
- - bundle install -j $(nproc)
- - bundle exec rspec
- test:browser:integration:api_client_php:
- <<: *test_browser_core_definition
- <<: *services_random_db
- variables:
- <<: *variables_browser_definition
- ZAMMAD_PHP_API_CLIENT_UNIT_TESTS_URL: "http://localhost:3000"
- ZAMMAD_PHP_API_CLIENT_UNIT_TESTS_USERNAME: "master@example.com"
- ZAMMAD_PHP_API_CLIENT_UNIT_TESTS_PASSWORD: "test"
- script:
- - RAILS_ENV=test bundle exec rake db:create
- - bundle exec rake zammad:ci:test:start zammad:setup:auto_wizard
- - git clone https://github.com/zammad/zammad-api-client-php.git
- - php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
- - php composer-setup.php --install-dir=/usr/local/bin
- - ln -s /usr/local/bin/composer.phar /usr/local/bin/composer
- - cd zammad-api-client-php
- - composer install
- - vendor/bin/phpunit
- ### Browser test slices
- #### Templates
- .script_browser_slice_template: &script_browser_slice_definition
- script:
- # temporary workaround to check Yahoo! mailbox only in test:browser:core:ff_3_* tests
- - if [[ $CI_JOB_NAME != test:browser:core:ff_3_* ]]; then unset MAILBOX_AUTO1 ; fi
- - if [[ $CI_JOB_NAME != test:browser:core:ff_3_* ]]; then unset MAILBOX_AUTO2 ; fi
- - if [[ $CI_JOB_NAME != test:browser:core:ff_3_* ]]; then unset MAILBOX_MANUAL1 ; fi
- - if [[ $CI_JOB_NAME != test:browser:core:ff_3_* ]]; then unset MAILBOX_MANUAL2 ; fi
- - env
- - script/build/test_slice_tests.sh $TEST_SLICE
- - RAILS_ENV=test bundle exec rake db:create
- - bundle exec rake zammad:ci:test:start[with_elasticsearch]
- - time bundle exec rails test --fail-fast test/browser
- .test_browser_core_base_template: &test_browser_core_base_definition
- <<: *test_browser_core_definition
- <<: *script_browser_slice_definition
- <<: *services_browser_definition
- #### Firefox
- test:browser:core:ff_1:
- <<: *test_browser_core_base_definition
- variables:
- <<: *variables_browser_definition
- BROWSER: "firefox"
- TEST_SLICE: "1"
- test:browser:core:ff_2:
- <<: *test_browser_core_base_definition
- variables:
- <<: *variables_browser_definition
- BROWSER: "firefox"
- TEST_SLICE: "2"
- test:browser:core:ff_3:
- <<: *test_browser_core_base_definition
- <<: *requires_mail_port_access
- variables:
- <<: *variables_browser_definition
- BROWSER: "firefox"
- TEST_SLICE: "3"
- test:browser:core:ff_4:
- <<: *test_browser_core_base_definition
- variables:
- <<: *variables_browser_definition
- BROWSER: "firefox"
- TEST_SLICE: "4"
- test:browser:core:ff_5:
- <<: *test_browser_core_base_definition
- variables:
- <<: *variables_browser_definition
- BROWSER: "firefox"
- TEST_SLICE: "5"
- test:browser:core:ff_6:
- <<: *test_browser_core_base_definition
- variables:
- <<: *variables_browser_definition
- BROWSER: "firefox"
- TEST_SLICE: "6"
- ### Chrome
- test:browser:core:chrome_1:
- <<: *test_browser_core_base_definition
- variables:
- <<: *variables_browser_definition
- BROWSER: "chrome"
- TEST_SLICE: "1"
- test:browser:core:chrome_2:
- <<: *test_browser_core_base_definition
- variables:
- <<: *variables_browser_definition
- BROWSER: "chrome"
- TEST_SLICE: "2"
- test:browser:core:chrome_3:
- <<: *test_browser_core_base_definition
- variables:
- <<: *variables_browser_definition
- BROWSER: "chrome"
- TEST_SLICE: "3"
- test:browser:core:chrome_4:
- <<: *test_browser_core_base_definition
- variables:
- <<: *variables_browser_definition
- BROWSER: "chrome"
- TEST_SLICE: "4"
- test:browser:core:chrome_5:
- <<: *test_browser_core_base_definition
- variables:
- <<: *variables_browser_definition
- BROWSER: "chrome"
- TEST_SLICE: "5"
- test:browser:core:chrome_6:
- <<: *test_browser_core_base_definition
- variables:
- <<: *variables_browser_definition
- BROWSER: "chrome"
- TEST_SLICE: "6"
- ### Auto wizard
- .auto_wizard_services_template: &auto_wizard_services
- services:
- - name: registry.znuny.com/docker/zammad-postgresql:latest
- alias: postgresql
- - name: docker.io/elgalu/selenium:3.14.0-p17
- alias: selenium
- .test_browser_integration_template: &test_browser_integration_definition
- <<: *base_env
- <<: *auto_wizard_services
- stage: browser-integration
- dependencies:
- - browser:build
- .script_integration_auto_wizard_template: &script_integration_auto_wizard_definition
- script:
- - RAILS_ENV=test bundle exec rake db:create
- - cp $AUTO_WIZARD_FILE auto_wizard.json
- - bundle exec rake zammad:ci:test:start
- - bundle exec rails test $TEST_FILE
- .browser_core_auto_wizard_template: &browser_core_auto_wizard_definition
- <<: *test_browser_core_definition
- <<: *auto_wizard_services
- <<: *script_integration_auto_wizard_definition
- test:browser:autowizard_chrome:
- <<: *browser_core_auto_wizard_definition
- variables:
- <<: *variables_browser_definition
- BROWSER: "chrome"
- AUTO_WIZARD_FILE: "contrib/auto_wizard_example.json"
- TEST_FILE: "test/integration/auto_wizard_browser_test.rb"
- test:browser:autowizard_ff:
- <<: *browser_core_auto_wizard_definition
- variables:
- <<: *variables_browser_definition
- BROWSER: "firefox"
- AUTO_WIZARD_FILE: "contrib/auto_wizard_example.json"
- TEST_FILE: "test/integration/auto_wizard_browser_test.rb"
- ### Browser integration tests
- .browser_integration_auto_wizard_template: &browser_integration_auto_wizard_definition
- <<: *test_browser_integration_definition
- <<: *script_integration_auto_wizard_definition
- test:browser:integration:twitter_chrome:
- <<: *browser_integration_auto_wizard_definition
- variables:
- <<: *variables_browser_definition
- BROWSER: "chrome"
- AUTO_WIZARD_FILE: "contrib/auto_wizard_test.json"
- TEST_FILE: "test/integration/twitter_browser_test.rb"
- test:browser:integration:twitter_ff:
- <<: *browser_integration_auto_wizard_definition
- variables:
- <<: *variables_browser_definition
- BROWSER: "firefox"
- AUTO_WIZARD_FILE: "contrib/auto_wizard_test.json"
- TEST_FILE: "test/integration/twitter_browser_test.rb"
- test:browser:integration:facebook_chrome:
- <<: *browser_integration_auto_wizard_definition
- variables:
- <<: *variables_browser_definition
- BROWSER: "chrome"
- AUTO_WIZARD_FILE: "contrib/auto_wizard_test.json"
- TEST_FILE: "test/integration/facebook_browser_test.rb"
- test:browser:integration:facebook_ff:
- <<: *browser_integration_auto_wizard_definition
- variables:
- <<: *variables_browser_definition
- BROWSER: "firefox"
- AUTO_WIZARD_FILE: "contrib/auto_wizard_test.json"
- TEST_FILE: "test/integration/facebook_browser_test.rb"
- test:browser:integration:idoit_chrome:
- <<: *browser_integration_auto_wizard_definition
- variables:
- <<: *variables_browser_definition
- BROWSER: "chrome"
- AUTO_WIZARD_FILE: "contrib/auto_wizard_test.json"
- TEST_FILE: "test/integration/idoit_browser_test.rb"
- ### Browser integration tests
- .variables_browser_import_template: &variables_browser_import_definition
- BROWSER: "chrome"
- RAILS_SERVE_STATIC_FILES: "true"
- RAILS_ENV: "production"
- .browser_integration_import_template: &browser_integration_import_definition
- <<: *test_browser_integration_definition
- script:
- - RAILS_ENV=test bundle exec rake db:create
- - bundle exec rake zammad:ci:test:start
- - bundle exec rails test $TEST_FILE
- test:browser:integration:otrs_chrome:
- <<: *browser_integration_import_definition
- variables:
- <<: *variables_browser_import_definition
- TEST_FILE: "test/integration/otrs_import_browser_test.rb"
- test:browser:integration:zendesk_chrome:
- <<: *browser_integration_import_definition
- variables:
- <<: *variables_browser_import_definition
- TEST_FILE: "test/integration/zendesk_import_browser_test.rb"
|