a8bfe20d0d
These new checks can be used to check if migrations require downtime or not (as tagged by their authors). In CI this compares the current branch with master so migrations added by merge requests are automatically verified. To check the migrations added since a Git reference simply run: bundle exec rake gitlab:db:downtime_check[GIT_REF]
219 lines
6 KiB
YAML
219 lines
6 KiB
YAML
image: "ruby:2.1"
|
|
|
|
services:
|
|
- mysql:latest
|
|
- redis:alpine
|
|
|
|
cache:
|
|
key: "ruby21"
|
|
paths:
|
|
- vendor/apt
|
|
- vendor/ruby
|
|
|
|
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"
|
|
USE_BUNDLE_INSTALL: "true"
|
|
GIT_DEPTH: "20"
|
|
|
|
before_script:
|
|
- source ./scripts/prepare_build.sh
|
|
- cp config/gitlab.yml.example config/gitlab.yml
|
|
- bundle --version
|
|
- '[ "$USE_BUNDLE_INSTALL" != "true" ] || 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
|
|
- post-test
|
|
|
|
# Prepare and merge knapsack tests
|
|
|
|
.knapsack-state: &knapsack-state
|
|
services: []
|
|
variables:
|
|
USE_DB: "false"
|
|
USE_BUNDLE_INSTALL: "false"
|
|
cache:
|
|
key: "knapsack"
|
|
paths:
|
|
- knapsack/
|
|
artifacts:
|
|
paths:
|
|
- knapsack/
|
|
|
|
knapsack:
|
|
<<: *knapsack-state
|
|
stage: prepare
|
|
script:
|
|
- mkdir -p knapsack/
|
|
- '[[ -f knapsack/rspec_report.json ]] || echo "{}" > knapsack/rspec_report.json'
|
|
- '[[ -f knapsack/spinach_report.json ]] || echo "{}" > knapsack/spinach_report.json'
|
|
|
|
update-knapsack:
|
|
<<: *knapsack-state
|
|
stage: post-test
|
|
script:
|
|
- scripts/merge-reports knapsack/rspec_report.json knapsack/rspec_node_*.json
|
|
- scripts/merge-reports knapsack/spinach_report.json knapsack/spinach_node_*.json
|
|
- rm -f knapsack/*_node_*.json
|
|
only:
|
|
- master
|
|
|
|
# Execute all testing suites
|
|
|
|
.rspec-knapsack: &rspec-knapsack
|
|
stage: test
|
|
script:
|
|
- bundle exec rake assets:precompile 2>/dev/null
|
|
- JOB_NAME=( $CI_BUILD_NAME )
|
|
- export CI_NODE_INDEX=${JOB_NAME[1]}
|
|
- export CI_NODE_TOTAL=${JOB_NAME[2]}
|
|
- export KNAPSACK_REPORT_PATH=knapsack/rspec_node_${CI_NODE_INDEX}_${CI_NODE_TOTAL}_report.json
|
|
- export KNAPSACK_GENERATE_REPORT=true
|
|
- cp knapsack/rspec_report.json ${KNAPSACK_REPORT_PATH}
|
|
- knapsack rspec
|
|
artifacts:
|
|
paths:
|
|
- knapsack/
|
|
|
|
.spinach-knapsack: &spinach-knapsack
|
|
stage: test
|
|
script:
|
|
- bundle exec rake assets:precompile 2>/dev/null
|
|
- JOB_NAME=( $CI_BUILD_NAME )
|
|
- export CI_NODE_INDEX=${JOB_NAME[1]}
|
|
- export CI_NODE_TOTAL=${JOB_NAME[2]}
|
|
- export KNAPSACK_REPORT_PATH=knapsack/spinach_node_${CI_NODE_INDEX}_${CI_NODE_TOTAL}_report.json
|
|
- export KNAPSACK_GENERATE_REPORT=true
|
|
- cp knapsack/spinach_report.json ${KNAPSACK_REPORT_PATH}
|
|
- knapsack spinach "-r rerun" || retry '[ ! -e tmp/spinach-rerun.txt ] || bundle exec spinach -r rerun $(cat tmp/spinach-rerun.txt)'
|
|
artifacts:
|
|
paths:
|
|
- knapsack/
|
|
|
|
rspec 0 20: *rspec-knapsack
|
|
rspec 1 20: *rspec-knapsack
|
|
rspec 2 20: *rspec-knapsack
|
|
rspec 3 20: *rspec-knapsack
|
|
rspec 4 20: *rspec-knapsack
|
|
rspec 5 20: *rspec-knapsack
|
|
rspec 6 20: *rspec-knapsack
|
|
rspec 7 20: *rspec-knapsack
|
|
rspec 8 20: *rspec-knapsack
|
|
rspec 9 20: *rspec-knapsack
|
|
rspec 10 20: *rspec-knapsack
|
|
rspec 11 20: *rspec-knapsack
|
|
rspec 12 20: *rspec-knapsack
|
|
rspec 13 20: *rspec-knapsack
|
|
rspec 14 20: *rspec-knapsack
|
|
rspec 15 20: *rspec-knapsack
|
|
rspec 16 20: *rspec-knapsack
|
|
rspec 17 20: *rspec-knapsack
|
|
rspec 18 20: *rspec-knapsack
|
|
rspec 19 20: *rspec-knapsack
|
|
|
|
spinach 0 10: *spinach-knapsack
|
|
spinach 1 10: *spinach-knapsack
|
|
spinach 2 10: *spinach-knapsack
|
|
spinach 3 10: *spinach-knapsack
|
|
spinach 4 10: *spinach-knapsack
|
|
spinach 5 10: *spinach-knapsack
|
|
spinach 6 10: *spinach-knapsack
|
|
spinach 7 10: *spinach-knapsack
|
|
spinach 8 10: *spinach-knapsack
|
|
spinach 9 10: *spinach-knapsack
|
|
|
|
# Execute all testing suites against Ruby 2.3
|
|
.ruby-23: &ruby-23
|
|
image: "ruby:2.3"
|
|
only:
|
|
- master
|
|
cache:
|
|
key: "ruby-23"
|
|
paths:
|
|
- vendor/apt
|
|
- vendor/ruby
|
|
|
|
.rspec-knapsack-ruby23: &rspec-knapsack-ruby23
|
|
<<: *rspec-knapsack
|
|
<<: *ruby-23
|
|
|
|
.spinach-knapsack-ruby23: &spinach-knapsack-ruby23
|
|
<<: *spinach-knapsack
|
|
<<: *ruby-23
|
|
|
|
rspec 0 20 ruby23: *rspec-knapsack-ruby23
|
|
rspec 1 20 ruby23: *rspec-knapsack-ruby23
|
|
rspec 2 20 ruby23: *rspec-knapsack-ruby23
|
|
rspec 3 20 ruby23: *rspec-knapsack-ruby23
|
|
rspec 4 20 ruby23: *rspec-knapsack-ruby23
|
|
rspec 5 20 ruby23: *rspec-knapsack-ruby23
|
|
rspec 6 20 ruby23: *rspec-knapsack-ruby23
|
|
rspec 7 20 ruby23: *rspec-knapsack-ruby23
|
|
rspec 8 20 ruby23: *rspec-knapsack-ruby23
|
|
rspec 9 20 ruby23: *rspec-knapsack-ruby23
|
|
rspec 10 20 ruby23: *rspec-knapsack-ruby23
|
|
rspec 11 20 ruby23: *rspec-knapsack-ruby23
|
|
rspec 12 20 ruby23: *rspec-knapsack-ruby23
|
|
rspec 13 20 ruby23: *rspec-knapsack-ruby23
|
|
rspec 14 20 ruby23: *rspec-knapsack-ruby23
|
|
rspec 15 20 ruby23: *rspec-knapsack-ruby23
|
|
rspec 16 20 ruby23: *rspec-knapsack-ruby23
|
|
rspec 17 20 ruby23: *rspec-knapsack-ruby23
|
|
rspec 18 20 ruby23: *rspec-knapsack-ruby23
|
|
rspec 19 20 ruby23: *rspec-knapsack-ruby23
|
|
|
|
spinach 0 10 ruby23: *spinach-knapsack-ruby23
|
|
spinach 1 10 ruby23: *spinach-knapsack-ruby23
|
|
spinach 2 10 ruby23: *spinach-knapsack-ruby23
|
|
spinach 3 10 ruby23: *spinach-knapsack-ruby23
|
|
spinach 4 10 ruby23: *spinach-knapsack-ruby23
|
|
spinach 5 10 ruby23: *spinach-knapsack-ruby23
|
|
spinach 6 10 ruby23: *spinach-knapsack-ruby23
|
|
spinach 7 10 ruby23: *spinach-knapsack-ruby23
|
|
spinach 8 10 ruby23: *spinach-knapsack-ruby23
|
|
spinach 9 10 ruby23: *spinach-knapsack-ruby23
|
|
|
|
# Other generic tests
|
|
|
|
.exec: &exec
|
|
stage: test
|
|
script:
|
|
- bundle exec $CI_BUILD_NAME
|
|
|
|
teaspoon: *exec
|
|
rubocop: *exec
|
|
rake scss_lint: *exec
|
|
rake brakeman: *exec
|
|
rake flog: *exec
|
|
rake flay: *exec
|
|
rake db:migrate:reset: *exec
|
|
license_finder: *exec
|
|
rake downtime_check: *exec
|
|
|
|
bundler:audit:
|
|
stage: test
|
|
only:
|
|
- master
|
|
script:
|
|
- "bundle exec bundle-audit check --update --ignore OSVDB-115941"
|
|
|
|
# Notify slack in the end
|
|
|
|
notify:slack:
|
|
stage: post-test
|
|
script:
|
|
- ./scripts/notify_slack.sh "#builds" "Build on \`$CI_BUILD_REF_NAME\` failed! Commit \`$(git log -1 --oneline)\` See <https://gitlab.com/gitlab-org/$(basename "$PWD")/commit/"$CI_BUILD_REF"/builds>"
|
|
when: on_failure
|
|
only:
|
|
- master@gitlab-org/gitlab-ce
|
|
- tags@gitlab-org/gitlab-ce
|
|
- master@gitlab-org/gitlab-ee
|
|
- tags@gitlab-org/gitlab-ee
|