image: "ruby:2.1" services: - mysql: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" RAILS_ENV: "test" SIMPLECOV: "true" USE_DB: "true" before_script: - source ./scripts/prepare_build.sh - cp config/gitlab.yml.example config/gitlab.yml - bundle --version - retry bundle install --without postgres production --jobs $(nproc) "${FLAGS[@]}" - retry gem install knapsack - '[ "$USE_DB" != "true" ] || bundle exec rake db:drop db:create db:schema:load db:migrate' stages: - prepare - test - notifications prepare: stage: prepare variables: USE_DB: "false" script: - bundle exec rake assets:precompile - mkdir knapsack/ - echo "{}" > knapsack/rspec_report.json - echo "{}" > knapsack/spinach_report.json artifacts: paths: - public/assets/ - knapsack/ .knapsack: &knapsack stage: test script: - JOB_NAME=( $CI_BUILD_NAME ) - export CI_NODE_INDEX=${JOB_NAME[1]} - export CI_NODE_TOTAL=${JOB_NAME[2]} - export KNAPSACK_REPORT_PATH=knapsack/${JOB_NAME}_node_${CI_NODE_INDEX}_${CI_NODE_TOTAL}_report.json - cp knapsack/${JOB_NAME}_report.json ${KNAPSACK_REPORT_PATH} - knapsack ${JOB_NAME[0]} artifacts: paths: - knapsack/ .exec: &exec stage: test script: - bundle exec $CI_BUILD_NAME rspec 0 20: *knapsack rspec 1 20: *knapsack rspec 2 20: *knapsack rspec 3 20: *knapsack rspec 4 20: *knapsack rspec 5 20: *knapsack rspec 6 20: *knapsack rspec 7 20: *knapsack rspec 8 20: *knapsack rspec 9 20: *knapsack rspec 10 20: *knapsack rspec 11 20: *knapsack rspec 12 20: *knapsack rspec 13 20: *knapsack rspec 14 20: *knapsack rspec 15 20: *knapsack rspec 16 20: *knapsack rspec 17 20: *knapsack rspec 18 20: *knapsack rspec 19 20: *knapsack spinach 0 20: *knapsack spinach 1 20: *knapsack spinach 2 20: *knapsack spinach 3 20: *knapsack spinach 4 20: *knapsack spinach 5 20: *knapsack spinach 6 20: *knapsack spinach 7 20: *knapsack spinach 8 20: *knapsack spinach 9 20: *knapsack spinach 10 20: *knapsack spinach 11 20: *knapsack spinach 12 20: *knapsack spinach 13 20: *knapsack spinach 14 20: *knapsack spinach 15 20: *knapsack spinach 16 20: *knapsack spinach 17 20: *knapsack spinach 18 20: *knapsack spinach 19 20: *knapsack teaspoon: *exec rubocop: *exec rake scss_lint: *exec rake brakeman: *exec rake flog: *exec rake flay: *exec rake db:migrate:reset: *exec bundler:audit: stage: test only: - master script: - "bundle exec bundle-audit check --update --ignore OSVDB-115941" # Ruby 2.2 jobs spec:feature:ruby22: stage: test image: ruby:2.2 only: - master script: - bundle exec rake assets:precompile 2>/dev/null - bundle exec rake spec:feature cache: key: "ruby22" paths: - vendor spec:api:ruby22: stage: test image: ruby:2.2 only: - master script: - bundle exec rake spec:api cache: key: "ruby22" paths: - vendor spec:models:ruby22: stage: test image: ruby:2.2 only: - master script: - bundle exec rake spec:models cache: key: "ruby22" paths: - vendor spec:lib:ruby22: stage: test image: ruby:2.2 only: - master script: - bundle exec rake spec:lib cache: key: "ruby22" paths: - vendor spec:services:ruby22: stage: test image: ruby:2.2 only: - master script: - bundle exec rake spec:services cache: key: "ruby22" paths: - vendor spec:other:ruby22: stage: test image: ruby:2.2 only: - master script: - bundle exec rake spec:other cache: key: "ruby22" paths: - vendor spinach:project:half:ruby22: stage: test image: ruby:2.2 only: - master script: - bundle exec rake assets:precompile 2>/dev/null - bundle exec rake spinach:project:half cache: key: "ruby22" paths: - vendor spinach:project:rest:ruby22: stage: test image: ruby:2.2 only: - master script: - bundle exec rake assets:precompile 2>/dev/null - bundle exec rake spinach:project:rest cache: key: "ruby22" paths: - vendor spinach:other:ruby22: stage: test image: ruby:2.2 only: - master script: - bundle exec rake assets:precompile 2>/dev/null - bundle exec rake spinach:other cache: key: "ruby22" paths: - vendor 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