ec1029922e
Use GIT_DEPTH for builds ## What does this MR do? Enables experimental feature to use shallow cloning. ## Why was this MR needed? To speed up the builds and reduce the pressure on NFS servers. This should save us between 30s to 1m of the time of each build. ## More information `GIT_DEPTH`: https://gitlab.com/gitlab-org/gitlab-ci-multi-runner/merge_requests/188 ## Problems - Too small value for `GIT_DEPTH` can make it impossible to retry old changes. You will see `unresolved reference` in build log. We should then reconsider changing `GIT_DEPTH` to higher value - Mechanism that rely on `git describe` may not work correctly when `GIT_DEPTH` is set. This will happen, because only part of the git history is present on the build machine ## Requirements GitLab Runner 1.3.0. Currently all our internal runners use beta release or 1.3.0 with support for `GIT_DEPTH`. @pcarranza Please decide when to merge that. We should start monitoring to see an impact on our NFS servers. cc @jacobvosmaer-gitlab @pcarranza See merge request !4730
218 lines
5.9 KiB
YAML
218 lines
5.9 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
|
|
|
|
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
|