.editorconfig 0 → 100644
# top-most EditorConfig file
root = true
# Unix-style newlines with a newline ending every file
[*]
end_of_line = lf
trim_trailing_whitespace = true
insert_final_newline = true
[*.{js,json,vue,scss,rb,haml,yml}]
indent_size = 2
[*.{js,json,vue,scss,rb,haml,yml,md}]
indent_style = space
charset = utf-8
...@@ -30,6 +30,7 @@ eslint-report.html ...@@ -30,6 +30,7 @@ eslint-report.html
/app/assets/javascripts/locale/**/app.js /app/assets/javascripts/locale/**/app.js
/backups/* /backups/*
/config/aws.yml /config/aws.yml
/config/cable.yml
/config/database*.yml /config/database*.yml
/config/gitlab.yml /config/gitlab.yml
/config/gitlab_ci.yml /config/gitlab_ci.yml
...@@ -42,6 +43,7 @@ eslint-report.html ...@@ -42,6 +43,7 @@ eslint-report.html
/config/redis.shared_state.yml /config/redis.shared_state.yml
/config/unicorn.rb /config/unicorn.rb
/config/puma.rb /config/puma.rb
/config/puma_actioncable.rb
/config/secrets.yml /config/secrets.yml
/config/sidekiq.yml /config/sidekiq.yml
/config/registry.key /config/registry.key
...@@ -54,7 +56,7 @@ eslint-report.html ...@@ -54,7 +56,7 @@ eslint-report.html
/dump.rdb /dump.rdb
/jsconfig.json /jsconfig.json
/log/*.log* /log/*.log*
/node_modules/ /node_modules
/nohup.out /nohup.out
/public/assets/ /public/assets/
/public/uploads.* /public/uploads.*
... ...
......
...@@ -3,6 +3,7 @@ image: "registry.gitlab.com/gitlab-org/gitlab-build-images:ruby-2.6.5-golang-1.1 ...@@ -3,6 +3,7 @@ image: "registry.gitlab.com/gitlab-org/gitlab-build-images:ruby-2.6.5-golang-1.1
stages: stages:
- sync - sync
- prepare - prepare
- fixtures
- test - test
- post-test - post-test
- review-prepare - review-prepare
...@@ -11,6 +12,29 @@ stages: ...@@ -11,6 +12,29 @@ stages:
- post-qa - post-qa
- pages - pages
# always use `gitlab-org` runners
default:
tags:
- gitlab-org
workflow:
rules:
# If `$FORCE_GITLAB_CI` is set, create a pipeline.
- if: '$FORCE_GITLAB_CI'
# For merge requests, create a pipeline.
- if: '$CI_MERGE_REQUEST_IID'
# For `master` branch, create a pipeline (this includes on schedules, pushes, merges, etc.).
- if: '$CI_COMMIT_BRANCH == "master"'
# For tags, create a pipeline.
- if: '$CI_COMMIT_TAG'
# If `$GITLAB_INTERNAL` isn't set, don't create a pipeline.
- if: '$GITLAB_INTERNAL == null'
when: never
# For stable, auto-deploy, and security branches, create a pipeline.
- if: '$CI_COMMIT_BRANCH =~ /^[\d-]+-stable(-ee)?$/'
- if: '$CI_COMMIT_BRANCH =~ /^\d+-\d+-auto-deploy-\d+$/'
- if: '$CI_COMMIT_BRANCH =~ /^security\//'
variables: variables:
RAILS_ENV: "test" RAILS_ENV: "test"
NODE_ENV: "test" NODE_ENV: "test"
... ...
......
...@@ -8,19 +8,29 @@ ...@@ -8,19 +8,29 @@
# Technical writing team are the default reviewers for all markdown docs # Technical writing team are the default reviewers for all markdown docs
*.md @gl-docsteam *.md @gl-docsteam
/doc/ @gl-docsteam
# Frontend maintainers should see everything in `app/assets/` # Frontend maintainers should see everything in `app/assets/`
app/assets/ @gitlab-org/maintainers/frontend
*.scss @annabeldunstone @gitlab-org/maintainers/frontend *.scss @annabeldunstone @gitlab-org/maintainers/frontend
/scripts/frontend/ @gitlab-org/maintainers/frontend *.js @gitlab-org/maintainers/frontend
/app/assets/ @gitlab-org/maintainers/frontend
/ee/app/assets/ @gitlab-org/maintainers/frontend
/spec/javascripts/ @gitlab-org/maintainers/frontend
/ee/spec/javascripts/ @gitlab-org/maintainers/frontend
/spec/frontend/ @gitlab-org/maintainers/frontend
/ee/spec/frontend/ @gitlab-org/maintainers/frontend
# Database maintainers should review changes in `db/` # Database maintainers should review changes in `db/`
db/ @gitlab-org/maintainers/database /db/ @gitlab-org/maintainers/database
lib/gitlab/background_migration/ @gitlab-org/maintainers/database
lib/gitlab/database/ @gitlab-org/maintainers/database
lib/gitlab/sql/ @gitlab-org/maintainers/database
lib/gitlab/github_import/ @gitlab-org/maintainers/database
/ee/db/ @gitlab-org/maintainers/database /ee/db/ @gitlab-org/maintainers/database
/lib/gitlab/background_migration/ @gitlab-org/maintainers/database
/ee/lib/ee/gitlab/background_migration/ @gitlab-org/maintainers/database
/lib/gitlab/database/ @gitlab-org/maintainers/database
/ee/lib/gitlab/database/ @gitlab-org/maintainers/database
/lib/gitlab/sql/ @gitlab-org/maintainers/database
/lib/gitlab/github_import/ @gitlab-org/maintainers/database
/app/finders/ @gitlab-org/maintainers/database
/ee/app/finders/ @gitlab-org/maintainers/database
# Feature specific owners # Feature specific owners
/ee/lib/gitlab/code_owners/ @reprazent /ee/lib/gitlab/code_owners/ @reprazent
...@@ -38,11 +48,20 @@ lib/gitlab/github_import/ @gitlab-org/maintainers/database ...@@ -38,11 +48,20 @@ lib/gitlab/github_import/ @gitlab-org/maintainers/database
# Engineering Productivity owned files # Engineering Productivity owned files
/.gitlab-ci.yml @gl-quality/eng-prod /.gitlab-ci.yml @gl-quality/eng-prod
/.gitlab/ci/ @gl-quality/eng-prod /.gitlab/ci/ @gl-quality/eng-prod
/.gitlab/ci/docs.gitlab-ci.yml @gl-quality/eng-prod @gl-docsteam
/.gitlab/ci/releases.gitlab-ci.yml @gl-quality/eng-prod @gitlab-org/delivery
/.gitlab/CODEOWNERS @gl-quality/eng-prod /.gitlab/CODEOWNERS @gl-quality/eng-prod
Dangerfile @gl-quality/eng-prod Dangerfile @gl-quality/eng-prod
/danger/ @gl-quality/eng-prod /danger/ @gl-quality/eng-prod
/lib/gitlab/danger/ @gl-quality/eng-prod /lib/gitlab/danger/ @gl-quality/eng-prod
/scripts/ @gl-quality/eng-prod /scripts/ @gl-quality/eng-prod
/scripts/frontend/ @gl-quality/eng-prod @gitlab-org/maintainers/frontend
.editorconfig @gl-quality/eng-prod
# Delivery owner files # Telemetry owner files
/.gitlab/ci/releases.gitlab-ci.yml @gitlab-org/delivery /ee/lib/gitlab/usage_data_counters/ @gitlab-org/growth/telemetry
/ee/lib/ee/gitlab/usage_data.rb @gitlab-org/growth/telemetry
/lib/gitlab/grafana_embed_usage_data.rb @gitlab-org/growth/telemetry
/lib/gitlab/usage_data.rb @gitlab-org/growth/telemetry
/lib/gitlab/cycle_analytics/usage_data.rb @gitlab-org/growth/telemetry
/lib/gitlab/usage_data_counters/ @gitlab-org/growth/telemetry
.run-dev-fixtures: .run-dev-fixtures:
extends: extends:
- .default-tags
- .default-retry - .default-retry
- .default-cache - .default-cache
- .default-before_script - .default-before_script
- .use-pg9 - .use-pg9
stage: test stage: test
needs: ["setup-test-env"] needs: ["setup-test-env"]
dependencies: ["setup-test-env"]
variables: variables:
FIXTURE_PATH: "db/fixtures/development" FIXTURE_PATH: "db/fixtures/development"
SEED_CYCLE_ANALYTICS: "true" SEED_CYCLE_ANALYTICS: "true"
... ...
......
.review-docs: .review-docs:
extends: extends:
- .default-tags
- .default-retry - .default-retry
- .docs:rules:review-docs - .docs:rules:review-docs
allow_failure: true allow_failure: true
...@@ -16,6 +15,7 @@ ...@@ -16,6 +15,7 @@
name: review-docs/$DOCS_GITLAB_REPO_SUFFIX-$CI_MERGE_REQUEST_IID name: review-docs/$DOCS_GITLAB_REPO_SUFFIX-$CI_MERGE_REQUEST_IID
# DOCS_REVIEW_APPS_DOMAIN and DOCS_GITLAB_REPO_SUFFIX are CI variables # DOCS_REVIEW_APPS_DOMAIN and DOCS_GITLAB_REPO_SUFFIX are CI variables
# Discussion: https://gitlab.com/gitlab-org/gitlab-foss/merge_requests/14236/diffs#note_40140693 # Discussion: https://gitlab.com/gitlab-org/gitlab-foss/merge_requests/14236/diffs#note_40140693
auto_stop_in: 2 weeks
url: http://docs-preview-$DOCS_GITLAB_REPO_SUFFIX-$CI_MERGE_REQUEST_IID.$DOCS_REVIEW_APPS_DOMAIN/$DOCS_GITLAB_REPO_SUFFIX url: http://docs-preview-$DOCS_GITLAB_REPO_SUFFIX-$CI_MERGE_REQUEST_IID.$DOCS_REVIEW_APPS_DOMAIN/$DOCS_GITLAB_REPO_SUFFIX
on_stop: review-docs-cleanup on_stop: review-docs-cleanup
before_script: before_script:
...@@ -41,18 +41,17 @@ review-docs-cleanup: ...@@ -41,18 +41,17 @@ review-docs-cleanup:
docs lint: docs lint:
extends: extends:
- .default-tags
- .default-retry - .default-retry
- .docs:rules:docs-lint - .docs:rules:docs-lint
image: "registry.gitlab.com/gitlab-org/gitlab-docs:docs-lint" image: "registry.gitlab.com/gitlab-org/gitlab-docs:lint"
stage: test stage: test
dependencies: [] needs: []
script: script:
- scripts/lint-doc.sh - scripts/lint-doc.sh
# Lint Markdown
- markdownlint --config .markdownlint.json 'doc/**/*.md'
# Prepare docs for build # Prepare docs for build
- mv doc/ /tmp/gitlab-docs/content/$DOCS_GITLAB_REPO_SUFFIX # The path must be 'ee/' because we have hardcoded links relying on it
# https://gitlab.com/gitlab-org/gitlab-docs/-/blob/887850752fc0e72856da6632db132f005ba77f16/content/index.erb#L44-63
- mv doc/ /tmp/gitlab-docs/content/ee
- cd /tmp/gitlab-docs - cd /tmp/gitlab-docs
# Build HTML from Markdown # Build HTML from Markdown
- bundle exec nanoc - bundle exec nanoc
...@@ -63,7 +62,6 @@ docs lint: ...@@ -63,7 +62,6 @@ docs lint:
graphql-reference-verify: graphql-reference-verify:
extends: extends:
- .default-tags
- .default-retry - .default-retry
- .default-cache - .default-cache
- .default-before_script - .default-before_script
... ...
......
...@@ -6,10 +6,10 @@ ...@@ -6,10 +6,10 @@
- tmp/cache/assets/sprockets - tmp/cache/assets/sprockets
- tmp/cache/babel-loader - tmp/cache/babel-loader
- tmp/cache/vue-loader - tmp/cache/vue-loader
- tmp/cache/webpack-dlls
.gitlab:assets:compile-metadata: .gitlab:assets:compile-metadata:
extends: extends:
- .default-tags
- .default-retry - .default-retry
- .default-before_script - .default-before_script
- .assets-compile-cache - .assets-compile-cache
...@@ -63,7 +63,6 @@ gitlab:assets:compile pull-cache: ...@@ -63,7 +63,6 @@ gitlab:assets:compile pull-cache:
.compile-assets-metadata: .compile-assets-metadata:
extends: extends:
- .default-tags
- .default-retry - .default-retry
- .default-before_script - .default-before_script
- .assets-compile-cache - .assets-compile-cache
...@@ -78,6 +77,7 @@ gitlab:assets:compile pull-cache: ...@@ -78,6 +77,7 @@ gitlab:assets:compile pull-cache:
SETUP_DB: "false" SETUP_DB: "false"
# we override the max_old_space_size to prevent OOM errors # we override the max_old_space_size to prevent OOM errors
NODE_OPTIONS: --max_old_space_size=3584 NODE_OPTIONS: --max_old_space_size=3584
WEBPACK_VENDOR_DLL: "true"
cache: cache:
key: "assets-compile:v9" key: "assets-compile:v9"
artifacts: artifacts:
...@@ -118,15 +118,52 @@ compile-assets pull-cache as-if-foss: ...@@ -118,15 +118,52 @@ compile-assets pull-cache as-if-foss:
policy: pull policy: pull
key: "assets-compile:v9:foss" key: "assets-compile:v9:foss"
.frontend-job-base: .frontend-fixtures-base:
extends: extends:
- .default-tags
- .default-retry - .default-retry
- .default-cache - .default-cache
- .default-before_script - .default-before_script
- .use-pg9 - .use-pg9
stage: fixtures
needs:
- job: "setup-test-env"
artifacts: true
- job: "compile-assets pull-cache"
artifacts: true
script:
- date
- scripts/gitaly-test-spawn
- date
- bundle exec rake frontend:fixtures
artifacts:
name: frontend-fixtures
expire_in: 31d
when: always
paths:
- node_modules
- public/assets
- tmp/tests/frontend/
frontend-fixtures:
extends:
- .frontend-fixtures-base
- .frontend:rules:default-frontend-jobs
frontend-fixtures-as-if-foss:
extends:
- .frontend-fixtures-base
- .frontend:rules:default-frontend-jobs-as-if-foss
- .as-if-foss
.frontend-job-base:
extends:
- .default-retry
- .default-cache
- .default-before_script
variables:
USE_BUNDLE_INSTALL: "false"
SETUP_DB: "false"
stage: test stage: test
needs: ["setup-test-env", "compile-assets pull-cache"]
.karma-base: .karma-base:
extends: .frontend-job-base extends: .frontend-job-base
...@@ -136,14 +173,13 @@ compile-assets pull-cache as-if-foss: ...@@ -136,14 +173,13 @@ compile-assets pull-cache as-if-foss:
script: script:
- export BABEL_ENV=coverage CHROME_LOG_FILE=chrome_debug.log - export BABEL_ENV=coverage CHROME_LOG_FILE=chrome_debug.log
- date - date
- scripts/gitaly-test-spawn - yarn karma
- date
- bundle exec rake karma
karma: karma:
extends: extends:
- .karma-base - .karma-base
- .frontend:rules:default-frontend-jobs - .frontend:rules:default-frontend-jobs
needs: ["frontend-fixtures"]
coverage: '/^Statements *: (\d+\.\d+%)/' coverage: '/^Statements *: (\d+\.\d+%)/'
artifacts: artifacts:
name: coverage-javascript name: coverage-javascript
...@@ -161,25 +197,24 @@ karma-as-if-foss: ...@@ -161,25 +197,24 @@ karma-as-if-foss:
- .karma-base - .karma-base
- .frontend:rules:default-frontend-jobs-as-if-foss - .frontend:rules:default-frontend-jobs-as-if-foss
- .as-if-foss - .as-if-foss
needs: ["frontend-fixtures-as-if-foss"]
.jest-base: .jest-base:
extends: .frontend-job-base extends: .frontend-job-base
script: script:
- scripts/gitaly-test-spawn
- date - date
- bundle exec rake frontend:fixtures - yarn jest --ci --coverage --testSequencer ./scripts/frontend/parallel_ci_sequencer.js
- date
- yarn jest --ci --coverage
cache: cache:
key: jest key: jest
paths: paths:
- tmp/jest/jest/ - tmp/cache/jest/
policy: pull-push policy: pull-push
jest: jest:
extends: extends:
- .jest-base - .jest-base
- .frontend:rules:default-frontend-jobs - .frontend:rules:default-frontend-jobs
needs: ["frontend-fixtures"]
artifacts: artifacts:
name: coverage-frontend name: coverage-frontend
expire_in: 31d expire_in: 31d
...@@ -190,18 +225,38 @@ jest: ...@@ -190,18 +225,38 @@ jest:
- tmp/tests/frontend/ - tmp/tests/frontend/
reports: reports:
junit: junit_jest.xml junit: junit_jest.xml
parallel: 2
jest-as-if-foss: jest-as-if-foss:
extends: extends:
- .jest-base - .jest-base
- .frontend:rules:default-frontend-jobs-as-if-foss - .frontend:rules:default-frontend-jobs-as-if-foss
- .as-if-foss - .as-if-foss
needs: ["frontend-fixtures-as-if-foss"]
cache: cache:
policy: pull policy: pull
coverage-frontend:
extends:
- .default-retry
- .frontend:rules:default-frontend-jobs
needs: ["jest"]
stage: post-test
before_script:
- yarn install --frozen-lockfile --cache-folder .yarn-cache --prefer-offline
script:
- yarn node scripts/frontend/merge_coverage_frontend.js
artifacts:
name: coverage-frontend
expire_in: 31d
paths:
- coverage-frontend/
cache:
paths:
- .yarn-cache/
.qa-frontend-node: .qa-frontend-node:
extends: extends:
- .default-tags
- .default-retry - .default-retry
- .default-cache - .default-cache
- .frontend:rules:qa-frontend-node - .frontend:rules:qa-frontend-node
...@@ -218,10 +273,6 @@ jest-as-if-foss: ...@@ -218,10 +273,6 @@ jest-as-if-foss:
- date - date
- yarn run webpack-prod - yarn run webpack-prod
qa-frontend-node:8:
extends: .qa-frontend-node
image: node:carbon
qa-frontend-node:10: qa-frontend-node:10:
extends: .qa-frontend-node extends: .qa-frontend-node
image: node:dubnium image: node:dubnium
...@@ -233,7 +284,6 @@ qa-frontend-node:latest: ...@@ -233,7 +284,6 @@ qa-frontend-node:latest:
webpack-dev-server: webpack-dev-server:
extends: extends:
- .default-tags
- .default-retry - .default-retry
- .default-cache - .default-cache
- .frontend:rules:default-frontend-jobs - .frontend:rules:default-frontend-jobs
... ...
......
.default-tags:
tags:
- gitlab-org
.default-retry: .default-retry:
retry: retry:
max: 2 # This is confusing but this means "3 runs at max". max: 2 # This is confusing but this means "3 runs at max".
...@@ -50,6 +46,15 @@ ...@@ -50,6 +46,15 @@
variables: variables:
POSTGRES_HOST_AUTH_METHOD: trust POSTGRES_HOST_AUTH_METHOD: trust
.use-pg11:
image: "registry.gitlab.com/gitlab-org/gitlab-build-images:ruby-2.6.5-golang-1.12-git-2.24-lfs-2.9-chrome-73.0-node-12.x-yarn-1.21-postgresql-11-graphicsmagick-1.3.34"
services:
- name: postgres:11.6
command: ["postgres", "-c", "fsync=off", "-c", "synchronous_commit=off", "-c", "full_page_writes=off"]
- name: redis:alpine
variables:
POSTGRES_HOST_AUTH_METHOD: trust
.use-pg9-ee: .use-pg9-ee:
services: services:
- name: postgres:9.6.17 - name: postgres:9.6.17
...@@ -69,6 +74,16 @@ ...@@ -69,6 +74,16 @@
variables: variables:
POSTGRES_HOST_AUTH_METHOD: trust POSTGRES_HOST_AUTH_METHOD: trust
.use-pg11-ee:
image: "registry.gitlab.com/gitlab-org/gitlab-build-images:ruby-2.6.5-golang-1.12-git-2.24-lfs-2.9-chrome-73.0-node-12.x-yarn-1.21-postgresql-11-graphicsmagick-1.3.34"
services:
- name: postgres:11.6
command: ["postgres", "-c", "fsync=off", "-c", "synchronous_commit=off", "-c", "full_page_writes=off"]
- name: redis:alpine
- name: elasticsearch:6.4.2
variables:
POSTGRES_HOST_AUTH_METHOD: trust
.as-if-foss: .as-if-foss:
variables: variables:
FOSS_ONLY: '1' FOSS_ONLY: '1'
.only-code-memory-job-base: .only-code-memory-job-base:
extends: extends:
- .default-tags
- .default-retry - .default-retry
- .default-cache - .default-cache
- .default-before_script - .default-before_script
...@@ -8,6 +7,10 @@ ...@@ -8,6 +7,10 @@
memory-static: memory-static:
extends: .only-code-memory-job-base extends: .only-code-memory-job-base
stage: test
needs:
- job: setup-test-env
artifacts: true
variables: variables:
SETUP_DB: "false" SETUP_DB: "false"
script: script:
...@@ -36,6 +39,12 @@ memory-on-boot: ...@@ -36,6 +39,12 @@ memory-on-boot:
extends: extends:
- .only-code-memory-job-base - .only-code-memory-job-base
- .use-pg10 - .use-pg10
stage: test
needs:
- job: setup-test-env
artifacts: true
- job: compile-assets pull-cache
artifacts: true
variables: variables:
NODE_ENV: "production" NODE_ENV: "production"
RAILS_ENV: "production" RAILS_ENV: "production"
...@@ -44,8 +53,7 @@ memory-on-boot: ...@@ -44,8 +53,7 @@ memory-on-boot:
# we override the max_old_space_size to prevent OOM errors # we override the max_old_space_size to prevent OOM errors
NODE_OPTIONS: --max_old_space_size=3584 NODE_OPTIONS: --max_old_space_size=3584
script: script:
# Both bootsnap and derailed monkey-patch Kernel#require, which leads to circular dependency - PATH_TO_HIT="/users/sign_in" CUT_OFF=0.3 bundle exec derailed exec perf:mem >> 'tmp/memory_on_boot.txt'
- ENABLE_BOOTSNAP=false PATH_TO_HIT="/users/sign_in" CUT_OFF=0.3 bundle exec derailed exec perf:mem >> 'tmp/memory_on_boot.txt'
- scripts/generate-memory-metrics-on-boot tmp/memory_on_boot.txt >> 'tmp/memory_on_boot_metrics.txt' - scripts/generate-memory-metrics-on-boot tmp/memory_on_boot.txt >> 'tmp/memory_on_boot_metrics.txt'
artifacts: artifacts:
paths: paths:
... ...
......
pages: pages:
extends: extends:
- .default-tags
- .default-retry - .default-retry
- .default-cache - .default-cache
- .pages:rules - .pages:rules
stage: pages stage: pages
dependencies: ["coverage", "karma", "gitlab:assets:compile pull-cache"] dependencies: ["rspec:coverage", "karma", "gitlab:assets:compile pull-cache"]
script: script:
- mv public/ .public/ - mv public/ .public/
- mkdir public/ - mkdir public/
... ...
......
.qa-job-base: .qa-job-base:
extends: extends:
- .default-tags
- .default-retry - .default-retry
stage: test stage: test
dependencies: [] needs: []
cache: cache:
key: "qa-framework-jobs:v1" key: "qa-framework-jobs:v1"
paths: paths:
... ...
......
...@@ -7,7 +7,6 @@ ...@@ -7,7 +7,6 @@
.rails-job-base: .rails-job-base:
extends: extends:
- .default-tags
- .default-retry - .default-retry
- .default-cache - .default-cache
- .default-before_script - .default-before_script
...@@ -202,7 +201,7 @@ gitlab:setup: ...@@ -202,7 +201,7 @@ gitlab:setup:
paths: paths:
- log/development.log - log/development.log
coverage: rspec:coverage:
extends: extends:
- .rails-job-base - .rails-job-base
- .rails:rules:ee-and-foss - .rails:rules:ee-and-foss
...@@ -238,6 +237,12 @@ rspec quarantine pg9: ...@@ -238,6 +237,12 @@ rspec quarantine pg9:
- .rails:rules:master-refs-code-backstage - .rails:rules:master-refs-code-backstage
- .use-pg10 - .use-pg10
rspec migration pg10:
extends:
- .rspec-base-pg10
- .rspec-base-migration
parallel: 2
rspec unit pg10: rspec unit pg10:
extends: .rspec-base-pg10 extends: .rspec-base-pg10
parallel: 20 parallel: 20
...@@ -252,6 +257,34 @@ rspec system pg10: ...@@ -252,6 +257,34 @@ rspec system pg10:
# master-only jobs # # master-only jobs #
#################### ####################
############################
# nightly master-only jobs #
.rspec-base-pg11:
extends:
- .rspec-base
- .rails:rules:nightly-master-refs-code-backstage
- .use-pg11
rspec migration pg11:
extends:
- .rspec-base-pg11
- .rspec-base-migration
parallel: 2
rspec unit pg11:
extends: .rspec-base-pg11
parallel: 20
rspec integration pg11:
extends: .rspec-base-pg11
parallel: 8
rspec system pg11:
extends: .rspec-base-pg11
parallel: 24
# nightly master-only jobs #
############################
######################### #########################
# ee + master-only jobs # # ee + master-only jobs #
rspec-ee quarantine pg9: rspec-ee quarantine pg9:
... ...
......
...@@ -12,6 +12,7 @@ code_quality: ...@@ -12,6 +12,7 @@ code_quality:
- .default-retry - .default-retry
- .reports:rules:code_quality - .reports:rules:code_quality
stage: test stage: test
needs: []
image: docker:stable image: docker:stable
allow_failure: true allow_failure: true
services: services:
...@@ -19,7 +20,7 @@ code_quality: ...@@ -19,7 +20,7 @@ code_quality:
variables: variables:
DOCKER_DRIVER: overlay2 DOCKER_DRIVER: overlay2
DOCKER_TLS_CERTDIR: "" DOCKER_TLS_CERTDIR: ""
CODE_QUALITY_IMAGE: "registry.gitlab.com/gitlab-org/security-products/codequality:0.85.6" CODE_QUALITY_IMAGE: "registry.gitlab.com/gitlab-org/ci-cd/codequality:0.85.9"
script: script:
- | - |
if ! docker info &>/dev/null; then if ! docker info &>/dev/null; then
...@@ -39,7 +40,6 @@ code_quality: ...@@ -39,7 +40,6 @@ code_quality:
paths: paths:
- gl-code-quality-report.json # GitLab-specific - gl-code-quality-report.json # GitLab-specific
expire_in: 1 week # GitLab-specific expire_in: 1 week # GitLab-specific
dependencies: []
# We need to duplicate this job's definition because it seems it's impossible to # We need to duplicate this job's definition because it seems it's impossible to
# override an included `only.refs`. # override an included `only.refs`.
...@@ -52,7 +52,7 @@ sast: ...@@ -52,7 +52,7 @@ sast:
- .reports:rules:sast - .reports:rules:sast
stage: test stage: test
allow_failure: true allow_failure: true
dependencies: [] # GitLab-specific needs: []
artifacts: artifacts:
paths: paths:
- gl-sast-report.json # GitLab-specific - gl-sast-report.json # GitLab-specific
...@@ -90,6 +90,7 @@ dependency_scanning: ...@@ -90,6 +90,7 @@ dependency_scanning:
- .default-retry - .default-retry
- .reports:rules:dependency_scanning - .reports:rules:dependency_scanning
stage: test stage: test
needs: []
image: docker:stable image: docker:stable
variables: variables:
DOCKER_DRIVER: overlay2 DOCKER_DRIVER: overlay2
...@@ -148,7 +149,6 @@ dependency_scanning: ...@@ -148,7 +149,6 @@ dependency_scanning:
reports: reports:
dependency_scanning: gl-dependency-scanning-report.json dependency_scanning: gl-dependency-scanning-report.json
expire_in: 1 week # GitLab-specific expire_in: 1 week # GitLab-specific
dependencies: []
# We need to duplicate this job's definition because it seems it's impossible to # We need to duplicate this job's definition because it seems it's impossible to
# override an included `only.refs`. # override an included `only.refs`.
...@@ -168,6 +168,7 @@ dast: ...@@ -168,6 +168,7 @@ dast:
# DAST_USERNAME: "root" # DAST_USERNAME: "root"
# DAST_USERNAME_FIELD: "user[login]" # DAST_USERNAME_FIELD: "user[login]"
# DAST_PASSWORD_FIELD: "user[passowrd]" # DAST_PASSWORD_FIELD: "user[passowrd]"
DAST_VERSION: 1
allow_failure: true allow_failure: true
script: script:
- 'export DAST_WEBSITE="${DAST_WEBSITE:-$(cat environment_url.txt)}"' - 'export DAST_WEBSITE="${DAST_WEBSITE:-$(cat environment_url.txt)}"'
... ...
......
.review-docker: .review-docker:
extends: extends:
- .default-tags
- .default-retry - .default-retry
image: registry.gitlab.com/gitlab-org/gitlab-build-images:gitlab-qa-alpine-ruby-2.6 image: registry.gitlab.com/gitlab-org/gitlab-build-images:gitlab-qa-alpine-ruby-2.6
services: services:
...@@ -29,7 +28,6 @@ build-qa-image: ...@@ -29,7 +28,6 @@ build-qa-image:
review-cleanup: review-cleanup:
extends: extends:
- .default-tags
- .default-retry - .default-retry
- .review:rules:review-cleanup - .review:rules:review-cleanup
stage: prepare stage: prepare
...@@ -46,7 +44,6 @@ review-cleanup: ...@@ -46,7 +44,6 @@ review-cleanup:
review-build-cng: review-build-cng:
extends: extends:
- .default-tags
- .default-retry - .default-retry
- .review:rules:mr-and-schedule - .review:rules:mr-and-schedule
image: ruby:2.6-alpine image: ruby:2.6-alpine
...@@ -63,18 +60,18 @@ review-build-cng: ...@@ -63,18 +60,18 @@ review-build-cng:
.review-workflow-base: .review-workflow-base:
extends: extends:
- .default-tags
- .default-retry - .default-retry
image: registry.gitlab.com/gitlab-org/gitlab-build-images:gitlab-charts-build-base image: registry.gitlab.com/gitlab-org/gitlab-build-images:gitlab-charts-build-base
variables: variables:
HOST_SUFFIX: "${CI_ENVIRONMENT_SLUG}" HOST_SUFFIX: "${CI_ENVIRONMENT_SLUG}"
DOMAIN: "-${CI_ENVIRONMENT_SLUG}.${REVIEW_APPS_DOMAIN}" DOMAIN: "-${CI_ENVIRONMENT_SLUG}.${REVIEW_APPS_DOMAIN}"
GITLAB_HELM_CHART_REF: "v2.5.1" GITLAB_HELM_CHART_REF: "v2.6.8"
GITLAB_EDITION: "ce" GITLAB_EDITION: "ce"
environment: environment:
name: review/${CI_COMMIT_REF_NAME} name: review/${CI_COMMIT_REF_NAME}
url: https://gitlab-${CI_ENVIRONMENT_SLUG}.${REVIEW_APPS_DOMAIN} url: https://gitlab-${CI_ENVIRONMENT_SLUG}.${REVIEW_APPS_DOMAIN}
on_stop: review-stop on_stop: review-stop
auto_stop_in: 48 hours
review-deploy: review-deploy:
extends: extends:
...@@ -84,6 +81,7 @@ review-deploy: ...@@ -84,6 +81,7 @@ review-deploy:
needs: needs:
- job: review-build-cng - job: review-build-cng
artifacts: false artifacts: false
resource_group: "review/${CI_COMMIT_REF_NAME}"
allow_failure: true allow_failure: true
before_script: before_script:
- '[[ ! -d "ee/" ]] || export GITLAB_EDITION="ee"' - '[[ ! -d "ee/" ]] || export GITLAB_EDITION="ee"'
...@@ -215,7 +213,6 @@ review-performance: ...@@ -215,7 +213,6 @@ review-performance:
parallel-spec-reports: parallel-spec-reports:
extends: extends:
- .default-tags
- .review:rules:mr-only-manual - .review:rules:mr-only-manual
image: ruby:2.6-alpine image: ruby:2.6-alpine
stage: post-qa stage: post-qa
...@@ -242,15 +239,14 @@ parallel-spec-reports: ...@@ -242,15 +239,14 @@ parallel-spec-reports:
danger-review: danger-review:
extends: extends:
- .default-tags
- .default-retry - .default-retry
- .default-cache - .default-cache
- .review:rules:danger - .review:rules:danger
image: registry.gitlab.com/gitlab-org/gitlab-build-images:danger image: registry.gitlab.com/gitlab-org/gitlab-build-images:danger
stage: test stage: test
dependencies: [] needs: []
script: script:
- git version - git version
- node --version - node --version
- yarn install --frozen-lockfile --cache-folder .yarn-cache --prefer-offline - yarn install --frozen-lockfile --cache-folder .yarn-cache --prefer-offline
- danger --fail-on-errors=true - danger --fail-on-errors=true --verbose
...@@ -22,6 +22,9 @@ ...@@ -22,6 +22,9 @@
.if-merge-request: &if-merge-request .if-merge-request: &if-merge-request
if: '$CI_MERGE_REQUEST_IID' if: '$CI_MERGE_REQUEST_IID'
.if-nightly-master-schedule: &if-nightly-master-schedule
if: '$NIGHTLY && $CI_COMMIT_REF_NAME == "master" && $CI_PIPELINE_SOURCE == "schedule"'
.if-dot-com-gitlab-org-schedule: &if-dot-com-gitlab-org-schedule .if-dot-com-gitlab-org-schedule: &if-dot-com-gitlab-org-schedule
if: '$CI_SERVER_HOST == "gitlab.com" && $CI_PROJECT_NAMESPACE == "gitlab-org" && $CI_PIPELINE_SOURCE == "schedule"' if: '$CI_SERVER_HOST == "gitlab.com" && $CI_PROJECT_NAMESPACE == "gitlab-org" && $CI_PIPELINE_SOURCE == "schedule"'
...@@ -77,6 +80,9 @@ ...@@ -77,6 +80,9 @@
- "{,ee/}{app,bin,config,db,haml_lint,lib,locale,public,scripts,symbol,vendor}/**/*" - "{,ee/}{app,bin,config,db,haml_lint,lib,locale,public,scripts,symbol,vendor}/**/*"
- "doc/api/graphql/reference/*" # Files in this folder are auto-generated - "doc/api/graphql/reference/*" # Files in this folder are auto-generated
.frontend-dependency-patterns: &frontend-dependency-patterns
- "{package.json,yarn.lock}"
.qa-patterns: &qa-patterns .qa-patterns: &qa-patterns
- ".dockerignore" - ".dockerignore"
- "qa/**/*" - "qa/**/*"
...@@ -267,6 +273,9 @@ ...@@ -267,6 +273,9 @@
rules: rules:
- <<: *if-master-refs - <<: *if-master-refs
when: on_success when: on_success
- <<: *if-merge-request
changes: *frontend-dependency-patterns
when: on_success
################ ################
# Memory rules # # Memory rules #
...@@ -343,6 +352,12 @@ ...@@ -343,6 +352,12 @@
changes: *code-backstage-patterns changes: *code-backstage-patterns
when: on_success when: on_success
.rails:rules:nightly-master-refs-code-backstage:
rules:
- <<: *if-nightly-master-schedule
changes: *code-backstage-patterns
when: on_success
.rails:rules:ee-only: .rails:rules:ee-only:
rules: rules:
- <<: *if-not-ee - <<: *if-not-ee
...@@ -484,13 +499,6 @@ ...@@ -484,13 +499,6 @@
changes: *code-backstage-patterns changes: *code-backstage-patterns
when: on_success when: on_success
.test-metadata:rules:flaky-examples-check:
rules:
- <<: *if-merge-request
changes: *code-backstage-patterns
when: on_success
############## ##############
# YAML rules # # YAML rules #
############## ##############
... ...
......
...@@ -2,7 +2,6 @@ ...@@ -2,7 +2,6 @@
# rubygems.org in the future. # rubygems.org in the future.
cache gems: cache gems:
extends: extends:
- .default-tags
- .default-retry - .default-retry
- .default-cache - .default-cache
- .default-before_script - .default-before_script
...@@ -21,14 +20,14 @@ cache gems: ...@@ -21,14 +20,14 @@ cache gems:
.minimal-job: .minimal-job:
extends: extends:
- .default-tags
- .default-retry - .default-retry
dependencies: [] needs: []
gitlab_git_test: gitlab_git_test:
extends: extends:
- .minimal-job - .minimal-job
- .setup:rules:gitlab_git_test - .setup:rules:gitlab_git_test
stage: test
script: script:
- spec/support/prepare-gitlab-git-test-for-commit --check-for-changes - spec/support/prepare-gitlab-git-test-for-commit --check-for-changes
...@@ -36,5 +35,6 @@ no_ee_check: ...@@ -36,5 +35,6 @@ no_ee_check:
extends: extends:
- .minimal-job - .minimal-job
- .setup:rules:no_ee_check - .setup:rules:no_ee_check
stage: test
script: script:
- scripts/no-ee-check - scripts/no-ee-check
...@@ -37,22 +37,3 @@ update-tests-metadata: ...@@ -37,22 +37,3 @@ update-tests-metadata:
- retry gem install fog-aws mime-types activesupport rspec_profiling postgres-copy --no-document - retry gem install fog-aws mime-types activesupport rspec_profiling postgres-copy --no-document
- source scripts/rspec_helpers.sh - source scripts/rspec_helpers.sh
- update_tests_metadata - update_tests_metadata
flaky-examples-check:
extends:
- .default-tags
- .default-retry
- .test-metadata:rules:flaky-examples-check
image: ruby:2.6-alpine
stage: post-test
variables:
NEW_FLAKY_SPECS_REPORT: rspec_flaky/report-new.json
allow_failure: true
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/flaky_examples/detect-new-flaky-examples $NEW_FLAKY_SPECS_REPORT
...@@ -2,11 +2,11 @@ ...@@ -2,11 +2,11 @@
# This uses rules from project root `.yamllint`. # This uses rules from project root `.yamllint`.
lint-ci-gitlab: lint-ci-gitlab:
extends: extends:
- .default-tags
- .default-retry - .default-retry
- .yaml:rules - .yaml:rules
image: sdesbure/yamllint:latest image: sdesbure/yamllint:latest
dependencies: [] stage: test
needs: []
variables: variables:
LINT_PATHS: .gitlab-ci.yml .gitlab/ci lib/gitlab/ci/templates changelogs LINT_PATHS: .gitlab-ci.yml .gitlab/ci lib/gitlab/ci/templates changelogs
script: script:
... ...
......
...@@ -15,6 +15,8 @@ ...@@ -15,6 +15,8 @@
* [Sidney (Systems Administrator)](https://about.gitlab.com/handbook/marketing/product-marketing/roles-personas/#sidney-systems-administrator) * [Sidney (Systems Administrator)](https://about.gitlab.com/handbook/marketing/product-marketing/roles-personas/#sidney-systems-administrator)
* [Sam (Security Analyst)](https://about.gitlab.com/handbook/marketing/product-marketing/roles-personas/#sam-security-analyst) * [Sam (Security Analyst)](https://about.gitlab.com/handbook/marketing/product-marketing/roles-personas/#sam-security-analyst)
* [Dana (Data Analyst)](https://about.gitlab.com/handbook/marketing/product-marketing/roles-personas/#dana-data-analyst) * [Dana (Data Analyst)](https://about.gitlab.com/handbook/marketing/product-marketing/roles-personas/#dana-data-analyst)
* [Simone (Software Engineer in Test)](https://about.gitlab.com/handbook/marketing/product-marketing/roles-personas/#simone-software-engineer-in-test)
* [Allison (Application Ops)](https://about.gitlab.com/handbook/marketing/product-marketing/roles-personas/#allison-application-ops)
Personas are described at https://about.gitlab.com/handbook/marketing/product-marketing/roles-personas/ --> Personas are described at https://about.gitlab.com/handbook/marketing/product-marketing/roles-personas/ -->
...@@ -57,6 +59,10 @@ See the test engineering planning process and reach out to your counterpart Soft ...@@ -57,6 +59,10 @@ See the test engineering planning process and reach out to your counterpart Soft
<!-- Which leads to: in which enterprise tier should this feature go? See https://about.gitlab.com/handbook/product/pricing/#four-tiers --> <!-- Which leads to: in which enterprise tier should this feature go? See https://about.gitlab.com/handbook/product/pricing/#four-tiers -->
### Is this a cross-stage feature?
<!-- Communicate if this change will affect multiple Stage Groups or product areas. We recommend always start with the assumption that a feature request will have an impact into another Group. Loop in the most relevant PM and Product Designer from that Group to provide strategic support to help align the Group's broader plan and vision, as well as to avoid UX and technical debt. https://about.gitlab.com/handbook/product/#cross-stage-features -->
### Links / references ### Links / references
/label ~feature /label ~feature
## Problem Statement ## Problem Statement
<!-- What is the problem we hope to validate and solve? --> <!-- What is the problem we hope to validate? Reference how to write a real customer problem statement at https://productcoalition.com/how-to-write-a-good-customer-problem-statement-a815f80189ba for guidance. -->
## Reach ## Reach
... ...
......