image: "ruby:2.2" services: - mysql:latest - postgres:latest - redis:latest cache: key: "ruby22" paths: - vendor variables: MYSQL_ALLOW_EMPTY_PASSWORD: "1" before_script: - source ./scripts/prepare_build.sh - ruby -v - which ruby - gem install bundler --no-ri --no-rdoc - cp config/gitlab.yml.example config/gitlab.yml - touch log/application.log - touch log/test.log - 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:benchmark: stage: test script: - RAILS_ENV=test bundle exec rake spec:benchmark tags: - ruby - mysql allow_failure: true 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 SIMPLECOV=true bundle exec rake spinach:project:half tags: - ruby - mysql spinach:project:rest: stage: test script: - RAILS_ENV=test SIMPLECOV=true bundle exec rake spinach:project:rest tags: - ruby - mysql spinach:other: stage: test script: - 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 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.1 jobs spec:feature:ruby21: stage: test image: ruby:2.1 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: "ruby21" paths: - vendor tags: - ruby - mysql spec:api:ruby21: image: ruby:2.1 only: - master script: - RAILS_ENV=test SIMPLECOV=true bundle exec rake spec:api cache: key: "ruby21" paths: - vendor tags: - ruby - mysql spec:models:ruby21: stage: test image: ruby:2.1 only: - master script: - RAILS_ENV=test SIMPLECOV=true bundle exec rake spec:models cache: key: "ruby21" paths: - vendor tags: - ruby - mysql spec:lib:ruby21: image: ruby:2.1 only: - master script: - RAILS_ENV=test SIMPLECOV=true bundle exec rake spec:lib cache: key: "ruby21" paths: - vendor tags: - ruby - mysql spec:services:ruby21: image: ruby:2.1 only: - master script: - RAILS_ENV=test SIMPLECOV=true bundle exec rake spec:services cache: key: "ruby21" paths: - vendor tags: - ruby - mysql spec:benchmark:ruby21: image: ruby:2.1 only: - master script: - RAILS_ENV=test bundle exec rake spec:benchmark cache: key: "ruby21" paths: - vendor tags: - ruby - mysql allow_failure: true spec:other:ruby21: image: ruby:2.1 only: - master script: - RAILS_ENV=test SIMPLECOV=true bundle exec rake spec:other cache: key: "ruby21" paths: - vendor tags: - ruby - mysql spinach:project:half:ruby21: image: ruby:2.1 only: - master script: - RAILS_ENV=test SIMPLECOV=true bundle exec rake spinach:project:half cache: key: "ruby21" paths: - vendor tags: - ruby - mysql spinach:project:rest:ruby21: image: ruby:2.1 only: - master script: - RAILS_ENV=test SIMPLECOV=true bundle exec rake spinach:project:rest cache: key: "ruby21" paths: - vendor tags: - ruby - mysql spinach:other:ruby21: image: ruby:2.1 only: - master script: - RAILS_ENV=test SIMPLECOV=true bundle exec rake spinach:other cache: key: "ruby21" paths: - vendor tags: - ruby - mysql notify:slack: stage: notifications script: - source ./scripts/notify_slack.sh "#notifications" "Build failed for master/tags!" when: on_failure only: - master@gitlab-org/gitlab-ce - tags@gitlab-org/gitlab-ce - master@gitlab-org/gitlab-ee - tags@gitlab-org/gitlab-ee