5fcbe12730
* master: (83 commits) Fix small typo on new branch button spec Abillity to promote project labels to group labels Update and pin the `jwt` gem to ~> 1.5.6 refactor merge request build service Update index.md Clarify that Auto Deploy requires a public project. cop for gem fetched from a git source Add CHANGELOG entry Remove new branch button for confidential issues Remove flash warning from login page add complete changelog Add project ID index to `project_authorizations` table to optimize queries Fix disable storing of sensitive information when importing a new repo Fix notification when global=disabled, group=watch Ensure rake is called within the correct bundle context Fix 8.16.0 release date. Improve search within group logic Add changelog item about new attributes in group api Update group api doc with full_name and full_path attributes Add tests for nested groups in search service and search helper ...
476 lines
12 KiB
YAML
476 lines
12 KiB
YAML
image: "dev.gitlab.org:5005/gitlab/gitlab-build-images:ruby-2.3.3-git-2.7-phantomjs-2.1-node-7.1"
|
|
|
|
cache:
|
|
key: "ruby-233"
|
|
paths:
|
|
- vendor/ruby
|
|
|
|
variables:
|
|
MYSQL_ALLOW_EMPTY_PASSWORD: "1"
|
|
# retry tests only in CI environment
|
|
RSPEC_RETRY_RETRY_COUNT: "3"
|
|
RAILS_ENV: "test"
|
|
SIMPLECOV: "true"
|
|
SETUP_DB: "true"
|
|
USE_BUNDLE_INSTALL: "true"
|
|
GIT_DEPTH: "20"
|
|
PHANTOMJS_VERSION: "2.1.1"
|
|
GET_SOURCES_ATTEMPTS: "3"
|
|
|
|
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
|
|
- '[ "$SETUP_DB" != "true" ] || bundle exec rake db:drop db:create db:schema:load db:migrate add_limits_mysql'
|
|
|
|
stages:
|
|
- prepare
|
|
- test
|
|
- post-test
|
|
- pages
|
|
|
|
# Predefined scopes
|
|
.dedicated-runner: &dedicated-runner
|
|
tags:
|
|
- gitlab-org
|
|
|
|
.knapsack-state: &knapsack-state
|
|
services: []
|
|
variables:
|
|
SETUP_DB: "false"
|
|
USE_BUNDLE_INSTALL: "false"
|
|
cache:
|
|
key: "knapsack"
|
|
paths:
|
|
- knapsack/
|
|
artifacts:
|
|
expire_in: 31d
|
|
paths:
|
|
- knapsack/
|
|
|
|
.use-db: &use-db
|
|
services:
|
|
- mysql:latest
|
|
- redis:alpine
|
|
|
|
.rspec-knapsack: &rspec-knapsack
|
|
stage: test
|
|
<<: *dedicated-runner
|
|
<<: *use-db
|
|
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/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 "--color --format documentation"
|
|
artifacts:
|
|
expire_in: 31d
|
|
paths:
|
|
- knapsack/
|
|
- coverage/
|
|
|
|
.spinach-knapsack: &spinach-knapsack
|
|
stage: test
|
|
<<: *dedicated-runner
|
|
<<: *use-db
|
|
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/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/
|
|
|
|
# Prepare and merge knapsack tests
|
|
|
|
knapsack:
|
|
<<: *knapsack-state
|
|
<<: *dedicated-runner
|
|
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'
|
|
|
|
setup-test-env:
|
|
<<: *use-db
|
|
<<: *dedicated-runner
|
|
stage: prepare
|
|
script:
|
|
- npm install
|
|
- bundle exec rake gitlab:assets:compile
|
|
- bundle exec ruby -Ispec -e 'require "spec_helper" ; TestEnv.init'
|
|
artifacts:
|
|
expire_in: 7d
|
|
paths:
|
|
- node_modules
|
|
- public/assets
|
|
- tmp/tests
|
|
|
|
update-knapsack:
|
|
<<: *knapsack-state
|
|
<<: *dedicated-runner
|
|
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@gitlab-org/gitlab-ce
|
|
- master@gitlab-org/gitlab-ee
|
|
- master@gitlab/gitlabhq
|
|
- master@gitlab/gitlab-ee
|
|
|
|
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: "dev.gitlab.org:5005/gitlab/gitlab-build-images:ruby-2.1-git-2.7-phantomjs-2.1"
|
|
<<: *use-db
|
|
only:
|
|
- master@gitlab-org/gitlab-ce
|
|
- master@gitlab-org/gitlab-ee
|
|
- master@gitlab/gitlabhq
|
|
- master@gitlab/gitlab-ee
|
|
cache:
|
|
key: "ruby21"
|
|
paths:
|
|
- vendor/ruby
|
|
|
|
.rspec-knapsack-ruby21: &rspec-knapsack-ruby21
|
|
<<: *rspec-knapsack
|
|
<<: *dedicated-runner
|
|
<<: *ruby-21
|
|
|
|
.spinach-knapsack-ruby21: &spinach-knapsack-ruby21
|
|
<<: *spinach-knapsack
|
|
<<: *dedicated-runner
|
|
<<: *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"
|
|
SETUP_DB: "false"
|
|
USE_BUNDLE_INSTALL: "true"
|
|
|
|
.exec: &exec
|
|
<<: *ruby-static-analysis
|
|
<<: *dedicated-runner
|
|
stage: test
|
|
script:
|
|
- bundle exec $CI_BUILD_NAME
|
|
|
|
rubocop:
|
|
<<: *ruby-static-analysis
|
|
<<: *dedicated-runner
|
|
stage: test
|
|
script:
|
|
- bundle exec "rubocop --require rubocop-rspec"
|
|
|
|
rake haml_lint: *exec
|
|
rake scss_lint: *exec
|
|
rake brakeman: *exec
|
|
rake flay: *exec
|
|
license_finder: *exec
|
|
rake downtime_check: *exec
|
|
rake ee_compat_check:
|
|
<<: *exec
|
|
only:
|
|
- branches@gitlab-org/gitlab-ce
|
|
except:
|
|
- master
|
|
- tags
|
|
- /^[\d-]+-stable(-ee)?$/
|
|
allow_failure: yes
|
|
cache:
|
|
key: "ruby233-ee_compat_check_repo"
|
|
paths:
|
|
- ee_compat_check/repo/
|
|
- vendor/ruby
|
|
artifacts:
|
|
name: "${CI_BUILD_NAME}_${CI_BUILD_REF_NAME}_${CI_BUILD_REF}"
|
|
when: on_failure
|
|
expire_in: 10d
|
|
paths:
|
|
- ee_compat_check/patches/*.patch
|
|
|
|
rake db:migrate:reset:
|
|
stage: test
|
|
<<: *use-db
|
|
<<: *dedicated-runner
|
|
script:
|
|
- bundle exec rake db:migrate:reset
|
|
|
|
rake db:seed_fu:
|
|
stage: test
|
|
<<: *use-db
|
|
<<: *dedicated-runner
|
|
variables:
|
|
SIZE: "1"
|
|
SETUP_DB: "false"
|
|
RAILS_ENV: "development"
|
|
script:
|
|
- git clone https://gitlab.com/gitlab-org/gitlab-test.git
|
|
/home/git/repositories/gitlab-org/gitlab-test.git
|
|
- bundle exec rake db:setup db:seed_fu
|
|
artifacts:
|
|
when: on_failure
|
|
expire_in: 1d
|
|
paths:
|
|
- log/development.log
|
|
|
|
karma:
|
|
cache:
|
|
paths:
|
|
- vendor/ruby
|
|
- node_modules
|
|
stage: test
|
|
<<: *use-db
|
|
<<: *dedicated-runner
|
|
script:
|
|
- npm link istanbul
|
|
- bundle exec rake karma
|
|
artifacts:
|
|
name: coverage-javascript
|
|
expire_in: 31d
|
|
paths:
|
|
- coverage-javascript/default/
|
|
|
|
lint-doc:
|
|
stage: test
|
|
<<: *dedicated-runner
|
|
image: "phusion/baseimage:latest"
|
|
before_script: []
|
|
script:
|
|
- scripts/lint-doc.sh
|
|
|
|
bundler:check:
|
|
stage: test
|
|
<<: *dedicated-runner
|
|
<<: *ruby-static-analysis
|
|
script:
|
|
- bundle check
|
|
|
|
bundler:audit:
|
|
stage: test
|
|
<<: *ruby-static-analysis
|
|
<<: *dedicated-runner
|
|
only:
|
|
- master@gitlab-org/gitlab-ce
|
|
- master@gitlab-org/gitlab-ee
|
|
- master@gitlab/gitlabhq
|
|
- master@gitlab/gitlab-ee
|
|
script:
|
|
- "bundle exec bundle-audit check --update --ignore OSVDB-115941"
|
|
|
|
migration paths:
|
|
stage: test
|
|
<<: *use-db
|
|
<<: *dedicated-runner
|
|
variables:
|
|
SETUP_DB: "false"
|
|
only:
|
|
- master@gitlab-org/gitlab-ce
|
|
- master@gitlab-org/gitlab-ee
|
|
- master@gitlab/gitlabhq
|
|
- master@gitlab/gitlab-ee
|
|
script:
|
|
- git fetch origin v8.5.9
|
|
- git checkout -f FETCH_HEAD
|
|
- cp config/resque.yml.example config/resque.yml
|
|
- sed -i 's/localhost/redis/g' config/resque.yml
|
|
- bundle install --without postgres production --jobs $(nproc) $FLAGS --retry=3
|
|
- bundle exec rake db:drop db:create db:schema:load db:seed_fu
|
|
- git checkout $CI_BUILD_REF
|
|
- source scripts/prepare_build.sh
|
|
- bundle exec rake db:migrate
|
|
|
|
coverage:
|
|
stage: post-test
|
|
services: []
|
|
<<: *dedicated-runner
|
|
variables:
|
|
SETUP_DB: "false"
|
|
USE_BUNDLE_INSTALL: "true"
|
|
script:
|
|
- bundle exec scripts/merge-simplecov
|
|
artifacts:
|
|
name: coverage
|
|
expire_in: 31d
|
|
paths:
|
|
- coverage/index.html
|
|
- coverage/assets/
|
|
|
|
lint:javascript:
|
|
<<: *dedicated-runner
|
|
cache:
|
|
paths:
|
|
- node_modules/
|
|
stage: test
|
|
image: "node:7.1"
|
|
before_script:
|
|
- npm install
|
|
script:
|
|
- npm --silent run eslint
|
|
|
|
lint:javascript:report:
|
|
<<: *dedicated-runner
|
|
cache:
|
|
paths:
|
|
- node_modules/
|
|
stage: post-test
|
|
image: "node:7.1"
|
|
before_script:
|
|
- npm install
|
|
script:
|
|
- find app/ spec/ -name '*.js' -or -name '*.js.es6' -exec sed --in-place 's|/\* eslint-disable .*\*/||' {} \; # run report over all files
|
|
- npm --silent run eslint-report || true # ignore exit code
|
|
artifacts:
|
|
name: eslint-report
|
|
expire_in: 31d
|
|
paths:
|
|
- eslint-report.html
|
|
|
|
# Trigger docs build
|
|
# https://gitlab.com/gitlab-com/doc-gitlab-com/blob/master/README.md#deployment-process
|
|
trigger_docs:
|
|
stage: post-test
|
|
image: "alpine"
|
|
<<: *dedicated-runner
|
|
before_script:
|
|
- apk update && apk add curl
|
|
variables:
|
|
GIT_STRATEGY: none
|
|
cache: {}
|
|
artifacts: {}
|
|
script:
|
|
- "curl -X POST -F token=${DOCS_TRIGGER_TOKEN} -F ref=master -F variables[PROJECT]=ce https://gitlab.com/api/v3/projects/1794617/trigger/builds"
|
|
only:
|
|
- master@gitlab-org/gitlab-ce
|
|
|
|
# Notify slack in the end
|
|
|
|
notify:slack:
|
|
stage: post-test
|
|
<<: *dedicated-runner
|
|
variables:
|
|
SETUP_DB: "false"
|
|
USE_BUNDLE_INSTALL: "false"
|
|
script:
|
|
- ./scripts/notify_slack.sh "#development" "Build on \`$CI_BUILD_REF_NAME\` failed! Commit \`$(git log -1 --oneline)\` See <https://gitlab.com/gitlab-org/$(basename "$PWD")/commit/"$CI_BUILD_REF"/pipelines>"
|
|
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
|
|
<<: *dedicated-runner
|
|
dependencies:
|
|
- coverage
|
|
- karma
|
|
- lint:javascript:report
|
|
script:
|
|
- mv public/ .public/
|
|
- mkdir public/
|
|
- mv coverage public/coverage-ruby
|
|
- mv coverage-javascript/default/ public/coverage-javascript/
|
|
- mv eslint-report.html public/
|
|
artifacts:
|
|
paths:
|
|
- public
|
|
only:
|
|
- master@gitlab-org/gitlab-ce
|
|
|
|
# Insurance in case a gem needed by one of our releases gets yanked from
|
|
# rubygems.org in the future.
|
|
cache gems:
|
|
<<: *dedicated-runner
|
|
only:
|
|
- tags
|
|
variables:
|
|
SETUP_DB: "false"
|
|
script:
|
|
- bundle package --all --all-platforms
|
|
artifacts:
|
|
paths:
|
|
- vendor/cache
|
|
only:
|
|
- master@gitlab-org/gitlab-ce
|