4f3a2347be
The problem is this: when each phase starts, it checks if all jobs in earlier phases are complete. package-and-qa is slow. As build is the first phase, if you trigger package-and-qa before the prepare phase is finished, the entire test phase will be blocked until package-and-qa completes, which isn't what we want. But equally, if build came _after_ test, then package-and-qa couldn't be started until the tests were finished. Putting it in the same stage as the tests means we can have our cake and eat it.
922 lines
26 KiB
YAML
922 lines
26 KiB
YAML
image: "dev.gitlab.org:5005/gitlab/gitlab-build-images:ruby-2.4.4-golang-1.9-git-2.18-chrome-67.0-node-8.x-yarn-1.2-postgresql-9.6-graphicsmagick-1.3.29"
|
|
|
|
.dedicated-runner: &dedicated-runner
|
|
retry: 1
|
|
tags:
|
|
- gitlab-org
|
|
|
|
.default-cache: &default-cache
|
|
key: "ruby-2.4.4-debian-stretch-with-yarn"
|
|
paths:
|
|
- vendor/ruby
|
|
- .yarn-cache/
|
|
- vendor/gitaly-ruby
|
|
|
|
.push-cache: &push-cache
|
|
cache:
|
|
<<: *default-cache
|
|
policy: push
|
|
|
|
.pull-cache: &pull-cache
|
|
cache:
|
|
<<: *default-cache
|
|
policy: pull
|
|
|
|
variables:
|
|
MYSQL_ALLOW_EMPTY_PASSWORD: "1"
|
|
RAILS_ENV: "test"
|
|
NODE_ENV: "test"
|
|
SIMPLECOV: "true"
|
|
GIT_DEPTH: "20"
|
|
GIT_SUBMODULE_STRATEGY: "none"
|
|
GET_SOURCES_ATTEMPTS: "3"
|
|
KNAPSACK_RSPEC_SUITE_REPORT_PATH: knapsack/${CI_PROJECT_NAME}/rspec_report-master.json
|
|
FLAKY_RSPEC_SUITE_REPORT_PATH: rspec_flaky/report-suite.json
|
|
|
|
before_script:
|
|
- bundle --version
|
|
- date
|
|
- source scripts/utils.sh
|
|
- date
|
|
- source scripts/prepare_build.sh
|
|
- date
|
|
|
|
after_script:
|
|
- date
|
|
|
|
stages:
|
|
- build
|
|
- prepare
|
|
- test
|
|
- post-test
|
|
- pages
|
|
- post-cleanup
|
|
|
|
# Predefined scopes
|
|
.tests-metadata-state: &tests-metadata-state
|
|
<<: *dedicated-runner
|
|
variables:
|
|
TESTS_METADATA_S3_BUCKET: "gitlab-ce-cache"
|
|
before_script:
|
|
- source scripts/utils.sh
|
|
artifacts:
|
|
expire_in: 31d
|
|
paths:
|
|
- knapsack/
|
|
- rspec_flaky/
|
|
|
|
.use-pg: &use-pg
|
|
services:
|
|
# As of Jan 2018, we don't have a strong reason to upgrade to 9.6 for CI yet,
|
|
# so using the least common denominator ensures backwards compatibility
|
|
# (as many users are still using 9.2).
|
|
- postgres:9.2
|
|
- redis:alpine
|
|
|
|
.use-mysql: &use-mysql
|
|
services:
|
|
- mysql:5.7
|
|
- redis:alpine
|
|
|
|
.rails5-variables: &rails5-variables
|
|
script:
|
|
- export RAILS5=${RAILS5}
|
|
- export BUNDLE_GEMFILE=${BUNDLE_GEMFILE}
|
|
|
|
.rails5: &rails5
|
|
allow_failure: true
|
|
only:
|
|
variables:
|
|
- $CI_COMMIT_REF_NAME =~ /rails5/
|
|
- $RAILS5_ENABLED
|
|
variables:
|
|
BUNDLE_GEMFILE: "Gemfile.rails5"
|
|
RAILS5: "true"
|
|
|
|
# Skip all jobs except the ones that begin with 'docs/'.
|
|
# Used for commits including ONLY documentation changes.
|
|
# https://docs.gitlab.com/ce/development/writing_documentation.html#testing
|
|
.except-docs: &except-docs
|
|
except:
|
|
- /(^docs[\/-].*|.*-docs$)/
|
|
|
|
.except-qa: &except-qa
|
|
except:
|
|
- /(^qa[\/-].*|.*-qa$)/
|
|
|
|
.except-docs-and-qa: &except-docs-and-qa
|
|
except:
|
|
- /(^docs[\/-].*|.*-docs$)/
|
|
- /(^qa[\/-].*|.*-qa$)/
|
|
|
|
# Jobs that only need to pull cache
|
|
.dedicated-no-docs-pull-cache-job: &dedicated-no-docs-pull-cache-job
|
|
<<: *dedicated-runner
|
|
<<: *except-docs
|
|
<<: *pull-cache
|
|
dependencies:
|
|
- setup-test-env
|
|
stage: test
|
|
|
|
# Jobs that do not need a DB
|
|
.dedicated-no-docs-no-db-pull-cache-job: &dedicated-no-docs-no-db-pull-cache-job
|
|
<<: *dedicated-no-docs-pull-cache-job
|
|
variables:
|
|
SETUP_DB: "false"
|
|
|
|
.dedicated-no-docs-and-no-qa-pull-cache-job: &dedicated-no-docs-and-no-qa-pull-cache-job
|
|
<<: *dedicated-no-docs-pull-cache-job
|
|
<<: *except-docs-and-qa
|
|
|
|
.single-script-job: &single-script-job
|
|
image: ruby:2.4-alpine
|
|
before_script: []
|
|
stage: test
|
|
cache: {}
|
|
dependencies: []
|
|
variables: &single-script-job-variables
|
|
GIT_STRATEGY: none
|
|
before_script:
|
|
# We need to download the script rather than clone the repo since the
|
|
# package-and-qa job will not be able to run when the branch gets
|
|
# deleted (when merging the MR).
|
|
- export SCRIPT_NAME="${SCRIPT_NAME:-$CI_JOB_NAME}"
|
|
- apk add --update openssl
|
|
- wget $CI_PROJECT_URL/raw/$CI_COMMIT_SHA/scripts/$SCRIPT_NAME
|
|
- chmod 755 $SCRIPT_NAME
|
|
|
|
.rake-exec: &rake-exec
|
|
<<: *dedicated-no-docs-no-db-pull-cache-job
|
|
script:
|
|
- bundle exec rake $CI_JOB_NAME
|
|
|
|
.rspec-metadata: &rspec-metadata
|
|
<<: *dedicated-runner
|
|
<<: *except-docs-and-qa
|
|
<<: *pull-cache
|
|
<<: *rails5-variables
|
|
stage: test
|
|
script:
|
|
- JOB_NAME=( $CI_JOB_NAME )
|
|
- export CI_NODE_INDEX=${JOB_NAME[-2]}
|
|
- export CI_NODE_TOTAL=${JOB_NAME[-1]}
|
|
- export KNAPSACK_REPORT_PATH=knapsack/${CI_PROJECT_NAME}/${JOB_NAME[0]}_node_${CI_NODE_INDEX}_${CI_NODE_TOTAL}_report.json
|
|
- export KNAPSACK_GENERATE_REPORT=true
|
|
- export SUITE_FLAKY_RSPEC_REPORT_PATH=${FLAKY_RSPEC_SUITE_REPORT_PATH}
|
|
- export FLAKY_RSPEC_REPORT_PATH=rspec_flaky/all_${JOB_NAME[0]}_${CI_NODE_INDEX}_${CI_NODE_TOTAL}_report.json
|
|
- export NEW_FLAKY_RSPEC_REPORT_PATH=rspec_flaky/new_${JOB_NAME[0]}_${CI_NODE_INDEX}_${CI_NODE_TOTAL}_report.json
|
|
- export FLAKY_RSPEC_GENERATE_REPORT=true
|
|
- export CACHE_CLASSES=true
|
|
- cp ${KNAPSACK_RSPEC_SUITE_REPORT_PATH} ${KNAPSACK_REPORT_PATH}
|
|
- '[[ -f $FLAKY_RSPEC_REPORT_PATH ]] || echo "{}" > ${FLAKY_RSPEC_REPORT_PATH}'
|
|
- '[[ -f $NEW_FLAKY_RSPEC_REPORT_PATH ]] || echo "{}" > ${NEW_FLAKY_RSPEC_REPORT_PATH}'
|
|
- scripts/gitaly-test-spawn
|
|
- knapsack rspec "--color --format documentation"
|
|
artifacts:
|
|
expire_in: 31d
|
|
when: always
|
|
paths:
|
|
- coverage/
|
|
- knapsack/
|
|
- rspec_flaky/
|
|
- tmp/capybara/
|
|
|
|
.rspec-metadata-pg: &rspec-metadata-pg
|
|
<<: *rspec-metadata
|
|
<<: *use-pg
|
|
|
|
.rspec-metadata-pg-rails5: &rspec-metadata-pg-rails5
|
|
<<: *rspec-metadata-pg
|
|
<<: *rails5
|
|
|
|
.rspec-metadata-mysql: &rspec-metadata-mysql
|
|
<<: *rspec-metadata
|
|
<<: *use-mysql
|
|
|
|
.rspec-metadata-mysql-rails5: &rspec-metadata-mysql-rails5
|
|
<<: *rspec-metadata-mysql
|
|
<<: *rails5
|
|
|
|
.only-canonical-masters: &only-canonical-masters
|
|
only:
|
|
- master@gitlab-org/gitlab-ce
|
|
- master@gitlab-org/gitlab-ee
|
|
- master@gitlab/gitlabhq
|
|
- master@gitlab/gitlab-ee
|
|
|
|
.gitlab-setup: &gitlab-setup
|
|
<<: *dedicated-no-docs-and-no-qa-pull-cache-job
|
|
<<: *use-pg
|
|
variables:
|
|
SETUP_DB: "false"
|
|
script:
|
|
# Manually clone gitlab-test and only seed this project in
|
|
# db/fixtures/development/04_project.rb thanks to SIZE=1 below
|
|
- git clone https://gitlab.com/gitlab-org/gitlab-test.git
|
|
/home/git/repositories/gitlab-org/gitlab-test.git
|
|
- scripts/gitaly-test-spawn
|
|
- force=yes SIZE=1 FIXTURE_PATH="db/fixtures/development" bundle exec rake gitlab:setup
|
|
artifacts:
|
|
when: on_failure
|
|
expire_in: 1d
|
|
paths:
|
|
- log/development.log
|
|
|
|
# DB migration, rollback, and seed jobs
|
|
.db-migrate-reset: &db-migrate-reset
|
|
<<: *dedicated-no-docs-and-no-qa-pull-cache-job
|
|
script:
|
|
- bundle exec rake db:migrate:reset
|
|
|
|
.migration-paths: &migration-paths
|
|
<<: *dedicated-no-docs-and-no-qa-pull-cache-job
|
|
variables:
|
|
SETUP_DB: "false"
|
|
script:
|
|
- git fetch https://gitlab.com/gitlab-org/gitlab-ce.git v9.3.0
|
|
- git checkout -f FETCH_HEAD
|
|
- bundle install $BUNDLE_INSTALL_FLAGS
|
|
- date
|
|
- cp config/gitlab.yml.example config/gitlab.yml
|
|
- bundle exec rake db:drop db:create db:schema:load db:seed_fu
|
|
- date
|
|
- git checkout -f $CI_COMMIT_SHA
|
|
- bundle install $BUNDLE_INSTALL_FLAGS
|
|
- date
|
|
- . scripts/prepare_build.sh
|
|
- date
|
|
- bundle exec rake db:migrate
|
|
|
|
##
|
|
# Trigger a package build in omnibus-gitlab repository
|
|
#
|
|
package-and-qa:
|
|
<<: *single-script-job
|
|
variables:
|
|
<<: *single-script-job-variables
|
|
SCRIPT_NAME: trigger-build
|
|
retry: 0
|
|
script:
|
|
- ./$SCRIPT_NAME omnibus
|
|
when: manual
|
|
only:
|
|
- //@gitlab-org/gitlab-ce
|
|
- //@gitlab-org/gitlab-ee
|
|
|
|
# Review docs base
|
|
.review-docs: &review-docs
|
|
<<: *dedicated-runner
|
|
<<: *single-script-job
|
|
variables:
|
|
<<: *single-script-job-variables
|
|
SCRIPT_NAME: trigger-build-docs
|
|
environment:
|
|
name: review-docs/$CI_COMMIT_REF_SLUG
|
|
# DOCS_REVIEW_APPS_DOMAIN and DOCS_GITLAB_REPO_SUFFIX are secret variables
|
|
# Discussion: https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/14236/diffs#note_40140693
|
|
url: http://$CI_ENVIRONMENT_SLUG.$DOCS_REVIEW_APPS_DOMAIN/$DOCS_GITLAB_REPO_SUFFIX
|
|
on_stop: review-docs-cleanup
|
|
|
|
# Trigger a manual docs build in gitlab-docs only on non docs-only branches.
|
|
# Useful to preview the docs changes live.
|
|
review-docs-deploy-manual:
|
|
<<: *review-docs
|
|
stage: build
|
|
script:
|
|
- gem install gitlab --no-ri --no-rdoc
|
|
- ./$SCRIPT_NAME deploy
|
|
when: manual
|
|
only:
|
|
- branches@gitlab-org/gitlab-ce
|
|
- branches@gitlab-org/gitlab-ee
|
|
<<: *except-docs-and-qa
|
|
|
|
# Always trigger a docs build in gitlab-docs only on docs-only branches.
|
|
# Useful to preview the docs changes live.
|
|
review-docs-deploy:
|
|
<<: *review-docs
|
|
stage: post-test
|
|
script:
|
|
- gem install gitlab --no-ri --no-rdoc
|
|
- ./$SCRIPT_NAME deploy
|
|
only:
|
|
- /(^docs[\/-].*|.*-docs$)/@gitlab-org/gitlab-ce
|
|
- /(^docs[\/-].*|.*-docs$)/@gitlab-org/gitlab-ee
|
|
<<: *except-qa
|
|
|
|
# Cleanup remote environment of gitlab-docs
|
|
review-docs-cleanup:
|
|
<<: *review-docs
|
|
stage: post-cleanup
|
|
environment:
|
|
name: review-docs/$CI_COMMIT_REF_SLUG
|
|
action: stop
|
|
when: manual
|
|
script:
|
|
- gem install gitlab --no-ri --no-rdoc
|
|
- ./$SCRIPT_NAME cleanup
|
|
|
|
##
|
|
# Trigger a docker image build in CNG (Cloud Native GitLab) repository
|
|
#
|
|
cloud-native-image:
|
|
image: ruby:2.4-alpine
|
|
before_script: []
|
|
stage: build
|
|
allow_failure: true
|
|
variables:
|
|
GIT_DEPTH: "1"
|
|
cache: {}
|
|
script:
|
|
- gem install gitlab --no-ri --no-rdoc
|
|
- BUILD_TRIGGER_TOKEN=$CI_JOB_TOKEN scripts/trigger-build cng
|
|
only:
|
|
- tags@gitlab-org/gitlab-ce
|
|
- tags@gitlab-org/gitlab-ee
|
|
|
|
# Retrieve knapsack and rspec_flaky reports
|
|
retrieve-tests-metadata:
|
|
<<: *tests-metadata-state
|
|
<<: *except-docs-and-qa
|
|
stage: prepare
|
|
cache:
|
|
key: tests_metadata
|
|
policy: pull
|
|
script:
|
|
- mkdir -p knapsack/${CI_PROJECT_NAME}/
|
|
- wget -O $KNAPSACK_RSPEC_SUITE_REPORT_PATH http://${TESTS_METADATA_S3_BUCKET}.s3.amazonaws.com/$KNAPSACK_RSPEC_SUITE_REPORT_PATH || rm $KNAPSACK_RSPEC_SUITE_REPORT_PATH
|
|
- '[[ -f $KNAPSACK_RSPEC_SUITE_REPORT_PATH ]] || echo "{}" > ${KNAPSACK_RSPEC_SUITE_REPORT_PATH}'
|
|
- mkdir -p rspec_flaky/
|
|
- wget -O $FLAKY_RSPEC_SUITE_REPORT_PATH http://${TESTS_METADATA_S3_BUCKET}.s3.amazonaws.com/$FLAKY_RSPEC_SUITE_REPORT_PATH || rm $FLAKY_RSPEC_SUITE_REPORT_PATH
|
|
- '[[ -f $FLAKY_RSPEC_SUITE_REPORT_PATH ]] || echo "{}" > ${FLAKY_RSPEC_SUITE_REPORT_PATH}'
|
|
|
|
update-tests-metadata:
|
|
<<: *tests-metadata-state
|
|
<<: *only-canonical-masters
|
|
stage: post-test
|
|
cache:
|
|
key: tests_metadata
|
|
paths:
|
|
- knapsack/
|
|
- rspec_flaky/
|
|
policy: push
|
|
script:
|
|
- retry gem install fog-aws mime-types activesupport --no-ri --no-rdoc
|
|
- scripts/merge-reports ${KNAPSACK_RSPEC_SUITE_REPORT_PATH} knapsack/${CI_PROJECT_NAME}/rspec-pg_node_*.json
|
|
- scripts/merge-reports ${FLAKY_RSPEC_SUITE_REPORT_PATH} rspec_flaky/all_*_*.json
|
|
- FLAKY_RSPEC_GENERATE_REPORT=1 scripts/prune-old-flaky-specs ${FLAKY_RSPEC_SUITE_REPORT_PATH}
|
|
- '[[ -z ${TESTS_METADATA_S3_BUCKET} ]] || scripts/sync-reports put $TESTS_METADATA_S3_BUCKET $KNAPSACK_RSPEC_SUITE_REPORT_PATH'
|
|
- '[[ -z ${TESTS_METADATA_S3_BUCKET} ]] || scripts/sync-reports put $TESTS_METADATA_S3_BUCKET $FLAKY_RSPEC_SUITE_REPORT_PATH'
|
|
- rm -f knapsack/${CI_PROJECT_NAME}/*_node_*.json
|
|
- rm -f rspec_flaky/all_*.json rspec_flaky/new_*.json
|
|
|
|
flaky-examples-check:
|
|
<<: *dedicated-runner
|
|
image: ruby:2.4-alpine
|
|
services: []
|
|
before_script: []
|
|
variables:
|
|
SETUP_DB: "false"
|
|
USE_BUNDLE_INSTALL: "false"
|
|
NEW_FLAKY_SPECS_REPORT: rspec_flaky/report-new.json
|
|
stage: post-test
|
|
allow_failure: true
|
|
retry: 0
|
|
only:
|
|
- branches
|
|
except:
|
|
- master
|
|
- /(^docs[\/-].*|.*-docs$)/
|
|
- /(^qa[\/-].*|.*-qa$)/
|
|
artifacts:
|
|
expire_in: 30d
|
|
paths:
|
|
- rspec_flaky/
|
|
script:
|
|
- '[[ -f $NEW_FLAKY_SPECS_REPORT ]] || echo "{}" > ${NEW_FLAKY_SPECS_REPORT}'
|
|
- scripts/merge-reports ${NEW_FLAKY_SPECS_REPORT} rspec_flaky/new_*_*.json
|
|
- scripts/detect-new-flaky-examples $NEW_FLAKY_SPECS_REPORT
|
|
|
|
compile-assets:
|
|
<<: *dedicated-runner
|
|
<<: *except-docs
|
|
<<: *use-pg
|
|
stage: prepare
|
|
cache:
|
|
<<: *default-cache
|
|
script:
|
|
- node --version
|
|
- date
|
|
- yarn install --frozen-lockfile --cache-folder .yarn-cache
|
|
- date
|
|
- free -m
|
|
- bundle exec rake gitlab:assets:compile
|
|
variables:
|
|
# we override the max_old_space_size to prevent OOM errors
|
|
NODE_OPTIONS: --max_old_space_size=3584
|
|
artifacts:
|
|
expire_in: 7d
|
|
paths:
|
|
- node_modules
|
|
- public/assets
|
|
|
|
setup-test-env:
|
|
<<: *dedicated-runner
|
|
<<: *except-docs
|
|
<<: *use-pg
|
|
stage: prepare
|
|
cache:
|
|
<<: *default-cache
|
|
script:
|
|
- bundle exec ruby -Ispec -e 'require "spec_helper" ; TestEnv.init'
|
|
- scripts/gitaly-test-build # Do not use 'bundle exec' here
|
|
- BUNDLE_GEMFILE=Gemfile.rails5 bundle install $BUNDLE_INSTALL_FLAGS
|
|
artifacts:
|
|
expire_in: 7d
|
|
paths:
|
|
- tmp/tests
|
|
- config/secrets.yml
|
|
- vendor/gitaly-ruby
|
|
|
|
danger-review:
|
|
image: registry.gitlab.com/gitlab-org/gitlab-build-images:danger
|
|
stage: test
|
|
allow_failure: true
|
|
cache: {}
|
|
dependencies: []
|
|
before_script: []
|
|
only:
|
|
variables:
|
|
- $DANGER_GITLAB_API_TOKEN
|
|
except:
|
|
refs:
|
|
- master
|
|
variables:
|
|
- $CI_COMMIT_REF_NAME =~ /^ce-to-ee-.*/
|
|
- $CI_COMMIT_REF_NAME =~ /.*-stable(-ee)?-prepare-.*/
|
|
script:
|
|
- git version
|
|
- danger --fail-on-errors=true
|
|
|
|
rspec-pg 0 30: *rspec-metadata-pg
|
|
rspec-pg 1 30: *rspec-metadata-pg
|
|
rspec-pg 2 30: *rspec-metadata-pg
|
|
rspec-pg 3 30: *rspec-metadata-pg
|
|
rspec-pg 4 30: *rspec-metadata-pg
|
|
rspec-pg 5 30: *rspec-metadata-pg
|
|
rspec-pg 6 30: *rspec-metadata-pg
|
|
rspec-pg 7 30: *rspec-metadata-pg
|
|
rspec-pg 8 30: *rspec-metadata-pg
|
|
rspec-pg 9 30: *rspec-metadata-pg
|
|
rspec-pg 10 30: *rspec-metadata-pg
|
|
rspec-pg 11 30: *rspec-metadata-pg
|
|
rspec-pg 12 30: *rspec-metadata-pg
|
|
rspec-pg 13 30: *rspec-metadata-pg
|
|
rspec-pg 14 30: *rspec-metadata-pg
|
|
rspec-pg 15 30: *rspec-metadata-pg
|
|
rspec-pg 16 30: *rspec-metadata-pg
|
|
rspec-pg 17 30: *rspec-metadata-pg
|
|
rspec-pg 18 30: *rspec-metadata-pg
|
|
rspec-pg 19 30: *rspec-metadata-pg
|
|
rspec-pg 20 30: *rspec-metadata-pg
|
|
rspec-pg 21 30: *rspec-metadata-pg
|
|
rspec-pg 22 30: *rspec-metadata-pg
|
|
rspec-pg 23 30: *rspec-metadata-pg
|
|
rspec-pg 24 30: *rspec-metadata-pg
|
|
rspec-pg 25 30: *rspec-metadata-pg
|
|
rspec-pg 26 30: *rspec-metadata-pg
|
|
rspec-pg 27 30: *rspec-metadata-pg
|
|
rspec-pg 28 30: *rspec-metadata-pg
|
|
rspec-pg 29 30: *rspec-metadata-pg
|
|
|
|
rspec-mysql 0 30: *rspec-metadata-mysql
|
|
rspec-mysql 1 30: *rspec-metadata-mysql
|
|
rspec-mysql 2 30: *rspec-metadata-mysql
|
|
rspec-mysql 3 30: *rspec-metadata-mysql
|
|
rspec-mysql 4 30: *rspec-metadata-mysql
|
|
rspec-mysql 5 30: *rspec-metadata-mysql
|
|
rspec-mysql 6 30: *rspec-metadata-mysql
|
|
rspec-mysql 7 30: *rspec-metadata-mysql
|
|
rspec-mysql 8 30: *rspec-metadata-mysql
|
|
rspec-mysql 9 30: *rspec-metadata-mysql
|
|
rspec-mysql 10 30: *rspec-metadata-mysql
|
|
rspec-mysql 11 30: *rspec-metadata-mysql
|
|
rspec-mysql 12 30: *rspec-metadata-mysql
|
|
rspec-mysql 13 30: *rspec-metadata-mysql
|
|
rspec-mysql 14 30: *rspec-metadata-mysql
|
|
rspec-mysql 15 30: *rspec-metadata-mysql
|
|
rspec-mysql 16 30: *rspec-metadata-mysql
|
|
rspec-mysql 17 30: *rspec-metadata-mysql
|
|
rspec-mysql 18 30: *rspec-metadata-mysql
|
|
rspec-mysql 19 30: *rspec-metadata-mysql
|
|
rspec-mysql 20 30: *rspec-metadata-mysql
|
|
rspec-mysql 21 30: *rspec-metadata-mysql
|
|
rspec-mysql 22 30: *rspec-metadata-mysql
|
|
rspec-mysql 23 30: *rspec-metadata-mysql
|
|
rspec-mysql 24 30: *rspec-metadata-mysql
|
|
rspec-mysql 25 30: *rspec-metadata-mysql
|
|
rspec-mysql 26 30: *rspec-metadata-mysql
|
|
rspec-mysql 27 30: *rspec-metadata-mysql
|
|
rspec-mysql 28 30: *rspec-metadata-mysql
|
|
rspec-mysql 29 30: *rspec-metadata-mysql
|
|
|
|
rspec-pg-rails5 0 30: *rspec-metadata-pg-rails5
|
|
rspec-pg-rails5 1 30: *rspec-metadata-pg-rails5
|
|
rspec-pg-rails5 2 30: *rspec-metadata-pg-rails5
|
|
rspec-pg-rails5 3 30: *rspec-metadata-pg-rails5
|
|
rspec-pg-rails5 4 30: *rspec-metadata-pg-rails5
|
|
rspec-pg-rails5 5 30: *rspec-metadata-pg-rails5
|
|
rspec-pg-rails5 6 30: *rspec-metadata-pg-rails5
|
|
rspec-pg-rails5 7 30: *rspec-metadata-pg-rails5
|
|
rspec-pg-rails5 8 30: *rspec-metadata-pg-rails5
|
|
rspec-pg-rails5 9 30: *rspec-metadata-pg-rails5
|
|
rspec-pg-rails5 10 30: *rspec-metadata-pg-rails5
|
|
rspec-pg-rails5 11 30: *rspec-metadata-pg-rails5
|
|
rspec-pg-rails5 12 30: *rspec-metadata-pg-rails5
|
|
rspec-pg-rails5 13 30: *rspec-metadata-pg-rails5
|
|
rspec-pg-rails5 14 30: *rspec-metadata-pg-rails5
|
|
rspec-pg-rails5 15 30: *rspec-metadata-pg-rails5
|
|
rspec-pg-rails5 16 30: *rspec-metadata-pg-rails5
|
|
rspec-pg-rails5 17 30: *rspec-metadata-pg-rails5
|
|
rspec-pg-rails5 18 30: *rspec-metadata-pg-rails5
|
|
rspec-pg-rails5 19 30: *rspec-metadata-pg-rails5
|
|
rspec-pg-rails5 20 30: *rspec-metadata-pg-rails5
|
|
rspec-pg-rails5 21 30: *rspec-metadata-pg-rails5
|
|
rspec-pg-rails5 22 30: *rspec-metadata-pg-rails5
|
|
rspec-pg-rails5 23 30: *rspec-metadata-pg-rails5
|
|
rspec-pg-rails5 24 30: *rspec-metadata-pg-rails5
|
|
rspec-pg-rails5 25 30: *rspec-metadata-pg-rails5
|
|
rspec-pg-rails5 26 30: *rspec-metadata-pg-rails5
|
|
rspec-pg-rails5 27 30: *rspec-metadata-pg-rails5
|
|
rspec-pg-rails5 28 30: *rspec-metadata-pg-rails5
|
|
rspec-pg-rails5 29 30: *rspec-metadata-pg-rails5
|
|
|
|
rspec-mysql-rails5 0 30: *rspec-metadata-mysql-rails5
|
|
rspec-mysql-rails5 1 30: *rspec-metadata-mysql-rails5
|
|
rspec-mysql-rails5 2 30: *rspec-metadata-mysql-rails5
|
|
rspec-mysql-rails5 3 30: *rspec-metadata-mysql-rails5
|
|
rspec-mysql-rails5 4 30: *rspec-metadata-mysql-rails5
|
|
rspec-mysql-rails5 5 30: *rspec-metadata-mysql-rails5
|
|
rspec-mysql-rails5 6 30: *rspec-metadata-mysql-rails5
|
|
rspec-mysql-rails5 7 30: *rspec-metadata-mysql-rails5
|
|
rspec-mysql-rails5 8 30: *rspec-metadata-mysql-rails5
|
|
rspec-mysql-rails5 9 30: *rspec-metadata-mysql-rails5
|
|
rspec-mysql-rails5 10 30: *rspec-metadata-mysql-rails5
|
|
rspec-mysql-rails5 11 30: *rspec-metadata-mysql-rails5
|
|
rspec-mysql-rails5 12 30: *rspec-metadata-mysql-rails5
|
|
rspec-mysql-rails5 13 30: *rspec-metadata-mysql-rails5
|
|
rspec-mysql-rails5 14 30: *rspec-metadata-mysql-rails5
|
|
rspec-mysql-rails5 15 30: *rspec-metadata-mysql-rails5
|
|
rspec-mysql-rails5 16 30: *rspec-metadata-mysql-rails5
|
|
rspec-mysql-rails5 17 30: *rspec-metadata-mysql-rails5
|
|
rspec-mysql-rails5 18 30: *rspec-metadata-mysql-rails5
|
|
rspec-mysql-rails5 19 30: *rspec-metadata-mysql-rails5
|
|
rspec-mysql-rails5 20 30: *rspec-metadata-mysql-rails5
|
|
rspec-mysql-rails5 21 30: *rspec-metadata-mysql-rails5
|
|
rspec-mysql-rails5 22 30: *rspec-metadata-mysql-rails5
|
|
rspec-mysql-rails5 23 30: *rspec-metadata-mysql-rails5
|
|
rspec-mysql-rails5 24 30: *rspec-metadata-mysql-rails5
|
|
rspec-mysql-rails5 25 30: *rspec-metadata-mysql-rails5
|
|
rspec-mysql-rails5 26 30: *rspec-metadata-mysql-rails5
|
|
rspec-mysql-rails5 27 30: *rspec-metadata-mysql-rails5
|
|
rspec-mysql-rails5 28 30: *rspec-metadata-mysql-rails5
|
|
rspec-mysql-rails5 29 30: *rspec-metadata-mysql-rails5
|
|
|
|
static-analysis:
|
|
<<: *dedicated-no-docs-no-db-pull-cache-job
|
|
dependencies:
|
|
- compile-assets
|
|
- setup-test-env
|
|
script:
|
|
- scripts/static-analysis
|
|
cache:
|
|
key: "ruby-2.4.4-debian-stretch-with-yarn-and-rubocop"
|
|
paths:
|
|
- vendor/ruby
|
|
- .yarn-cache/
|
|
- tmp/rubocop_cache
|
|
|
|
# Documentation checks:
|
|
# - Check validity of relative links
|
|
# - Make sure cURL examples in API docs use the full switches
|
|
docs lint:
|
|
<<: *dedicated-runner
|
|
<<: *except-qa
|
|
image: "registry.gitlab.com/gitlab-org/gitlab-build-images:nanoc-bootstrap-ruby-2.4-alpine"
|
|
stage: test
|
|
cache: {}
|
|
dependencies: []
|
|
before_script: []
|
|
script:
|
|
- scripts/lint-doc.sh
|
|
- scripts/lint-changelog-yaml
|
|
- mv doc/ /nanoc/content/
|
|
- cd /nanoc
|
|
# Build HTML from Markdown
|
|
- bundle exec nanoc
|
|
# Check the internal links
|
|
- bundle exec nanoc check internal_links
|
|
|
|
downtime_check:
|
|
<<: *rake-exec
|
|
except:
|
|
- master
|
|
- tags
|
|
- /^[\d-]+-stable(-ee)?$/
|
|
- /(^docs[\/-].*|.*-docs$)/
|
|
- /(^qa[\/-].*|.*-qa$)/
|
|
|
|
rails5_gemfile_lock_check:
|
|
<<: *dedicated-no-docs-no-db-pull-cache-job
|
|
<<: *except-docs-and-qa
|
|
script:
|
|
- scripts/rails5-gemfile-lock-check
|
|
|
|
ee_compat_check:
|
|
<<: *rake-exec
|
|
except:
|
|
- master
|
|
- tags
|
|
- /[\d-]+-stable(-ee)?/
|
|
- /^security-/
|
|
- branches@gitlab-org/gitlab-ee
|
|
- branches@gitlab/gitlab-ee
|
|
retry: 0
|
|
artifacts:
|
|
name: "${CI_JOB_NAME}_${CI_COMIT_REF_NAME}_${CI_COMMIT_SHA}"
|
|
when: always
|
|
expire_in: 10d
|
|
paths:
|
|
- ee_compat_check/patches/*.patch
|
|
|
|
db:migrate:reset-pg:
|
|
<<: *db-migrate-reset
|
|
<<: *use-pg
|
|
|
|
db:migrate:reset-mysql:
|
|
<<: *db-migrate-reset
|
|
<<: *use-mysql
|
|
|
|
db:check-schema-pg:
|
|
<<: *db-migrate-reset
|
|
<<: *use-pg
|
|
script:
|
|
- source scripts/schema_changed.sh
|
|
|
|
migration:path-pg:
|
|
<<: *migration-paths
|
|
<<: *use-pg
|
|
|
|
migration:path-mysql:
|
|
<<: *migration-paths
|
|
<<: *use-mysql
|
|
|
|
.db-rollback: &db-rollback
|
|
<<: *dedicated-no-docs-and-no-qa-pull-cache-job
|
|
script:
|
|
- bundle exec rake db:migrate VERSION=20170523121229
|
|
- bundle exec rake db:migrate
|
|
|
|
db:rollback-pg:
|
|
<<: *db-rollback
|
|
<<: *use-pg
|
|
|
|
db:rollback-mysql:
|
|
<<: *db-rollback
|
|
<<: *use-mysql
|
|
|
|
gitlab:setup-pg:
|
|
<<: *gitlab-setup
|
|
<<: *use-pg
|
|
|
|
gitlab:setup-mysql:
|
|
<<: *gitlab-setup
|
|
<<: *use-mysql
|
|
|
|
# Frontend-related jobs
|
|
gitlab:assets:compile:
|
|
<<: *dedicated-no-docs-and-no-qa-pull-cache-job
|
|
dependencies: []
|
|
variables:
|
|
NODE_ENV: "production"
|
|
RAILS_ENV: "production"
|
|
SETUP_DB: "false"
|
|
SKIP_STORAGE_VALIDATION: "true"
|
|
WEBPACK_REPORT: "true"
|
|
NO_COMPRESSION: "true"
|
|
# we override the max_old_space_size to prevent OOM errors
|
|
NODE_OPTIONS: --max_old_space_size=3584
|
|
script:
|
|
- date
|
|
- yarn install --frozen-lockfile --production --cache-folder .yarn-cache
|
|
- date
|
|
- free -m
|
|
- bundle exec rake gitlab:assets:compile
|
|
artifacts:
|
|
name: webpack-report
|
|
expire_in: 31d
|
|
paths:
|
|
- webpack-report/
|
|
|
|
karma:
|
|
<<: *dedicated-no-docs-and-no-qa-pull-cache-job
|
|
<<: *use-pg
|
|
dependencies:
|
|
- compile-assets
|
|
- setup-test-env
|
|
script:
|
|
- export BABEL_ENV=coverage CHROME_LOG_FILE=chrome_debug.log
|
|
- date
|
|
- scripts/gitaly-test-spawn
|
|
- date
|
|
- bundle exec rake karma
|
|
coverage: '/^Statements *: (\d+\.\d+%)/'
|
|
artifacts:
|
|
name: coverage-javascript
|
|
expire_in: 31d
|
|
when: always
|
|
paths:
|
|
- chrome_debug.log
|
|
- coverage-javascript/
|
|
|
|
code_quality:
|
|
<<: *dedicated-no-docs-no-db-pull-cache-job
|
|
image: docker:stable
|
|
allow_failure: true
|
|
# gitlab-org runners set `privileged: false` but we need to have it set to true
|
|
# since we're using Docker in Docker
|
|
tags: []
|
|
before_script: []
|
|
services:
|
|
- docker:stable-dind
|
|
variables:
|
|
SETUP_DB: "false"
|
|
DOCKER_DRIVER: overlay2
|
|
cache: {}
|
|
dependencies: []
|
|
script:
|
|
# Extract "MAJOR.MINOR" from CI_SERVER_VERSION and generate "MAJOR-MINOR-stable" for Security Products
|
|
- export SP_VERSION=$(echo "$CI_SERVER_VERSION" | sed 's/^\([0-9]*\)\.\([0-9]*\).*/\1-\2-stable/')
|
|
- docker run
|
|
--env SOURCE_CODE="$PWD"
|
|
--volume "$PWD":/code
|
|
--volume /var/run/docker.sock:/var/run/docker.sock
|
|
"registry.gitlab.com/gitlab-org/security-products/codequality:$SP_VERSION" /code
|
|
artifacts:
|
|
paths: [gl-code-quality-report.json]
|
|
expire_in: 1 week
|
|
|
|
sast:
|
|
<<: *dedicated-no-docs-no-db-pull-cache-job
|
|
image: docker:stable
|
|
variables:
|
|
SAST_CONFIDENCE_LEVEL: 2
|
|
DOCKER_DRIVER: overlay2
|
|
allow_failure: true
|
|
tags: []
|
|
before_script: []
|
|
cache: {}
|
|
dependencies: []
|
|
services:
|
|
- docker:stable-dind
|
|
script:
|
|
- export SP_VERSION=$(echo "$CI_SERVER_VERSION" | sed 's/^\([0-9]*\)\.\([0-9]*\).*/\1-\2-stable/')
|
|
- docker run
|
|
--env SAST_CONFIDENCE_LEVEL="${SAST_CONFIDENCE_LEVEL:-3}"
|
|
--volume "$PWD:/code"
|
|
--volume /var/run/docker.sock:/var/run/docker.sock
|
|
"registry.gitlab.com/gitlab-org/security-products/sast:$SP_VERSION" /app/bin/run /code
|
|
artifacts:
|
|
paths: [gl-sast-report.json]
|
|
|
|
dependency_scanning:
|
|
<<: *dedicated-no-docs-no-db-pull-cache-job
|
|
image: docker:stable
|
|
variables:
|
|
DOCKER_DRIVER: overlay2
|
|
allow_failure: true
|
|
tags: []
|
|
before_script: []
|
|
cache: {}
|
|
dependencies: []
|
|
services:
|
|
- docker:stable-dind
|
|
script:
|
|
- export SP_VERSION=$(echo "$CI_SERVER_VERSION" | sed 's/^\([0-9]*\)\.\([0-9]*\).*/\1-\2-stable/')
|
|
- docker run
|
|
--env DEP_SCAN_DISABLE_REMOTE_CHECKS="${DEP_SCAN_DISABLE_REMOTE_CHECKS:-false}"
|
|
--volume "$PWD:/code"
|
|
--volume /var/run/docker.sock:/var/run/docker.sock
|
|
"registry.gitlab.com/gitlab-org/security-products/dependency-scanning:$SP_VERSION" /code
|
|
artifacts:
|
|
paths: [gl-dependency-scanning-report.json]
|
|
|
|
qa:internal:
|
|
<<: *dedicated-no-docs-no-db-pull-cache-job
|
|
services: []
|
|
script:
|
|
- cd qa/
|
|
- bundle install
|
|
- bundle exec rspec
|
|
|
|
qa:selectors:
|
|
<<: *dedicated-no-docs-no-db-pull-cache-job
|
|
services: []
|
|
script:
|
|
- cd qa/
|
|
- bundle install
|
|
- bundle exec bin/qa Test::Sanity::Selectors
|
|
|
|
coverage:
|
|
# Don't include dedicated-no-docs-no-db-pull-cache-job here since we need to
|
|
# download artifacts from all the rspec jobs instead of from setup-test-env only
|
|
<<: *dedicated-runner
|
|
<<: *except-docs-and-qa
|
|
<<: *pull-cache
|
|
variables:
|
|
SETUP_DB: "false"
|
|
stage: post-test
|
|
script:
|
|
- bundle exec scripts/merge-simplecov
|
|
coverage: '/LOC \((\d+\.\d+%)\) covered.$/'
|
|
artifacts:
|
|
name: coverage
|
|
expire_in: 31d
|
|
paths:
|
|
- coverage/index.html
|
|
- coverage/assets/
|
|
|
|
lint:javascript:report:
|
|
<<: *dedicated-no-docs-and-no-qa-pull-cache-job
|
|
stage: post-test
|
|
dependencies:
|
|
- compile-assets
|
|
- setup-test-env
|
|
before_script: []
|
|
script:
|
|
- date
|
|
- yarn run eslint-report || true # ignore exit code
|
|
artifacts:
|
|
name: eslint-report
|
|
expire_in: 31d
|
|
paths:
|
|
- eslint-report.html
|
|
|
|
pages:
|
|
<<: *dedicated-no-docs-no-db-pull-cache-job
|
|
before_script: []
|
|
stage: pages
|
|
dependencies:
|
|
- coverage
|
|
- karma
|
|
- gitlab:assets:compile
|
|
- lint:javascript:report
|
|
script:
|
|
- mv public/ .public/
|
|
- mkdir public/
|
|
- mv coverage/ public/coverage-ruby/ || true
|
|
- mv coverage-javascript/ public/coverage-javascript/ || true
|
|
- mv eslint-report.html public/ || true
|
|
- mv webpack-report/ public/webpack-report/ || true
|
|
artifacts:
|
|
paths:
|
|
- public
|
|
only:
|
|
- master@gitlab-org/gitlab-ce
|
|
- master@gitlab-org/gitlab-ee
|
|
|
|
# Insurance in case a gem needed by one of our releases gets yanked from
|
|
# rubygems.org in the future.
|
|
cache gems:
|
|
<<: *dedicated-no-docs-no-db-pull-cache-job
|
|
script:
|
|
- bundle package --all --all-platforms
|
|
artifacts:
|
|
paths:
|
|
- vendor/cache
|
|
only:
|
|
- master@gitlab-org/gitlab-ce
|
|
- master@gitlab-org/gitlab-ee
|
|
- tags
|
|
|
|
gitlab_git_test:
|
|
<<: *dedicated-runner
|
|
<<: *except-docs-and-qa
|
|
variables:
|
|
SETUP_DB: "false"
|
|
before_script: []
|
|
cache: {}
|
|
script:
|
|
- spec/support/prepare-gitlab-git-test-for-commit --check-for-changes
|
|
|
|
no_ee_check:
|
|
<<: *dedicated-runner
|
|
<<: *except-docs-and-qa
|
|
variables:
|
|
SETUP_DB: "false"
|
|
before_script: []
|
|
cache: {}
|
|
script:
|
|
- scripts/no-ee-check
|
|
only:
|
|
- //@gitlab-org/gitlab-ce
|