image: "ruby:2.1" services: - mysql:latest - postgres:latest - redis:latest cache: key: "ruby21" paths: - vendor variables: MYSQL_ALLOW_EMPTY_PASSWORD: "1" # retry tests only in CI environment RSPEC_RETRY_RETRY_COUNT: "3" before_script: - source ./scripts/prepare_build.sh - ruby -v - which ruby - retry gem install bundler --no-ri --no-rdoc - cp config/gitlab.yml.example config/gitlab.yml - touch log/application.log - touch log/test.log - retry bundle install --without postgres production --jobs $(nproc) "${FLAGS[@]}" - RAILS_ENV=test bundle exec rake db:drop db:create db:schema:load db:migrate stages: - test - notifications spec:feature: stage: test script: - RAILS_ENV=test bundle exec rake assets:precompile 2>/dev/null - RAILS_ENV=test SIMPLECOV=true bundle exec rake spec:feature tags: - ruby - mysql spec:api: stage: test script: - RAILS_ENV=test SIMPLECOV=true bundle exec rake spec:api tags: - ruby - mysql spec:models: stage: test script: - RAILS_ENV=test SIMPLECOV=true bundle exec rake spec:models tags: - ruby - mysql spec:lib: stage: test script: - RAILS_ENV=test SIMPLECOV=true bundle exec rake spec:lib tags: - ruby - mysql spec:services: stage: test script: - RAILS_ENV=test SIMPLECOV=true bundle exec rake spec:services tags: - ruby - mysql spec:other: stage: test script: - RAILS_ENV=test SIMPLECOV=true bundle exec rake spec:other tags: - ruby - mysql spinach:project:half: stage: test script: - RAILS_ENV=test bundle exec rake assets:precompile 2>/dev/null - RAILS_ENV=test SIMPLECOV=true bundle exec rake spinach:project:half tags: - ruby - mysql spinach:project:rest: stage: test script: - RAILS_ENV=test bundle exec rake assets:precompile 2>/dev/null - RAILS_ENV=test SIMPLECOV=true bundle exec rake spinach:project:rest tags: - ruby - mysql spinach:other: stage: test script: - RAILS_ENV=test bundle exec rake assets:precompile 2>/dev/null - RAILS_ENV=test SIMPLECOV=true bundle exec rake spinach:other tags: - ruby - mysql teaspoon: stage: test script: - RAILS_ENV=test bundle exec teaspoon tags: - ruby - mysql rubocop: stage: test script: - bundle exec rubocop tags: - ruby - mysql scss-lint: stage: test script: - bundle exec rake scss_lint tags: - ruby allow_failure: true brakeman: stage: test script: - bundle exec rake brakeman tags: - ruby - mysql flog: stage: test script: - bundle exec rake flog tags: - ruby - mysql flay: stage: test script: - bundle exec rake flay tags: - ruby - mysql bundler:audit: stage: test script: - "bundle exec bundle-audit update" - "bundle exec bundle-audit check" tags: - ruby - mysql allow_failure: true # Ruby 2.2 jobs spec:feature:ruby22: stage: test image: ruby:2.2 only: - master script: - RAILS_ENV=test bundle exec rake assets:precompile 2>/dev/null - RAILS_ENV=test SIMPLECOV=true bundle exec rake spec:feature cache: key: "ruby22" paths: - vendor tags: - ruby - mysql spec:api:ruby22: stage: test image: ruby:2.2 only: - master script: - RAILS_ENV=test SIMPLECOV=true bundle exec rake spec:api cache: key: "ruby22" paths: - vendor tags: - ruby - mysql spec:models:ruby22: stage: test image: ruby:2.2 only: - master script: - RAILS_ENV=test SIMPLECOV=true bundle exec rake spec:models cache: key: "ruby22" paths: - vendor tags: - ruby - mysql spec:lib:ruby22: stage: test image: ruby:2.2 only: - master script: - RAILS_ENV=test SIMPLECOV=true bundle exec rake spec:lib cache: key: "ruby22" paths: - vendor tags: - ruby - mysql spec:services:ruby22: stage: test image: ruby:2.2 only: - master script: - RAILS_ENV=test SIMPLECOV=true bundle exec rake spec:services cache: key: "ruby22" paths: - vendor tags: - ruby - mysql spec:other:ruby22: stage: test image: ruby:2.2 only: - master script: - RAILS_ENV=test SIMPLECOV=true bundle exec rake spec:other cache: key: "ruby22" paths: - vendor tags: - ruby - mysql spinach:project:half:ruby22: stage: test image: ruby:2.2 only: - master script: - RAILS_ENV=test bundle exec rake assets:precompile 2>/dev/null - RAILS_ENV=test SIMPLECOV=true bundle exec rake spinach:project:half cache: key: "ruby22" paths: - vendor tags: - ruby - mysql spinach:project:rest:ruby22: stage: test image: ruby:2.2 only: - master script: - RAILS_ENV=test bundle exec rake assets:precompile 2>/dev/null - RAILS_ENV=test SIMPLECOV=true bundle exec rake spinach:project:rest cache: key: "ruby22" paths: - vendor tags: - ruby - mysql spinach:other:ruby22: stage: test image: ruby:2.2 only: - master script: - RAILS_ENV=test bundle exec rake assets:precompile 2>/dev/null - RAILS_ENV=test SIMPLECOV=true bundle exec rake spinach:other cache: key: "ruby22" paths: - vendor tags: - ruby - mysql notify:slack: stage: notifications script: - ./scripts/notify_slack.sh "#builds" "Build on \`$CI_BUILD_REF_NAME\` failed! Commit \`$(git log -1 --oneline)\` See " when: on_failure only: - master@gitlab-org/gitlab-ce - tags@gitlab-org/gitlab-ce - master@gitlab-org/gitlab-ee - tags@gitlab-org/gitlab-ee