f6f06eae96
This commit adds a job to the pipeline to test if migration on seed data works. Even though the seed data is not perfect, it does give more guarentees that this will succeed in the real world too. seed_fu is used instead of dev:setup to save some time, as they both generate the data in the same way, this should be fine.
312 lines
7.9 KiB
YAML
312 lines
7.9 KiB
YAML
image: "ruby:2.3.1"
|
|
|
|
cache:
|
|
key: "ruby-231"
|
|
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"
|
|
PHANTOMJS_VERSION: "2.1.1"
|
|
|
|
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
|
|
- pages
|
|
|
|
# Prepare and merge knapsack tests
|
|
.knapsack-state: &knapsack-state
|
|
services: []
|
|
variables:
|
|
USE_DB: "false"
|
|
USE_BUNDLE_INSTALL: "false"
|
|
cache:
|
|
key: "knapsack"
|
|
paths:
|
|
- knapsack/
|
|
artifacts:
|
|
expire_in: 31d
|
|
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
|
|
|
|
.use-db: &use-db
|
|
services:
|
|
- mysql:latest
|
|
- redis:alpine
|
|
|
|
.rspec-knapsack: &rspec-knapsack
|
|
stage: test
|
|
<<: *use-db
|
|
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:
|
|
expire_in: 31d
|
|
paths:
|
|
- knapsack/
|
|
- coverage/
|
|
|
|
.spinach-knapsack: &spinach-knapsack
|
|
stage: test
|
|
<<: *use-db
|
|
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:
|
|
expire_in: 31d
|
|
paths:
|
|
- knapsack/
|
|
- coverage/
|
|
|
|
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.1
|
|
.ruby-21: &ruby-21
|
|
image: "ruby:2.1"
|
|
<<: *use-db
|
|
only:
|
|
- master
|
|
cache:
|
|
key: "ruby21"
|
|
paths:
|
|
- vendor/apt
|
|
- vendor/ruby
|
|
|
|
.rspec-knapsack-ruby21: &rspec-knapsack-ruby21
|
|
<<: *rspec-knapsack
|
|
<<: *ruby-21
|
|
|
|
.spinach-knapsack-ruby21: &spinach-knapsack-ruby21
|
|
<<: *spinach-knapsack
|
|
<<: *ruby-21
|
|
|
|
rspec 0 20 ruby21: *rspec-knapsack-ruby21
|
|
rspec 1 20 ruby21: *rspec-knapsack-ruby21
|
|
rspec 2 20 ruby21: *rspec-knapsack-ruby21
|
|
rspec 3 20 ruby21: *rspec-knapsack-ruby21
|
|
rspec 4 20 ruby21: *rspec-knapsack-ruby21
|
|
rspec 5 20 ruby21: *rspec-knapsack-ruby21
|
|
rspec 6 20 ruby21: *rspec-knapsack-ruby21
|
|
rspec 7 20 ruby21: *rspec-knapsack-ruby21
|
|
rspec 8 20 ruby21: *rspec-knapsack-ruby21
|
|
rspec 9 20 ruby21: *rspec-knapsack-ruby21
|
|
rspec 10 20 ruby21: *rspec-knapsack-ruby21
|
|
rspec 11 20 ruby21: *rspec-knapsack-ruby21
|
|
rspec 12 20 ruby21: *rspec-knapsack-ruby21
|
|
rspec 13 20 ruby21: *rspec-knapsack-ruby21
|
|
rspec 14 20 ruby21: *rspec-knapsack-ruby21
|
|
rspec 15 20 ruby21: *rspec-knapsack-ruby21
|
|
rspec 16 20 ruby21: *rspec-knapsack-ruby21
|
|
rspec 17 20 ruby21: *rspec-knapsack-ruby21
|
|
rspec 18 20 ruby21: *rspec-knapsack-ruby21
|
|
rspec 19 20 ruby21: *rspec-knapsack-ruby21
|
|
|
|
spinach 0 10 ruby21: *spinach-knapsack-ruby21
|
|
spinach 1 10 ruby21: *spinach-knapsack-ruby21
|
|
spinach 2 10 ruby21: *spinach-knapsack-ruby21
|
|
spinach 3 10 ruby21: *spinach-knapsack-ruby21
|
|
spinach 4 10 ruby21: *spinach-knapsack-ruby21
|
|
spinach 5 10 ruby21: *spinach-knapsack-ruby21
|
|
spinach 6 10 ruby21: *spinach-knapsack-ruby21
|
|
spinach 7 10 ruby21: *spinach-knapsack-ruby21
|
|
spinach 8 10 ruby21: *spinach-knapsack-ruby21
|
|
spinach 9 10 ruby21: *spinach-knapsack-ruby21
|
|
|
|
# Other generic tests
|
|
|
|
.ruby-static-analysis: &ruby-static-analysis
|
|
variables:
|
|
SIMPLECOV: "false"
|
|
USE_DB: "false"
|
|
USE_BUNDLE_INSTALL: "true"
|
|
|
|
.exec: &exec
|
|
<<: *ruby-static-analysis
|
|
stage: test
|
|
script:
|
|
- bundle exec $CI_BUILD_NAME
|
|
|
|
rubocop: *exec
|
|
rake scss_lint: *exec
|
|
rake brakeman: *exec
|
|
rake flog: *exec
|
|
rake flay: *exec
|
|
license_finder: *exec
|
|
rake downtime_check: *exec
|
|
|
|
rake db:migrate:reset:
|
|
stage: test
|
|
<<: *use-db
|
|
script:
|
|
- rake db:migrate:reset
|
|
|
|
teaspoon:
|
|
stage: test
|
|
<<: *use-db
|
|
script:
|
|
- curl --silent --location https://deb.nodesource.com/setup_6.x | bash -
|
|
- apt-get install --assume-yes nodejs
|
|
- npm install --global istanbul
|
|
- teaspoon
|
|
artifacts:
|
|
name: coverage-javascript
|
|
expire_in: 31d
|
|
paths:
|
|
- coverage-javascript/default/
|
|
|
|
lint-doc:
|
|
stage: test
|
|
image: "phusion/baseimage:latest"
|
|
before_script: []
|
|
script:
|
|
- scripts/lint-doc.sh
|
|
|
|
bundler:audit:
|
|
stage: test
|
|
<<: *ruby-static-analysis
|
|
only:
|
|
- master
|
|
script:
|
|
- "bundle exec bundle-audit check --update --ignore OSVDB-115941"
|
|
|
|
migration paths:
|
|
stage: test
|
|
<<: *use-db
|
|
only:
|
|
- master@gitlab-org/gitlab-ce
|
|
script:
|
|
- git checkout HEAD .
|
|
- git fetch --tags
|
|
- git checkout v8.5.9
|
|
- 'echo test: unix:/var/opt/gitlab/redis/redis.socket > config/resque.yml'
|
|
- bundle install --without postgres production --jobs $(nproc) "${FLAGS[@]}" --retry=3
|
|
- rake db:drop db:create db:schema:load db:seed_fu
|
|
- git checkout $CI_BUILD_REF
|
|
- rake db:migrate
|
|
|
|
coverage:
|
|
stage: post-test
|
|
services: []
|
|
variables:
|
|
USE_DB: "false"
|
|
USE_BUNDLE_INSTALL: "true"
|
|
script:
|
|
- bundle exec scripts/merge-simplecov
|
|
artifacts:
|
|
name: coverage
|
|
expire_in: 31d
|
|
paths:
|
|
- coverage/index.html
|
|
- coverage/assets/
|
|
|
|
# Notify slack in the end
|
|
|
|
notify:slack:
|
|
stage: post-test
|
|
variables:
|
|
USE_DB: "false"
|
|
USE_BUNDLE_INSTALL: "false"
|
|
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
|
|
|
|
pages:
|
|
before_script: []
|
|
stage: pages
|
|
dependencies:
|
|
- coverage
|
|
- teaspoon
|
|
script:
|
|
- mv public/ .public/
|
|
- mkdir public/
|
|
- mv coverage public/coverage-ruby
|
|
- mv coverage-javascript/default/ public/coverage-javascript/
|
|
artifacts:
|
|
paths:
|
|
- public
|
|
only:
|
|
- master
|