diff --git a/.gitignore b/.gitignore index 29180b76e2..151c75d474 100644 --- a/.gitignore +++ b/.gitignore @@ -17,6 +17,7 @@ eslint-report.html .rbx/ /.ruby-gemset /.ruby-version +/.tool-versions /.rvmrc .sass-cache/ /.secret diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 4bbf411c23..a5b80c7ca5 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -20,6 +20,8 @@ default: - gitlab-org # All jobs are interruptible by default interruptible: true + # Default job timeout set to 90m https://gitlab.com/gitlab-com/gl-infra/infrastructure/-/issues/10520 + timeout: 90m workflow: rules: @@ -61,6 +63,7 @@ variables: DOCKER_VERSION: "19.03.0" include: + - local: .gitlab/ci/build-images.gitlab-ci.yml - local: .gitlab/ci/cache-repo.gitlab-ci.yml - local: .gitlab/ci/cng.gitlab-ci.yml - local: .gitlab/ci/docs.gitlab-ci.yml diff --git a/.gitlab/CODEOWNERS b/.gitlab/CODEOWNERS index 6cd316349c..4e2c4aa5c7 100644 --- a/.gitlab/CODEOWNERS +++ b/.gitlab/CODEOWNERS @@ -13,6 +13,7 @@ /doc/development/ @marcia @mjang1 /doc/development/documentation/ @mikelewis /doc/ci @marcel.amirault @sselhorn +/doc/operations @aqualls @eread /doc/user/clusters @aqualls /doc/user/infrastructure @aqualls /doc/user/project/clusters @aqualls @@ -43,17 +44,12 @@ # Feature specific owners /ee/lib/ee/gitlab/auth/ldap/ @dblessing @mkozono /lib/gitlab/auth/ldap/ @dblessing @mkozono -/lib/gitlab/ci/templates/ @nolith @zj +/lib/gitlab/ci/templates/ @nolith @dosuken123 /lib/gitlab/ci/templates/Auto-DevOps.gitlab-ci.yml @DylanGriffith @mayra-cabrera @tkuah /lib/gitlab/ci/templates/Security/ @plafoucriere @gonzoyumo @twoodham @sethgitlab /ee/app/models/project_alias.rb @patrickbajao /ee/lib/api/project_aliases.rb @patrickbajao -# Code Owners -# -/ee/lib/gitlab/code_owners/ @reprazent @kerrizor @garyh -/doc/user/project/code_owners.md @reprazent @kerrizor @garyh - # Quality owned files /qa/ @gl-quality @@ -77,3 +73,9 @@ Dangerfile @gl-quality/eng-prod /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 + +[Code Owners] +/ee/lib/gitlab/code_owners.rb @reprazent @kerrizor @garyh +/ee/lib/gitlab/code_owners/ @reprazent @kerrizor @garyh +/ee/spec/lib/gitlab/code_owners/ @reprazent @kerrizor @garyh +/doc/user/project/code_owners.md @reprazent @kerrizor @garyh diff --git a/.gitlab/ci/build-images.gitlab-ci.yml b/.gitlab/ci/build-images.gitlab-ci.yml new file mode 100644 index 0000000000..e6c3e7598d --- /dev/null +++ b/.gitlab/ci/build-images.gitlab-ci.yml @@ -0,0 +1,31 @@ +# This image is used by the `review-qa-*` jobs. Not currently used by the `omnibus-gitlab` pipelines which rebuild this +# image, e.g. https://gitlab.com/gitlab-org/build/omnibus-gitlab-mirror/-/jobs/587107399, which we could probably avoid. +# See https://gitlab.com/gitlab-org/omnibus-gitlab/-/issues/5429. +build-qa-image: + extends: + - .use-kaniko + - .build-images:rules:build-qa-image + stage: build-images + needs: [] + script: + - export QA_IMAGE="${CI_REGISTRY}/${CI_PROJECT_PATH}/gitlab-ee-qa:${CI_COMMIT_REF_SLUG}" + - /kaniko/executor --context=${CI_PROJECT_DIR} --dockerfile=${CI_PROJECT_DIR}/qa/Dockerfile --destination=${QA_IMAGE} --cache=true + retry: 2 + +# This image is used by: +# - The `CNG` pipelines (via the `review-build-cng` job): https://gitlab.com/gitlab-org/build/CNG/-/blob/cfc67136d711e1c8c409bf8e57427a644393da2f/.gitlab-ci.yml#L335 +# - The `omnibus-gitlab` pipelines (via the `package-and-qa` job): https://gitlab.com/gitlab-org/omnibus-gitlab/-/blob/dfd1ad475868fc84e91ab7b5706aa03e46dc3a86/.gitlab-ci.yml#L130 +build-assets-image: + extends: + - .use-kaniko + - .build-images:rules:build-assets-image + stage: build-images + needs: ["compile-production-assets"] + variables: + GIT_DEPTH: "1" + script: + # TODO: Change the image tag to be the MD5 of assets files and skip image building if the image exists + # We'll also need to pass GITLAB_ASSETS_TAG to the trigerred omnibus-gitlab pipeline similarly to how we do it for trigerred CNG pipelines + # https://gitlab.com/gitlab-org/gitlab/issues/208389 + - run_timed_command "scripts/build_assets_image" + retry: 2 diff --git a/.gitlab/ci/docs.gitlab-ci.yml b/.gitlab/ci/docs.gitlab-ci.yml index 5a6f2aacf9..8745e7d8e9 100644 --- a/.gitlab/ci/docs.gitlab-ci.yml +++ b/.gitlab/ci/docs.gitlab-ci.yml @@ -59,6 +59,15 @@ docs lint: # Check the internal anchor links - bundle exec nanoc check internal_anchors +ui-docs-links lint: + extends: + - .docs:rules:docs-lint + - .static-analysis-base + stage: test + needs: [] + script: + - bundle exec haml-lint -i DocumentationLinks + graphql-reference-verify: extends: - .default-retry diff --git a/.gitlab/ci/frontend.gitlab-ci.yml b/.gitlab/ci/frontend.gitlab-ci.yml index 4403187d42..084a48a7fc 100644 --- a/.gitlab/ci/frontend.gitlab-ci.yml +++ b/.gitlab/ci/frontend.gitlab-ci.yml @@ -2,16 +2,18 @@ extends: - .default-retry - .default-before_script - - .assets-compile-cache variables: SETUP_DB: "false" # we override the max_old_space_size to prevent OOM errors NODE_OPTIONS: --max_old_space_size=3584 - WEBPACK_VENDOR_DLL: "true" .compile-assets-base: - extends: .frontend-base + extends: + - .frontend-base + - .assets-compile-cache image: registry.gitlab.com/gitlab-org/gitlab-build-images:ruby-2.6.6-git-2.27-lfs-2.9-node-12.x-yarn-1.21-graphicsmagick-1.3.34 + variables: + WEBPACK_VENDOR_DLL: "true" stage: prepare script: - node --version @@ -90,21 +92,6 @@ update-yarn-cache: cache: policy: push -build-assets-image: - extends: - - .use-kaniko - - .frontend:rules:compile-production-assets - stage: build-images - needs: ["compile-production-assets"] - variables: - GIT_DEPTH: "1" - script: - # TODO: Change the image tag to be the MD5 of assets files and skip image building if the image exists - # We'll also need to pass GITLAB_ASSETS_TAG to the trigerred omnibus-gitlab pipeline similarly to how we do it for trigerred CNG pipelines - # https://gitlab.com/gitlab-org/gitlab/issues/208389 - - run_timed_command "scripts/build_assets_image" - retry: 2 - .frontend-fixtures-base: extends: - .frontend-base @@ -114,6 +101,7 @@ build-assets-image: needs: ["setup-test-env", "compile-test-assets"] variables: SETUP_DB: "true" + WEBPACK_VENDOR_DLL: "true" script: - run_timed_command "scripts/gitaly-test-build" - run_timed_command "scripts/gitaly-test-spawn" @@ -138,22 +126,25 @@ frontend-fixtures-as-if-foss: .frontend-test-base: extends: - - .default-retry + - .frontend-base - .yarn-cache variables: USE_BUNDLE_INSTALL: "false" - SETUP_DB: "false" stage: test - before_script: - - source scripts/utils.sh + +eslint-as-if-foss: + extends: + - .frontend-test-base + - .frontend:rules:eslint-as-if-foss + - .as-if-foss + needs: [] + script: + - run_timed_command "retry yarn install --frozen-lockfile" + - yarn run eslint .karma-base: extends: .frontend-test-base - variables: - # we override the max_old_space_size to prevent OOM errors - NODE_OPTIONS: --max_old_space_size=3584 script: - - source scripts/utils.sh - export BABEL_ENV=coverage CHROME_LOG_FILE=chrome_debug.log - run_timed_command "retry yarn install --frozen-lockfile" - run_timed_command "yarn karma" @@ -174,6 +165,7 @@ karma: - tmp/tests/frontend/ reports: junit: junit_karma.xml + cobertura: coverage-javascript/cobertura-coverage.xml karma-as-if-foss: extends: @@ -185,7 +177,6 @@ karma-as-if-foss: .jest-base: extends: .frontend-test-base script: - - source scripts/utils.sh - run_timed_command "retry yarn install --frozen-lockfile" - run_timed_command "yarn jest --ci --coverage --testSequencer ./scripts/frontend/parallel_ci_sequencer.js" @@ -211,7 +202,6 @@ jest-integration: - .frontend-test-base - .frontend:rules:default-frontend-jobs script: - - source scripts/utils.sh - run_timed_command "retry yarn install --frozen-lockfile" - run_timed_command "yarn jest:integration --ci" needs: ["frontend-fixtures"] @@ -236,11 +226,14 @@ coverage-frontend: - run_timed_command "retry yarn install --frozen-lockfile" script: - run_timed_command "yarn node scripts/frontend/merge_coverage_frontend.js" + coverage: '/^Statements\s*:\s*?(\d+(?:\.\d+)?)%/' artifacts: name: coverage-frontend expire_in: 31d paths: - coverage-frontend/ + reports: + cobertura: coverage-frontend/cobertura-coverage.xml .qa-frontend-node: extends: diff --git a/.gitlab/ci/global.gitlab-ci.yml b/.gitlab/ci/global.gitlab-ci.yml index 30e3abf13b..3101a42c05 100644 --- a/.gitlab/ci/global.gitlab-ci.yml +++ b/.gitlab/ci/global.gitlab-ci.yml @@ -18,7 +18,7 @@ .rails-cache: cache: - key: "rails-v1" + key: "rails-v2" paths: - vendor/ruby/ - vendor/gitaly-ruby/ @@ -72,6 +72,15 @@ variables: POSTGRES_HOST_AUTH_METHOD: trust +.use-pg12: + image: "registry.gitlab.com/gitlab-org/gitlab-build-images:ruby-2.6.6-golang-1.14-git-2.27-lfs-2.9-chrome-83-node-12.x-yarn-1.21-postgresql-12-graphicsmagick-1.3.34" + services: + - name: postgres:12 + command: ["postgres", "-c", "fsync=off", "-c", "synchronous_commit=off", "-c", "full_page_writes=off"] + - name: redis:alpine + variables: + POSTGRES_HOST_AUTH_METHOD: trust + .use-pg11-ee: image: "registry.gitlab.com/gitlab-org/gitlab-build-images:ruby-2.6.6-golang-1.14-git-2.27-lfs-2.9-chrome-83-node-12.x-yarn-1.21-postgresql-11-graphicsmagick-1.3.34" services: @@ -82,6 +91,16 @@ variables: POSTGRES_HOST_AUTH_METHOD: trust +.use-pg12-ee: + image: "registry.gitlab.com/gitlab-org/gitlab-build-images:ruby-2.6.6-golang-1.14-git-2.27-lfs-2.9-chrome-83-node-12.x-yarn-1.21-postgresql-12-graphicsmagick-1.3.34" + services: + - name: postgres:12 + 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 + .use-kaniko: image: name: gcr.io/kaniko-project/executor:debug-v0.20.0 diff --git a/.gitlab/ci/qa.gitlab-ci.yml b/.gitlab/ci/qa.gitlab-ci.yml index 20527b690a..9a81ea513b 100644 --- a/.gitlab/ci/qa.gitlab-ci.yml +++ b/.gitlab/ci/qa.gitlab-ci.yml @@ -49,7 +49,6 @@ update-qa-cache: .package-and-qa-base: image: ruby:2.6-alpine stage: qa - dependencies: [] retry: 0 script: - source scripts/utils.sh diff --git a/.gitlab/ci/rails.gitlab-ci.yml b/.gitlab/ci/rails.gitlab-ci.yml index f73e0c1d50..4cef4ee26f 100644 --- a/.gitlab/ci/rails.gitlab-ci.yml +++ b/.gitlab/ci/rails.gitlab-ci.yml @@ -1,9 +1,129 @@ +###################### +# rspec job base specs .rails-job-base: extends: - .default-retry - .default-before_script - .rails-cache +.rspec-base: + extends: .rails-job-base + stage: test + needs: ["setup-test-env", "retrieve-tests-metadata", "compile-test-assets"] + script: + - run_timed_command "scripts/gitaly-test-build" + - run_timed_command "scripts/gitaly-test-spawn" + - source scripts/rspec_helpers.sh + - rspec_paralellized_job "--tag ~quarantine --tag ~geo --tag ~level:migration" + artifacts: + expire_in: 31d + when: always + paths: + - coverage/ + - knapsack/ + - rspec_flaky/ + - rspec_profiling/ + - tmp/capybara/ + - tmp/memory_test/ + - log/*.log + reports: + junit: junit_rspec.xml + +.rspec-base-migration: + extends: .rails:rules:ee-and-foss-migration + script: + - run_timed_command "scripts/gitaly-test-build" + - run_timed_command "scripts/gitaly-test-spawn" + - source scripts/rspec_helpers.sh + - rspec_paralellized_job "--tag ~quarantine --tag ~geo --tag level:migration" + +.rspec-base-pg11: + extends: + - .rspec-base + - .use-pg11 + +.rspec-base-pg12: + extends: + - .rspec-base + - .use-pg12 + +.rspec-base-pg11-as-if-foss: + extends: + - .rspec-base + - .as-if-foss + - .use-pg11 + needs: ["setup-test-env", "retrieve-tests-metadata", "compile-test-assets as-if-foss"] + +.rspec-ee-base-pg11: + extends: + - .rspec-base + - .use-pg11-ee + +.rspec-ee-base-pg12: + extends: + - .rspec-base + - .use-pg12-ee + +.rspec-ee-base-geo: + extends: .rspec-base + script: + - run_timed_command "scripts/gitaly-test-build" + - run_timed_command "scripts/gitaly-test-spawn" + - source scripts/rspec_helpers.sh + - scripts/prepare_postgres_fdw.sh + - rspec_paralellized_job "--tag ~quarantine --tag geo" + +.rspec-ee-base-geo-pg11: + extends: + - .rspec-ee-base-geo + - .use-pg11-ee + +.rspec-ee-base-geo-pg12: + extends: + - .rspec-ee-base-geo + - .use-pg12-ee + +.db-job-base: + extends: + - .rails-job-base + - .rails:rules:ee-and-foss-migration + - .use-pg11 + stage: test + needs: ["setup-test-env"] +# rspec job base specs +###################### + +############################ +# rspec job parallel configs +.rspec-migration-parallel: + parallel: 5 + +.rspec-ee-migration-parallel: + parallel: 2 + +.rspec-unit-parallel: + parallel: 20 + +.rspec-ee-unit-parallel: + parallel: 10 + +.rspec-ee-unit-geo-parallel: + parallel: 2 + +.rspec-integration-parallel: + parallel: 8 + +.rspec-ee-integration-parallel: + parallel: 4 + +.rspec-system-parallel: + parallel: 24 + +.rspec-ee-system-parallel: + parallel: 6 +# rspec job parallel configs +############################ + ####################################################### # EE/FOSS: default refs (MRs, master, schedules) jobs # setup-test-env: @@ -86,73 +206,37 @@ downtime_check: script: - bundle exec rake downtime_check -.rspec-base: - extends: .rails-job-base - stage: test - needs: ["setup-test-env", "retrieve-tests-metadata", "compile-test-assets"] - script: - - run_timed_command "scripts/gitaly-test-build" - - run_timed_command "scripts/gitaly-test-spawn" - - source scripts/rspec_helpers.sh - - rspec_paralellized_job "--tag ~quarantine --tag ~geo --tag ~level:migration" - artifacts: - expire_in: 31d - when: always - paths: - - coverage/ - - knapsack/ - - rspec_flaky/ - - rspec_profiling/ - - tmp/capybara/ - - tmp/memory_test/ - - log/*.log - reports: - junit: junit_rspec.xml - -.rspec-base-pg11: - extends: - - .rspec-base - - .rails:rules:ee-and-foss - - .use-pg11 - -.rspec-base-migration: - script: - - run_timed_command "scripts/gitaly-test-build" - - run_timed_command "scripts/gitaly-test-spawn" - - source scripts/rspec_helpers.sh - - rspec_paralellized_job "--tag ~quarantine --tag ~geo --tag level:migration" - rspec migration pg11: extends: - .rspec-base-pg11 - .rspec-base-migration - parallel: 5 + - .rspec-migration-parallel rspec unit pg11: - extends: .rspec-base-pg11 - parallel: 20 + extends: + - .rspec-base-pg11 + - .rails:rules:ee-and-foss-unit + - .rspec-unit-parallel rspec integration pg11: - extends: .rspec-base-pg11 - parallel: 8 + extends: + - .rspec-base-pg11 + - .rails:rules:ee-and-foss-integration + - .rspec-integration-parallel rspec system pg11: - extends: .rspec-base-pg11 - parallel: 24 + extends: + - .rspec-base-pg11 + - .rails:rules:ee-and-foss-system + - .rspec-system-parallel rspec fast_spec_helper: - extends: .rspec-base-pg11 + extends: + - .rspec-base-pg11 + - .rails:rules:ee-and-foss-fast_spec_helper script: - bin/rspec spec/fast_spec_helper.rb -.db-job-base: - extends: - - .rails-job-base - - .rails:rules:ee-and-foss - - .use-pg11 - stage: test - needs: ["setup-test-env"] - db:migrate:reset: extends: .db-job-base script: @@ -216,7 +300,7 @@ gitlab:setup: rspec:coverage: extends: - .rails-job-base - - .rails:rules:ee-mr-and-master-only + - .rails:rules:rspec-coverage stage: post-test # We cannot use needs since it would mean needing 84 jobs (since most are parallelized) # so we use `dependencies` here. @@ -248,118 +332,180 @@ rspec:coverage: - coverage/index.html - coverage/assets/ - tmp/memory_test/ + reports: + cobertura: coverage/coverage.xml # EE/FOSS: default refs (MRs, master, schedules) jobs # ####################################################### ################################################## # EE: default refs (MRs, master, schedules) jobs # -.rspec-base-ee: - extends: - - .rspec-base - - .rails:rules:ee-only - -.rspec-base-pg11-as-if-foss: - extends: - - .rspec-base - - .rails:rules:as-if-foss - - .as-if-foss - - .use-pg11 - needs: ["setup-test-env", "retrieve-tests-metadata", "compile-test-assets as-if-foss"] - -.rspec-ee-base-pg11: - extends: - - .rspec-base-ee - - .use-pg11-ee - rspec migration pg11-as-if-foss: extends: - .rspec-base-pg11-as-if-foss - .rspec-base-migration - parallel: 5 + - .rails:rules:as-if-foss-migration + - .rspec-migration-parallel rspec unit pg11-as-if-foss: - extends: .rspec-base-pg11-as-if-foss - parallel: 20 + extends: + - .rspec-base-pg11-as-if-foss + - .rails:rules:as-if-foss-unit + - .rspec-unit-parallel rspec integration pg11-as-if-foss: - extends: .rspec-base-pg11-as-if-foss - parallel: 8 + extends: + - .rspec-base-pg11-as-if-foss + - .rails:rules:as-if-foss-integration + - .rspec-integration-parallel rspec system pg11-as-if-foss: - extends: .rspec-base-pg11-as-if-foss - parallel: 24 + extends: + - .rspec-base-pg11-as-if-foss + - .rails:rules:as-if-foss-system + - .rspec-system-parallel rspec-ee migration pg11: extends: - .rspec-ee-base-pg11 - .rspec-base-migration - parallel: 2 + - .rails:rules:ee-only-migration + - .rspec-ee-migration-parallel rspec-ee unit pg11: - extends: .rspec-ee-base-pg11 - parallel: 10 + extends: + - .rspec-ee-base-pg11 + - .rails:rules:ee-only-unit + - .rspec-ee-unit-parallel rspec-ee integration pg11: - extends: .rspec-ee-base-pg11 - parallel: 4 + extends: + - .rspec-ee-base-pg11 + - .rails:rules:ee-only-integration + - .rspec-ee-integration-parallel rspec-ee system pg11: - extends: .rspec-ee-base-pg11 - parallel: 6 - -.rspec-ee-base-geo: - extends: .rspec-base-ee - script: - - run_timed_command "scripts/gitaly-test-build" - - run_timed_command "scripts/gitaly-test-spawn" - - source scripts/rspec_helpers.sh - - scripts/prepare_postgres_fdw.sh - - rspec_paralellized_job "--tag ~quarantine --tag geo" - -.rspec-ee-base-geo-pg11: extends: - - .rspec-ee-base-geo - - .use-pg11-ee + - .rspec-ee-base-pg11 + - .rails:rules:ee-only-system + - .rspec-ee-system-parallel rspec-ee unit pg11 geo: - extends: .rspec-ee-base-geo-pg11 - parallel: 2 + extends: + - .rspec-ee-base-geo-pg11 + - .rails:rules:ee-only-unit + - .rspec-ee-unit-geo-parallel rspec-ee integration pg11 geo: - extends: .rspec-ee-base-geo-pg11 + extends: + - .rspec-ee-base-geo-pg11 + - .rails:rules:ee-only-integration rspec-ee system pg11 geo: - extends: .rspec-ee-base-geo-pg11 + extends: + - .rspec-ee-base-geo-pg11 + - .rails:rules:ee-only-system db:rollback geo: extends: - db:rollback - - .rails:rules:ee-only + - .rails:rules:ee-only-migration script: - bundle exec rake geo:db:migrate VERSION=20170627195211 - bundle exec rake geo:db:migrate # EE: default refs (MRs, master, schedules) jobs # ################################################## +########################################## +# EE/FOSS: master nightly scheduled jobs # +rspec migration pg12: + extends: + - .rspec-base-pg12 + - .rspec-base-migration + - .rails:rules:master-schedule-nightly--code-backstage + - .rspec-migration-parallel + +rspec unit pg12: + extends: + - .rspec-base-pg12 + - .rails:rules:master-schedule-nightly--code-backstage + - .rspec-unit-parallel + +rspec integration pg12: + extends: + - .rspec-base-pg12 + - .rails:rules:master-schedule-nightly--code-backstage + - .rspec-integration-parallel + +rspec system pg12: + extends: + - .rspec-base-pg12 + - .rails:rules:master-schedule-nightly--code-backstage + - .rspec-system-parallel +# EE/FOSS: master nightly scheduled jobs # +########################################## + +##################################### +# EE: master nightly scheduled jobs # +rspec-ee migration pg12: + extends: + - .rspec-ee-base-pg12 + - .rspec-base-migration + - .rails:rules:master-schedule-nightly--code-backstage-ee-only + - .rspec-ee-migration-parallel + +rspec-ee unit pg12: + extends: + - .rspec-ee-base-pg12 + - .rails:rules:master-schedule-nightly--code-backstage-ee-only + - .rspec-ee-unit-parallel + +rspec-ee integration pg12: + extends: + - .rspec-ee-base-pg12 + - .rails:rules:master-schedule-nightly--code-backstage-ee-only + - .rspec-ee-integration-parallel + +rspec-ee system pg12: + extends: + - .rspec-ee-base-pg12 + - .rails:rules:master-schedule-nightly--code-backstage-ee-only + - .rspec-ee-system-parallel + +rspec-ee unit pg12 geo: + extends: + - .rspec-ee-base-geo-pg12 + - .rails:rules:master-schedule-nightly--code-backstage-ee-only + - .rspec-ee-unit-geo-parallel + +rspec-ee integration pg12 geo: + extends: + - .rspec-ee-base-geo-pg12 + - .rails:rules:master-schedule-nightly--code-backstage-ee-only + +rspec-ee system pg12 geo: + extends: + - .rspec-ee-base-geo-pg12 + - .rails:rules:master-schedule-nightly--code-backstage-ee-only +# EE: master nightly scheduled jobs # +##################################### + ################################################## # EE: Canonical MR pipelines rspec foss-impact: extends: - - .rspec-base - - .as-if-foss + - .rspec-base-pg11-as-if-foss - .rails:rules:ee-mr-only - - .use-pg11 script: - install_gitlab_gem - run_timed_command "scripts/gitaly-test-build" - run_timed_command "scripts/gitaly-test-spawn" - source scripts/rspec_helpers.sh - tooling/bin/find_foss_tests tmp/matching_foss_tests.txt - - rspec_matched_tests tmp/matching_foss_tests.txt "--tag ~quarantine --tag ~geo --tag ~level:migration" + - rspec_matched_tests tmp/matching_foss_tests.txt "--tag ~quarantine" artifacts: expire_in: 7d paths: - tmp/matching_foss_tests.txt - tmp/capybara/ -# EE: Merge Request pipelines +# EE: Canonical MR pipelines ################################################## diff --git a/.gitlab/ci/reports.gitlab-ci.yml b/.gitlab/ci/reports.gitlab-ci.yml index 65abb6c5cb..228747ae8d 100644 --- a/.gitlab/ci/reports.gitlab-ci.yml +++ b/.gitlab/ci/reports.gitlab-ci.yml @@ -15,7 +15,7 @@ code_quality: stage: test needs: [] variables: - CODE_QUALITY_IMAGE: "registry.gitlab.com/gitlab-org/ci-cd/codequality:0.85.9" + CODE_QUALITY_IMAGE: "registry.gitlab.com/gitlab-org/ci-cd/codequality:0.85.10" script: - | if ! docker info &>/dev/null; then @@ -59,6 +59,7 @@ code_quality: SAST_ANALYZER_IMAGE_TAG: 2 SAST_BRAKEMAN_LEVEL: 2 # GitLab-specific SAST_EXCLUDED_PATHS: qa,spec,doc,ee/spec # GitLab-specific + SAST_DISABLE_BABEL: "true" script: - /analyzer run @@ -72,11 +73,10 @@ eslint-sast: image: name: "$SAST_ANALYZER_IMAGE_PREFIX/eslint:$SAST_ANALYZER_IMAGE_TAG" -# Temporary disabled as it's constantly failing. See https://gitlab.com/gitlab-org/gitlab/-/issues/213769. -# nodejs-scan-sast: -# extends: .sast -# image: -# name: "$SAST_ANALYZER_IMAGE_PREFIX/nodejs-scan:$SAST_ANALYZER_IMAGE_TAG" +nodejs-scan-sast: + extends: .sast + image: + name: "$SAST_ANALYZER_IMAGE_PREFIX/nodejs-scan:$SAST_ANALYZER_IMAGE_TAG" secrets-sast: extends: .sast @@ -172,6 +172,7 @@ dependency_scanning: # # - 'export DAST_AUTH_URL="${DAST_WEBSITE}/users/sign_in"' # # - 'export DAST_PASSWORD="${REVIEW_APPS_ROOT_PASSWORD}"' # - /analyze -t $DAST_WEBSITE +# timeout: 4h # artifacts: # paths: # - gl-dast-report.json # GitLab-specific diff --git a/.gitlab/ci/review.gitlab-ci.yml b/.gitlab/ci/review.gitlab-ci.yml index 6898da95c1..4e3a80372a 100644 --- a/.gitlab/ci/review.gitlab-ci.yml +++ b/.gitlab/ci/review.gitlab-ci.yml @@ -1,14 +1,3 @@ -build-qa-image: - extends: - - .use-kaniko - - .review:rules:build-qa-image - stage: build-images - needs: [] - script: - - export QA_IMAGE="${CI_REGISTRY}/${CI_PROJECT_PATH}/gitlab-ee-qa:${CI_COMMIT_REF_SLUG}" - - /kaniko/executor --context=${CI_PROJECT_DIR} --dockerfile=${CI_PROJECT_DIR}/qa/Dockerfile --destination=${QA_IMAGE} --cache=true - retry: 2 - review-cleanup: extends: - .default-retry @@ -27,25 +16,24 @@ review-cleanup: - ruby -rrubygems scripts/review_apps/automated_cleanup.rb - gcp_cleanup -# Temporarily disabling review apps -#review-build-cng: -# extends: -# - .default-retry -# - .review:rules:review-build-cng -# image: ruby:2.6-alpine -# stage: review-prepare -# before_script: -# - source scripts/utils.sh -# - install_api_client_dependencies_with_apk -# - install_gitlab_gem -# needs: -# - job: compile-production-assets -# artifacts: false -# script: -# - BUILD_TRIGGER_TOKEN=$REVIEW_APPS_BUILD_TRIGGER_TOKEN ./scripts/trigger-build cng -# # When the job is manual, review-deploy is also manual and we don't want people -# # to have to manually start the jobs in sequence, so we do it for them. -# - '[ -z $CI_JOB_MANUAL ] || play_job "review-deploy"' +review-build-cng: + extends: + - .default-retry + - .review:rules:review-build-cng + image: ruby:2.6-alpine + stage: review-prepare + before_script: + - source scripts/utils.sh + - install_api_client_dependencies_with_apk + - install_gitlab_gem + needs: + - job: compile-production-assets + artifacts: false + script: + - BUILD_TRIGGER_TOKEN=$REVIEW_APPS_BUILD_TRIGGER_TOKEN ./scripts/trigger-build cng + # When the job is manual, review-deploy is also manual and we don't want people + # to have to manually start the jobs in sequence, so we do it for them. + - '[ -z $CI_JOB_MANUAL ] || play_job "review-deploy"' .review-workflow-base: extends: @@ -53,45 +41,46 @@ review-cleanup: image: registry.gitlab.com/gitlab-org/gitlab-build-images:gitlab-helm3-kubectl1.14 variables: HOST_SUFFIX: "${CI_ENVIRONMENT_SLUG}" + REVIEW_APPS_DOMAIN: "temp.gitlab-review.app" # FIXME: using temporary domain DOMAIN: "-${CI_ENVIRONMENT_SLUG}.${REVIEW_APPS_DOMAIN}" - GITLAB_HELM_CHART_REF: "master" + GITLAB_HELM_CHART_REF: "v4.1.3" environment: name: review/${CI_COMMIT_REF_NAME} url: https://gitlab-${CI_ENVIRONMENT_SLUG}.${REVIEW_APPS_DOMAIN} on_stop: review-stop auto_stop_in: 48 hours -# Temporarily disabling review apps -#review-deploy: -# extends: -# - .review-workflow-base -# - .review:rules:mr-and-schedule-auto-if-frontend-manual-otherwise -# stage: review -# dependencies: [] -# resource_group: "review/${CI_COMMIT_REF_NAME}" -# before_script: -# - export GITLAB_SHELL_VERSION=$( environment_url.txt -# - source ./scripts/utils.sh -# - install_api_client_dependencies_with_apk -# - source scripts/review_apps/review-apps.sh -# script: -# - check_kube_domain -# - ensure_namespace -# - install_external_dns -# - download_chart -# - date -# - deploy || (display_deployment_debug && exit 1) -# # When the job is manual, review-qa-smoke is also manual and we don't want people -# # to have to manually start the jobs in sequence, so we do it for them. -# - '[ -z $CI_JOB_MANUAL ] || play_job "review-qa-smoke"' -# - '[ -z $CI_JOB_MANUAL ] || play_job "review-performance"' -# artifacts: -# paths: [environment_url.txt] -# expire_in: 2 days -# when: always +review-deploy: + extends: + - .review-workflow-base + - .review:rules:mr-and-schedule-auto-if-frontend-manual-otherwise + stage: review + dependencies: [] + resource_group: "review/${CI_COMMIT_REF_NAME}" + before_script: + - export GITLAB_SHELL_VERSION=$( environment_url.txt + - source ./scripts/utils.sh + - install_api_client_dependencies_with_apk + - source scripts/review_apps/review-apps.sh + script: + - check_kube_domain + - ensure_namespace + - install_external_dns + - download_chart + - date + - deploy || (display_deployment_debug && exit 1) + - disable_sign_ups + # When the job is manual, review-qa-smoke is also manual and we don't want people + # to have to manually start the jobs in sequence, so we do it for them. + - '[ -z $CI_JOB_MANUAL ] || play_job "review-qa-smoke"' + - '[ -z $CI_JOB_MANUAL ] || play_job "review-performance"' + artifacts: + paths: [environment_url.txt] + expire_in: 2 days + when: always .review-stop-base: extends: .review-workflow-base @@ -124,110 +113,110 @@ review-stop: script: - delete_release -# Temporarily disabling review apps -#.review-qa-base: -# extends: -# - .default-retry -# - .use-docker-in-docker -# image: registry.gitlab.com/gitlab-org/gitlab-build-images:gitlab-qa-alpine-ruby-2.6 -# stage: qa -# # This is needed so that manual jobs with needs don't block the pipeline. -# # See https://gitlab.com/gitlab-org/gitlab/-/issues/199979. -# dependencies: ["review-deploy"] -# variables: -# QA_ARTIFACTS_DIR: "${CI_PROJECT_DIR}/qa" -# QA_CAN_TEST_GIT_PROTOCOL_V2: "false" -# QA_DEBUG: "true" -# GITLAB_USERNAME: "root" -# GITLAB_PASSWORD: "${REVIEW_APPS_ROOT_PASSWORD}" -# GITLAB_ADMIN_USERNAME: "root" -# GITLAB_ADMIN_PASSWORD: "${REVIEW_APPS_ROOT_PASSWORD}" -# GITHUB_ACCESS_TOKEN: "${REVIEW_APPS_QA_GITHUB_ACCESS_TOKEN}" -# EE_LICENSE: "${REVIEW_APPS_EE_LICENSE}" -# before_script: -# - export QA_IMAGE="${CI_REGISTRY}/${CI_PROJECT_PATH}/gitlab-ee-qa:${CI_COMMIT_REF_SLUG}" -# - export CI_ENVIRONMENT_URL="$(cat environment_url.txt)" -# - echo "${CI_ENVIRONMENT_URL}" -# - echo "${QA_IMAGE}" -# - source scripts/utils.sh -# - install_api_client_dependencies_with_apk -# - gem install gitlab-qa --no-document ${GITLAB_QA_VERSION:+ --version ${GITLAB_QA_VERSION}} -# artifacts: -# paths: -# - ./qa/gitlab-qa-run-* -# expire_in: 7 days -# when: always -# -#review-qa-smoke: -# extends: -# - .review-qa-base -# - .review:rules:review-qa-smoke -# script: -# - gitlab-qa Test::Instance::Smoke "${QA_IMAGE}" "${CI_ENVIRONMENT_URL}" -# -#review-qa-all: -# extends: -# - .review-qa-base -# - .review:rules:mr-only-manual -# parallel: 5 -# script: -# - export KNAPSACK_REPORT_PATH=knapsack/master_report.json -# - export KNAPSACK_TEST_FILE_PATTERN=qa/specs/features/**/*_spec.rb -# - gitlab-qa Test::Instance::Any "${QA_IMAGE}" "${CI_ENVIRONMENT_URL}" -- --format RspecJunitFormatter --out tmp/rspec-${CI_JOB_ID}.xml --format html --out tmp/rspec.htm --color --format documentation -# -#review-performance: -# extends: -# - .default-retry -# - .review:rules:mr-and-schedule-auto-if-frontend-manual-otherwise -# image: -# name: sitespeedio/sitespeed.io:6.3.1 -# entrypoint: [""] -# stage: qa -# # This is needed so that manual jobs with needs don't block the pipeline. -# # See https://gitlab.com/gitlab-org/gitlab/-/issues/199979. -# dependencies: ["review-deploy"] -# before_script: -# - export CI_ENVIRONMENT_URL="$(cat environment_url.txt)" -# - echo "${CI_ENVIRONMENT_URL}" -# - mkdir -p gitlab-exporter -# - wget -O ./gitlab-exporter/index.js https://gitlab.com/gitlab-org/gl-performance/raw/master/index.js -# - mkdir -p sitespeed-results -# script: -# - /start.sh --plugins.add ./gitlab-exporter --outputFolder sitespeed-results "${CI_ENVIRONMENT_URL}" -# after_script: -# - mv sitespeed-results/data/performance.json performance.json -# artifacts: -# paths: -# - sitespeed-results/ -# reports: -# performance: performance.json -# expire_in: 31d -# -#parallel-spec-reports: -# extends: -# - .review:rules:mr-only-manual -# image: ruby:2.6-alpine -# stage: post-qa -# dependencies: ["review-qa-all"] -# variables: -# NEW_PARALLEL_SPECS_REPORT: qa/report-new.html -# BASE_ARTIFACT_URL: "${CI_PROJECT_URL}/-/jobs/${CI_JOB_ID}/artifacts/file/qa/" -# script: -# - apk add --update build-base libxml2-dev libxslt-dev && rm -rf /var/cache/apk/* -# - gem install nokogiri --no-document -# - cd qa/gitlab-qa-run-*/gitlab-* -# - ARTIFACT_DIRS=$(pwd |rev| awk -F / '{print $1,$2}' | rev | sed s_\ _/_) -# - cd - -# - '[[ -f $NEW_PARALLEL_SPECS_REPORT ]] || echo "{}" > ${NEW_PARALLEL_SPECS_REPORT}' -# - scripts/merge-html-reports ${NEW_PARALLEL_SPECS_REPORT} ${BASE_ARTIFACT_URL}${ARTIFACT_DIRS} qa/gitlab-qa-run-*/**/rspec.htm -# artifacts: -# when: always -# paths: -# - qa/report-new.html -# - qa/gitlab-qa-run-* -# reports: -# junit: qa/gitlab-qa-run-*/**/rspec-*.xml -# expire_in: 31d +.review-qa-base: + extends: + - .default-retry + - .use-docker-in-docker + image: registry.gitlab.com/gitlab-org/gitlab-build-images:gitlab-qa-alpine-ruby-2.6 + stage: qa + # This is needed so that manual jobs with needs don't block the pipeline. + # See https://gitlab.com/gitlab-org/gitlab/-/issues/199979. + dependencies: ["review-deploy"] + variables: + QA_ARTIFACTS_DIR: "${CI_PROJECT_DIR}/qa" + QA_CAN_TEST_GIT_PROTOCOL_V2: "false" + QA_DEBUG: "true" + GITLAB_USERNAME: "root" + GITLAB_PASSWORD: "${REVIEW_APPS_ROOT_PASSWORD}" + GITLAB_ADMIN_USERNAME: "root" + GITLAB_ADMIN_PASSWORD: "${REVIEW_APPS_ROOT_PASSWORD}" + GITHUB_ACCESS_TOKEN: "${REVIEW_APPS_QA_GITHUB_ACCESS_TOKEN}" + EE_LICENSE: "${REVIEW_APPS_EE_LICENSE}" + SIGNUP_DISABLED: "true" + before_script: + - export QA_IMAGE="${CI_REGISTRY}/${CI_PROJECT_PATH}/gitlab-ee-qa:${CI_COMMIT_REF_SLUG}" + - export CI_ENVIRONMENT_URL="$(cat environment_url.txt)" + - echo "${CI_ENVIRONMENT_URL}" + - echo "${QA_IMAGE}" + - source scripts/utils.sh + - install_api_client_dependencies_with_apk + - gem install gitlab-qa --no-document ${GITLAB_QA_VERSION:+ --version ${GITLAB_QA_VERSION}} + artifacts: + paths: + - ./qa/gitlab-qa-run-* + expire_in: 7 days + when: always + +review-qa-smoke: + extends: + - .review-qa-base + - .review:rules:review-qa-smoke + script: + - gitlab-qa Test::Instance::Smoke "${QA_IMAGE}" "${CI_ENVIRONMENT_URL}" + +review-qa-all: + extends: + - .review-qa-base + - .review:rules:mr-only-manual + parallel: 5 + script: + - export KNAPSACK_REPORT_PATH=knapsack/master_report.json + - export KNAPSACK_TEST_FILE_PATTERN=qa/specs/features/**/*_spec.rb + - gitlab-qa Test::Instance::Any "${QA_IMAGE}" "${CI_ENVIRONMENT_URL}" -- --format RspecJunitFormatter --out tmp/rspec-${CI_JOB_ID}.xml --format html --out tmp/rspec.htm --color --format documentation + +review-performance: + extends: + - .default-retry + - .review:rules:mr-and-schedule-auto-if-frontend-manual-otherwise + image: + name: sitespeedio/sitespeed.io:6.3.1 + entrypoint: [""] + stage: qa + # This is needed so that manual jobs with needs don't block the pipeline. + # See https://gitlab.com/gitlab-org/gitlab/-/issues/199979. + dependencies: ["review-deploy"] + before_script: + - export CI_ENVIRONMENT_URL="$(cat environment_url.txt)" + - echo "${CI_ENVIRONMENT_URL}" + - mkdir -p gitlab-exporter + - wget -O ./gitlab-exporter/index.js https://gitlab.com/gitlab-org/gl-performance/raw/master/index.js + - mkdir -p sitespeed-results + script: + - /start.sh --plugins.add ./gitlab-exporter --outputFolder sitespeed-results "${CI_ENVIRONMENT_URL}" + after_script: + - mv sitespeed-results/data/performance.json performance.json + artifacts: + paths: + - sitespeed-results/ + reports: + performance: performance.json + expire_in: 31d + +parallel-spec-reports: + extends: + - .review:rules:mr-only-manual + image: ruby:2.6-alpine + stage: post-qa + dependencies: ["review-qa-all"] + variables: + NEW_PARALLEL_SPECS_REPORT: qa/report-new.html + BASE_ARTIFACT_URL: "${CI_PROJECT_URL}/-/jobs/${CI_JOB_ID}/artifacts/file/qa/" + script: + - apk add --update build-base libxml2-dev libxslt-dev && rm -rf /var/cache/apk/* + - gem install nokogiri --no-document + - cd qa/gitlab-qa-run-*/gitlab-* + - ARTIFACT_DIRS=$(pwd |rev| awk -F / '{print $1,$2}' | rev | sed s_\ _/_) + - cd - + - '[[ -f $NEW_PARALLEL_SPECS_REPORT ]] || echo "{}" > ${NEW_PARALLEL_SPECS_REPORT}' + - scripts/merge-html-reports ${NEW_PARALLEL_SPECS_REPORT} ${BASE_ARTIFACT_URL}${ARTIFACT_DIRS} qa/gitlab-qa-run-*/**/rspec.htm + artifacts: + when: always + paths: + - qa/report-new.html + - qa/gitlab-qa-run-* + reports: + junit: qa/gitlab-qa-run-*/**/rspec-*.xml + expire_in: 31d danger-review: extends: diff --git a/.gitlab/ci/rules.gitlab-ci.yml b/.gitlab/ci/rules.gitlab-ci.yml index fbbb0391ec..f508bfa146 100644 --- a/.gitlab/ci/rules.gitlab-ci.yml +++ b/.gitlab/ci/rules.gitlab-ci.yml @@ -11,7 +11,7 @@ if: '$CI_PROJECT_NAME != "gitlab-foss" && $CI_PROJECT_NAME != "gitlab-ce" && $CI_PROJECT_NAME != "gitlabhq"' .if-default-refs: &if-default-refs - if: '$CI_COMMIT_REF_NAME == "master" || $CI_COMMIT_REF_NAME =~ /^[\d-]+-stable(-ee)?$/ || $CI_COMMIT_REF_NAME =~ /^\d+-\d+-auto-deploy-\d+$/ || $CI_COMMIT_REF_NAME =~ /^security\// || $CI_MERGE_REQUEST_IID || $CI_COMMIT_TAG' + if: '$CI_COMMIT_REF_NAME == "master" || $CI_COMMIT_REF_NAME =~ /^[\d-]+-stable(-ee)?$/ || $CI_COMMIT_REF_NAME =~ /^\d+-\d+-auto-deploy-\d+$/ || $CI_COMMIT_REF_NAME =~ /^security\// || $CI_MERGE_REQUEST_IID || $CI_COMMIT_TAG || $FORCE_GITLAB_CI' .if-master-refs: &if-master-refs if: '$CI_COMMIT_REF_NAME == "master"' @@ -40,6 +40,9 @@ .if-merge-request-title-update-caches: &if-merge-request-title-update-caches if: '$CI_MERGE_REQUEST_TITLE =~ /UPDATE CACHE/' +.if-merge-request-title-run-all-rspec: &if-merge-request-title-run-all-rspec + if: '$CI_MERGE_REQUEST_TITLE =~ /RUN ALL RSPEC/' + .if-security-merge-request: &if-security-merge-request if: '$CI_PROJECT_NAMESPACE == "gitlab-org/security" && $CI_MERGE_REQUEST_IID' @@ -71,6 +74,22 @@ - ".gitlab-ci.yml" - ".gitlab/ci/**/*" +.ci-build-images-patterns: &ci-build-images-patterns + - ".gitlab-ci.yml" + - ".gitlab/ci/build-images.gitlab-ci.yml" + +.ci-review-patterns: &ci-review-patterns + - ".gitlab-ci.yml" + - ".gitlab/ci/frontend.gitlab-ci.yml" + - ".gitlab/ci/build-images.gitlab-ci.yml" + - ".gitlab/ci/review.gitlab-ci.yml" + +.ci-qa-patterns: &ci-qa-patterns + - ".gitlab-ci.yml" + - ".gitlab/ci/frontend.gitlab-ci.yml" + - ".gitlab/ci/build-images.gitlab-ci.yml" + - ".gitlab/ci/qa.gitlab-ci.yml" + .yaml-patterns: &yaml-patterns - "**/*.yml" @@ -92,6 +111,21 @@ - "vendor/assets/**/*" - "{,ee/}{app/assets,app/helpers,app/presenters,app/views,locale,public,symbol}/**/*" +.backend-patterns: &backend-patterns + - "Gemfile{,.lock}" + - "Rakefile" + - "config.ru" + # List explicitly all the app/ dirs that are backend (i.e. all except app/assets). + - "{,ee/}{app/channels,app/controllers,app/finders,app/graphql,app/helpers,app/mailers,app/models,app/policies,app/presenters,app/serializers,app/services,app/uploaders,app/validators,app/views,app/workers}/**/*" + - "{,ee/}{bin,cable,config,db,lib}/**/*" + - "{,ee/}spec/**/*.rb" + - ".gitlab-ci.yml" + - ".gitlab/ci/**/*" + +.db-patterns: &db-patterns + - "{,ee/}{,spec/}{db,migrations}/**/*" + - "{,ee/}{,spec/}lib/{,ee/}gitlab/background_migration/**/*" + .backstage-patterns: &backstage-patterns - "Dangerfile" - "danger/**/*" @@ -197,6 +231,26 @@ - <<: *if-master-schedule-2-hourly - <<: *if-merge-request-title-update-caches +###################### +# Build images rules # +###################### +.build-images:rules:build-qa-image: + rules: + - <<: *if-not-ee + when: never + - <<: *if-dot-com-gitlab-org-and-security-merge-request + changes: *ci-build-images-patterns + - <<: *if-dot-com-gitlab-org-and-security-merge-request + changes: *code-qa-patterns + - <<: *if-dot-com-gitlab-org-schedule + +.build-images:rules:build-assets-image: + rules: + - <<: *if-not-canonical-namespace + when: never + - changes: *ci-build-images-patterns + - changes: *code-qa-patterns + #################### # Cache repo rules # #################### @@ -263,7 +317,7 @@ - <<: *if-not-canonical-namespace when: never - <<: *if-default-refs - changes: *code-backstage-qa-patterns + changes: *code-qa-patterns .frontend:rules:compile-test-assets: rules: @@ -273,11 +327,8 @@ rules: - <<: *if-not-ee when: never - - <<: *if-security-merge-request + - <<: *if-merge-request # Always run for MRs since `compile-test-assets as-if-foss` is either needed by `rspec foss-impact` or the `rspec * as-if-foss` jobs. changes: *code-backstage-qa-patterns - - <<: *if-merge-request-title-as-if-foss - - <<: *if-merge-request - changes: *ci-patterns .frontend:rules:default-frontend-jobs: rules: @@ -294,6 +345,15 @@ - <<: *if-merge-request changes: *ci-patterns +.frontend:rules:eslint-as-if-foss: + rules: + - <<: *if-not-ee + when: never + - <<: *if-merge-request-title-as-if-foss + when: never + - <<: *if-merge-request + changes: *frontend-patterns + .frontend:rules:ee-mr-and-master-only: rules: - <<: *if-not-ee @@ -341,9 +401,7 @@ rules: - <<: *if-not-ee when: never - - <<: *if-dot-com-gitlab-org-master - changes: *code-backstage-qa-patterns - when: on_success + - <<: *if-master-schedule-2-hourly ############ # QA rules # @@ -367,7 +425,7 @@ .qa:rules:package-and-qa: rules: - <<: *if-dot-com-gitlab-org-and-security-merge-request - changes: *ci-patterns + changes: *ci-qa-patterns allow_failure: true - <<: *if-dot-com-gitlab-org-and-security-merge-request changes: *qa-patterns @@ -382,24 +440,95 @@ ############### # Rails rules # ############### -.rails:rules:ee-and-foss: +.rails:rules:ee-and-foss-migration: rules: - - <<: *if-default-refs - changes: *code-backstage-patterns + - changes: *db-patterns + - <<: *if-merge-request-title-run-all-rspec + +.rails:rules:ee-and-foss-unit: + rules: + - changes: *backend-patterns + - <<: *if-merge-request-title-run-all-rspec + +.rails:rules:ee-and-foss-integration: + rules: + - changes: *backend-patterns + - <<: *if-merge-request-title-run-all-rspec + +.rails:rules:ee-and-foss-system: + rules: + - changes: *code-backstage-patterns + - <<: *if-merge-request-title-run-all-rspec + +.rails:rules:ee-and-foss-fast_spec_helper: + rules: + - changes: ["config/**/*"] + - <<: *if-merge-request-title-run-all-rspec .rails:rules:default-refs-code-backstage-qa: rules: - <<: *if-default-refs changes: *code-backstage-qa-patterns -.rails:rules:ee-only: +.rails:rules:ee-only-migration: rules: - <<: *if-not-ee when: never - - <<: *if-default-refs - changes: *code-backstage-patterns + - changes: *db-patterns + - <<: *if-merge-request-title-run-all-rspec -.rails:rules:as-if-foss: +.rails:rules:ee-only-unit: + rules: + - <<: *if-not-ee + when: never + - changes: *backend-patterns + - <<: *if-merge-request-title-run-all-rspec + +.rails:rules:ee-only-integration: + rules: + - <<: *if-not-ee + when: never + - changes: *backend-patterns + - <<: *if-merge-request-title-run-all-rspec + +.rails:rules:ee-only-system: + rules: + - <<: *if-not-ee + when: never + - changes: *code-backstage-patterns + - <<: *if-merge-request-title-run-all-rspec + +.rails:rules:as-if-foss-migration: + rules: + - <<: *if-not-ee + when: never + - <<: *if-security-merge-request + changes: *db-patterns + - <<: *if-merge-request-title-as-if-foss + - <<: *if-merge-request + changes: *ci-patterns + +.rails:rules:as-if-foss-unit: + rules: + - <<: *if-not-ee + when: never + - <<: *if-security-merge-request + changes: *backend-patterns + - <<: *if-merge-request-title-as-if-foss + - <<: *if-merge-request + changes: *ci-patterns + +.rails:rules:as-if-foss-integration: + rules: + - <<: *if-not-ee + when: never + - <<: *if-security-merge-request + changes: *backend-patterns + - <<: *if-merge-request-title-as-if-foss + - <<: *if-merge-request + changes: *ci-patterns + +.rails:rules:as-if-foss-system: rules: - <<: *if-not-ee when: never @@ -413,6 +542,7 @@ rules: - <<: *if-not-ee when: never + - <<: *if-merge-request-title-run-all-rspec - <<: *if-merge-request changes: *code-backstage-patterns - <<: *if-master-refs @@ -434,6 +564,27 @@ - <<: *if-merge-request changes: *code-backstage-patterns +.rails:rules:rspec-coverage: + rules: + - <<: *if-not-ee + when: never + - <<: *if-master-schedule-2-hourly + - <<: *if-merge-request-title-run-all-rspec + +.rails:rules:master-schedule-nightly--code-backstage: + rules: + - <<: *if-master-schedule-nightly + - <<: *if-merge-request + changes: [".gitlab/ci/rails.gitlab-ci.yml"] + +.rails:rules:master-schedule-nightly--code-backstage-ee-only: + rules: + - <<: *if-not-ee + when: never + - <<: *if-master-schedule-nightly + - <<: *if-merge-request + changes: [".gitlab/ci/rails.gitlab-ci.yml"] + ################## # Releases rules # ################## @@ -496,18 +647,12 @@ ################ # Review rules # ################ -.review:rules:build-qa-image: +.review:rules:review-build-cng: rules: - <<: *if-not-ee when: never - - <<: *if-dot-com-gitlab-org-and-security-merge-request - changes: *code-qa-patterns - - <<: *if-dot-com-gitlab-org-schedule - -.review:rules:review-build-cng: - rules: - <<: *if-dot-com-gitlab-org-merge-request - changes: *ci-patterns + changes: *ci-review-patterns - <<: *if-dot-com-gitlab-org-merge-request changes: *frontend-patterns - <<: *if-dot-com-gitlab-org-merge-request @@ -521,7 +666,7 @@ - <<: *if-not-ee when: never - <<: *if-dot-com-gitlab-org-merge-request - changes: *ci-patterns + changes: *ci-review-patterns - <<: *if-dot-com-gitlab-org-merge-request changes: *frontend-patterns allow_failure: true @@ -544,7 +689,7 @@ - <<: *if-not-ee when: never - <<: *if-dot-com-gitlab-org-merge-request - changes: *ci-patterns + changes: *ci-review-patterns - <<: *if-dot-com-gitlab-org-merge-request changes: *frontend-patterns allow_failure: true diff --git a/.gitlab/ci/setup.gitlab-ci.yml b/.gitlab/ci/setup.gitlab-ci.yml index b878bec375..26c7a2194c 100644 --- a/.gitlab/ci/setup.gitlab-ci.yml +++ b/.gitlab/ci/setup.gitlab-ci.yml @@ -9,6 +9,7 @@ cache gems: stage: test needs: ["setup-test-env"] variables: + BUNDLE_INSTALL_FLAGS: --with=production --with=development --with=test --jobs=2 --path=vendor --retry=3 --quiet SETUP_DB: "false" script: - bundle package --all --all-platforms diff --git a/.gitlab/ci/yaml.gitlab-ci.yml b/.gitlab/ci/yaml.gitlab-ci.yml index ab31dd5929..a650ee7e4b 100644 --- a/.gitlab/ci/yaml.gitlab-ci.yml +++ b/.gitlab/ci/yaml.gitlab-ci.yml @@ -4,11 +4,11 @@ lint-ci-gitlab: extends: - .default-retry - .yaml:rules - image: sdesbure/yamllint:latest + image: pipelinecomponents/yamllint:latest stage: test needs: [] variables: LINT_PATHS: .gitlab-ci.yml .gitlab/ci lib/gitlab/ci/templates changelogs script: - '[[ ! -d "ee/" ]] || export LINT_PATHS="$LINT_PATHS ee/changelogs"' - - yamllint $LINT_PATHS + - yamllint -f colored $LINT_PATHS diff --git a/.gitlab/issue_templates/Feature proposal.md b/.gitlab/issue_templates/Feature proposal.md index 45b5fc85cd..589310b4ce 100644 --- a/.gitlab/issue_templates/Feature proposal.md +++ b/.gitlab/issue_templates/Feature proposal.md @@ -43,7 +43,14 @@ https://about.gitlab.com/handbook/engineering/ux/ux-research-training/user-story ### Permissions and Security - + ### Documentation diff --git a/.gitlab/issue_templates/Security developer workflow.md b/.gitlab/issue_templates/Security developer workflow.md index 695f0167ad..7de137bd2e 100644 --- a/.gitlab/issue_templates/Security developer workflow.md +++ b/.gitlab/issue_templates/Security developer workflow.md @@ -9,19 +9,17 @@ Set the title to: `Description of the original issue` ## Prior to starting the security release work - [ ] Read the [security process for developers] if you are not familiar with it. -- [ ] Mark this [issue as related] to the Security Release tracking issue. You can find it on the topic of the `#releases` Slack channel. -- [ ] Run `scripts/security-harness` in your local repository to prevent accidentally pushing to any remote besides `gitlab.com/gitlab-org/security`. +- [ ] Mark this [issue as related] to the Security Release Tracking Issue. You can find it on the topic of the `#releases` Slack channel. - Fill out the [Links section](#links): - [ ] Next to **Issue on GitLab**, add a link to the `gitlab-org/gitlab` issue that describes the security vulnerability. - - [ ] Next to **Security Release tracking issue**, add a link to the security release issue that will include this security issue. ## Development +- [ ] Run `scripts/security-harness` in your local repository to prevent accidentally pushing to any remote besides `gitlab.com/gitlab-org/security`. - [ ] Create a new branch prefixing it with `security-`. - [ ] Create a merge request targeting `master` on `gitlab.com/gitlab-org/security` and use the [Security Release merge request template]. -- [ ] Follow the same [code review process]: Assign to a reviewer, then to a maintainer. -After your merge request has been approved according to our [approval guidelines], you're ready to prepare the backports +After your merge request has been approved according to our [approval guidelines] and by a team member of the AppSec team, you're ready to prepare the backports ## Backports @@ -41,7 +39,6 @@ After your merge request has been approved according to our [approval guidelines - [ ] Fill in any upgrade notes that users may need to take into account in the [details section](#details) - [ ] Add Yes/No and further details if needed to the migration and settings columns in the [details section](#details) - [ ] Add the nickname of the external user who found the issue (and/or HackerOne profile) to the Thanks row in the [details section](#details) -- [ ] Once your `master` MR is merged, comment on the original security issue with a link to that MR indicating the issue is fixed. ## Summary @@ -50,7 +47,6 @@ After your merge request has been approved according to our [approval guidelines | Description | Link | | -------- | -------- | | Issue on [GitLab](https://gitlab.com/gitlab-org/gitlab/issues) | #TODO | -| Security Release tracking issue | #TODO | ### Details @@ -64,7 +60,7 @@ After your merge request has been approved according to our [approval guidelines | Thanks | | | [security process for developers]: https://gitlab.com/gitlab-org/release/docs/blob/master/general/security/developer.md -[secpick documentation]: https://gitlab.com/gitlab-org/release/docs/blob/master/general/security/developer.md#secpick-script +[secpick documentation]: https://gitlab.com/gitlab-org/release/docs/-/blob/master/general/security/utilities/secpick_script.md [security Release merge request template]: https://gitlab.com/gitlab-org/security/gitlab/blob/master/.gitlab/merge_request_templates/Security%20Release.md [code review process]: https://docs.gitlab.com/ee/development/code_review.html [approval guidelines]: https://docs.gitlab.com/ee/development/code_review.html#approval-guidelines diff --git a/.gitlab/merge_request_templates/Documentation.md b/.gitlab/merge_request_templates/Documentation.md index 282e80d700..fb828b995b 100644 --- a/.gitlab/merge_request_templates/Documentation.md +++ b/.gitlab/merge_request_templates/Documentation.md @@ -45,9 +45,11 @@ All reviewers can help ensure accuracy, clarity, completeness, and adherence to **2. Technical Writer** -- [ ] Optional: Technical writer review. If not requested for this MR, must be scheduled post-merge. To request for this MR, assign the writer listed for the applicable [DevOps stage](https://about.gitlab.com/handbook/product/categories/#devops-stages). - - [ ] Add ~"Technical Writing" and `docs::` workflow label. +- [ ] Technical writer review. If not requested for this MR, must be scheduled post-merge. To request for this MR, assign the writer listed for the applicable [DevOps stage](https://about.gitlab.com/handbook/product/product-categories/#devops-stages). + - [ ] Ensure ~"Technical Writing", ~"documentation", and a `docs::` scoped label are added. - [ ] Add ~docs-only when the only files changed are under `doc/*`. + - [ ] Add ~"tw::doing" when starting work on the MR. + - [ ] Add ~"tw::finished" if Technical Writing team work on the MR is complete but it remains open. **3. Maintainer** diff --git a/.gitlab/merge_request_templates/Security Release.md b/.gitlab/merge_request_templates/Security Release.md index f852bebae9..bdf26041e6 100644 --- a/.gitlab/merge_request_templates/Security Release.md +++ b/.gitlab/merge_request_templates/Security Release.md @@ -13,25 +13,33 @@ See [the general developer security release guidelines](https://gitlab.com/gitla ## Developer checklist - [ ] **On "Related issues" section, write down the [GitLab Security] issue it belongs to (i.e. `Related to `).** -- [ ] Merge request targets `master`, or `X-Y-stable` for backports. +- [ ] Merge request targets `master`, or a versioned stable branch (`X-Y-stable-ee`). - [ ] Milestone is set for the version this merge request applies to. A closed milestone can be assigned via [quick actions]. - [ ] Title of this merge request is the same as for all backports. -- [ ] A [CHANGELOG entry](https://docs.gitlab.com/ee/development/changelog.html) is added without a `merge_request` value, with `type` set to `security` -- [ ] Assign to a reviewer and maintainer, per our [Code Review process]. +- [ ] A [CHANGELOG entry] is added without a `merge_request` value, with `type` set to `security` - [ ] For the MR targeting `master`: - - [ ] Ask for a non-blocking review from the AppSec team member associated to the issue in the [Canonical repository](https://gitlab.com/gitlab-org/gitlab). If you're unsure who to ping, ask on `#sec-appsec` Slack channel. + - [ ] Assign to a reviewer and maintainer, per our [Code Review process]. - [ ] Ensure it's approved according to our [Approval Guidelines]. -- [ ] Merge request _must not_ close the corresponding security issue, _unless_ it targets `master`. + - [ ] Ensure it's approved by an AppSec engineer. + - If you're unsure who should approve, find the AppSec engineer associated to the issue in the [Canonical repository], or ask #sec-appsec on Slack. + - Trigger the [`package-and-qa` build]. The docker image generated will be used by the AppSec engineer to validate the security vulnerability has been remediated. + - [ ] Merge request _must_ close the corresponding security issue. +- [ ] For a backport MR targeting a versioned stable branch (`X-Y-stable-ee`) + - [ ] Ensure it's approved by a maintainer. **Note:** Reviewer/maintainer should not be a Release Manager ## Maintainer checklist + - [ ] Correct milestone is applied and the title is matching across all backports - [ ] Assigned to `@gitlab-release-tools-bot` with passing CI pipelines and **when all backports including the MR targeting master are ready.** /label ~security [GitLab Security]: https://gitlab.com/gitlab-org/security/gitlab -[approval guidelines]: https://docs.gitlab.com/ee/development/code_review.html#approval-guidelines -[Code Review process]: https://docs.gitlab.com/ee/development/code_review.html [quick actions]: https://docs.gitlab.com/ee/user/project/quick_actions.html#quick-actions-for-issues-merge-requests-and-epics +[CHANGELOG entry]: https://docs.gitlab.com/ee/development/changelog.html +[Code Review process]: https://docs.gitlab.com/ee/development/code_review.html +[Approval Guidelines]: https://docs.gitlab.com/ee/development/code_review.html#approval-guidelines +[Canonical repository]: https://gitlab.com/gitlab-org/gitlab +[`package-and-qa` build]: https://docs.gitlab.com/ee/development/testing_guide/end_to_end/#using-the-package-and-qa-job diff --git a/.haml-lint.yml b/.haml-lint.yml index 33a960f7ef..4adb5e62f8 100644 --- a/.haml-lint.yml +++ b/.haml-lint.yml @@ -8,6 +8,7 @@ exclude: - 'spec/**/*' require: - './haml_lint/linter/no_plain_nodes.rb' + - './haml_lint/linter/documentation_links.rb' linters: AltText: @@ -26,6 +27,12 @@ linters: enabled: false max_consecutive: 2 + DocumentationLinks: + enabled: true + include: + - 'app/views/**/*.haml' + - 'ee/app/views/**/*.haml' + EmptyObjectReference: enabled: true diff --git a/.haml-lint_todo.yml b/.haml-lint_todo.yml index 5bd7dc1883..df515607d3 100644 --- a/.haml-lint_todo.yml +++ b/.haml-lint_todo.yml @@ -47,7 +47,6 @@ linters: - "app/views/admin/hooks/edit.html.haml" - "app/views/admin/logs/show.html.haml" - "app/views/admin/projects/_projects.html.haml" - - "app/views/admin/projects/show.html.haml" - "app/views/admin/requests_profiles/index.html.haml" - "app/views/admin/runners/_runner.html.haml" - "app/views/admin/runners/index.html.haml" @@ -57,7 +56,6 @@ linters: - "app/views/admin/spam_logs/_spam_log.html.haml" - "app/views/admin/spam_logs/index.html.haml" - "app/views/admin/system_info/show.html.haml" - - "app/views/admin/users/_access_levels.html.haml" - "app/views/admin/users/_form.html.haml" - "app/views/admin/users/_head.html.haml" - "app/views/admin/users/_profile.html.haml" @@ -280,7 +278,6 @@ linters: - "app/views/shared/_no_password.html.haml" - "app/views/shared/_ping_consent.html.haml" - "app/views/shared/_project_limit.html.haml" - - "app/views/shared/boards/components/_board.html.haml" - "app/views/shared/boards/components/_sidebar.html.haml" - "app/views/shared/boards/components/sidebar/_due_date.html.haml" - "app/views/shared/boards/components/sidebar/_labels.html.haml" @@ -358,7 +355,6 @@ linters: - "ee/app/views/notify/unapproved_merge_request_email.html.haml" - "ee/app/views/oauth/geo_auth/error.html.haml" - "ee/app/views/projects/commits/_mirror_status.html.haml" - - "ee/app/views/projects/jobs/_shared_runner_limit_warning.html.haml" - "ee/app/views/projects/merge_requests/_approvals_count.html.haml" - "ee/app/views/projects/merge_requests/widget/open/_geo.html.haml" - "ee/app/views/projects/mirrors/_mirrored_repositories_count.html.haml" @@ -372,7 +368,6 @@ linters: - "ee/app/views/projects/services/gitlab_slack_application/_slack_integration_form.html.haml" - "ee/app/views/projects/settings/slacks/edit.html.haml" - "ee/app/views/shared/_mirror_update_button.html.haml" - - "ee/app/views/shared/boards/components/_list_weight.html.haml" - "ee/app/views/shared/epic/_search_bar.html.haml" - "ee/app/views/shared/issuable/_approvals.html.haml" - "ee/app/views/shared/issuable/_board_create_list_dropdown.html.haml" diff --git a/.markdownlint.json b/.markdownlint.json index b4da68989f..253b7bd0c9 100644 --- a/.markdownlint.json +++ b/.markdownlint.json @@ -79,6 +79,7 @@ "Jira Cloud", "Jira Server", "jQuery", + "JSON", "JupyterHub", "Karma", "Kerberos", diff --git a/.prettierignore b/.prettierignore index c9b945ac96..ff8188bbda 100644 --- a/.prettierignore +++ b/.prettierignore @@ -3,6 +3,7 @@ /public/ /vendor/ /tmp/ +doc/api/graphql/reference/gitlab_schema.graphql # ignore stylesheets for now as this clashes with our linter *.css diff --git a/.rubocop.yml b/.rubocop.yml index ed17799478..bff2b7a32b 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -308,6 +308,18 @@ Gitlab/Union: - 'spec/**/*' - 'ee/spec/**/*' +API/GrapeAPIInstance: + Enabled: true + Include: + - 'lib/**/api/**/*.rb' + - 'ee/**/api/**/*.rb' + +API/GrapeArrayMissingCoerce: + Enabled: true + Include: + - 'lib/**/api/**/*.rb' + - 'ee/**/api/**/*.rb' + Cop/SidekiqOptionsQueue: Enabled: true Exclude: @@ -316,6 +328,9 @@ Cop/SidekiqOptionsQueue: Graphql/AuthorizeTypes: Enabled: true + Include: + - 'app/graphql/types/**/*' + - 'ee/app/graphql/types/**/*' Exclude: - 'spec/**/*.rb' - 'ee/spec/**/*.rb' @@ -450,10 +465,17 @@ Rails/TimeZone: - 'spec/models/**/*' - 'ee/app/models/**/*' - 'ee/spec/models/**/*' + - 'app/workers/**/*' + - 'spec/workers/**/*' + - 'ee/app/workers/**/*' + - 'ee/spec/workers/**/*' + # WIP: See https://gitlab.com/gitlab-org/gitlab/-/issues/220040 Rails/SaveBang: Enabled: true + AllowImplicitReturn: false + AllowedReceivers: ['ActionDispatch::TestRequest'] Include: - 'spec/**/*.rb' - 'ee/spec/**/*.rb' diff --git a/.rubocop_todo.yml b/.rubocop_todo.yml index 9e3a54fa7e..e54d970c67 100644 --- a/.rubocop_todo.yml +++ b/.rubocop_todo.yml @@ -303,6 +303,11 @@ Performance/Detect: RSpec/ContextWording: Enabled: false +# Offense count: 626 +# Cop supports --auto-correct. +RSpec/EmptyLineAfterLetBlock: + Enabled: false + # Offense count: 1121 # Cop supports --auto-correct. # Configuration parameters: EnforcedStyle. @@ -560,30 +565,6 @@ Style/GuardClause: Style/HashEachMethods: Enabled: false -# Offense count: 6 -# Cop supports --auto-correct. -Style/HashTransformKeys: - Exclude: - - 'ee/app/models/vulnerabilities/occurrence.rb' - - 'ee/spec/lib/gitlab/ci/templates/dependency_scanning_gitlab_ci_yaml_spec.rb' - - 'lib/banzai/filter/commit_trailers_filter.rb' - - 'lib/gitlab/analytics/cycle_analytics/stage_events.rb' - -# Offense count: 10 -# Cop supports --auto-correct. -Style/HashTransformValues: - Exclude: - - 'app/validators/addressable_url_validator.rb' - - 'config/initializers/action_dispatch_journey_formatter.rb' - - 'ee/app/helpers/compliance_management/compliance_framework/project_settings_helper.rb' - - 'ee/app/services/packages/nuget/metadata_extraction_service.rb' - - 'lib/gitlab/config/entry/configurable.rb' - - 'lib/gitlab/config/entry/node.rb' - - 'lib/gitlab/discussions_diff/file_collection.rb' - - 'lib/gitlab/error_tracking.rb' - - 'lib/rspec_flaky/flaky_examples_collection.rb' - - 'spec/lib/gitlab/database_importers/common_metrics/prometheus_metric_spec.rb' - # Offense count: 31 # Configuration parameters: AllowIfModifier. Style/IfInsideElse: @@ -639,12 +620,122 @@ Style/Next: Style/NumericLiteralPrefix: Enabled: false -# Offense count: 255 +# Offense count: 130 # Cop supports --auto-correct. # Configuration parameters: AutoCorrect, EnforcedStyle, IgnoredMethods. # SupportedStyles: predicate, comparison +# We use EnforcedStyle of comparison here due to it being better +# performing code as seen https://gitlab.com/gitlab-org/gitlab/-/merge_requests/36221#note_375659681 Style/NumericPredicate: - Enabled: false + EnforcedStyle: comparison + Exclude: + - 'spec/**/*' + - 'app/views/**/*' + - 'ee/app/views/**/*' + - 'app/controllers/concerns/issuable_collections.rb' + - 'app/controllers/concerns/paginated_collection.rb' + - 'app/helpers/graph_helper.rb' + - 'app/helpers/timeboxes_helper.rb' + - 'app/models/ci/pipeline.rb' + - 'app/models/ci/stage.rb' + - 'app/models/concerns/update_project_statistics.rb' + - 'app/models/merge_request_diff.rb' + - 'app/models/milestone.rb' + - 'app/models/network/graph.rb' + - 'app/models/postgresql/replication_slot.rb' + - 'app/models/project.rb' + - 'app/models/suggestion.rb' + - 'app/models/user.rb' + - 'app/serializers/merge_request_widget_entity.rb' + - 'app/services/boards/issues/move_service.rb' + - 'app/services/cohorts_service.rb' + - 'app/services/discussions/resolve_service.rb' + - 'app/services/issues/reorder_service.rb' + - 'app/services/notes/create_service.rb' + - 'app/services/packages/nuget/metadata_extraction_service.rb' + - 'app/services/packages/nuget/search_service.rb' + - 'app/services/projects/auto_devops/disable_service.rb' + - 'app/services/projects/update_pages_service.rb' + - 'app/services/search_service.rb' + - 'app/workers/admin_email_worker.rb' + - 'app/workers/gitlab/import/advance_stage.rb' + - 'config/initializers/validate_puma.rb' + - 'ee/app/controllers/security/projects_controller.rb' + - 'ee/app/graphql/mutations/instance_security_dashboard/remove_project.rb' + - 'ee/app/helpers/ee/timeboxes_helper.rb' + - 'ee/app/models/ci/minutes/quota.rb' + - 'ee/app/models/ee/ci/runner.rb' + - 'ee/app/models/geo_node_status.rb' + - 'ee/app/models/license.rb' + - 'ee/app/models/namespace_statistics.rb' + - 'ee/app/services/ee/issues/base_service.rb' + - 'ee/app/services/ee/merge_requests/approval_service.rb' + - 'ee/app/services/ee/quick_actions/target_service.rb' + - 'ee/app/services/elastic/indexing_control_service.rb' + - 'ee/app/services/geo/hashed_storage_migration_service.rb' + - 'ee/app/services/geo/prune_event_log_service.rb' + - 'ee/app/services/security/waf_anomaly_summary_service.rb' + - 'ee/app/services/update_build_minutes_service.rb' + - 'ee/app/workers/geo/container_repository_sync_dispatch_worker.rb' + - 'ee/app/workers/geo/file_download_dispatch_worker.rb' + - 'ee/app/workers/geo/registry_sync_worker.rb' + - 'ee/app/workers/geo/repository_shard_sync_worker.rb' + - 'ee/app/workers/geo/repository_verification/primary/shard_worker.rb' + - 'ee/lib/api/helpers/packages/conan/api_helpers.rb' + - 'ee/lib/ee/gitlab/auth/ldap/person.rb' + - 'ee/lib/ee/gitlab/background_migration/prune_orphaned_geo_events.rb' + - 'ee/lib/ee/gitlab/checks/push_rules/file_size_check.rb' + - 'ee/lib/ee/gitlab/geo_git_access.rb' + - 'ee/lib/gitlab/geo/fdw.rb' + - 'ee/lib/gitlab/geo/log_cursor/lease.rb' + - 'ee/lib/tasks/gitlab/elastic.rake' + - 'lib/api/entities/feature.rb' + - 'lib/api/helpers/pagination_strategies.rb' + - 'lib/backup/files.rb' + - 'lib/banzai/filter/gollum_tags_filter.rb' + - 'lib/bitbucket_server/paginator.rb' + - 'lib/declarative_policy/runner.rb' + - 'lib/gitlab/auth/ldap/adapter.rb' + - 'lib/gitlab/bare_repository_import/importer.rb' + - 'lib/gitlab/ci/config/external/context.rb' + - 'lib/gitlab/ci/reports/accessibility_reports_comparer.rb' + - 'lib/gitlab/cycle_analytics/summary/value.rb' + - 'lib/gitlab/cycle_analytics/summary_helper.rb' + - 'lib/gitlab/danger/teammate.rb' + - 'lib/gitlab/database.rb' + - 'lib/gitlab/database/connection_timer.rb' + - 'lib/gitlab/database/migration_helpers.rb' + - 'lib/gitlab/exclusive_lease.rb' + - 'lib/gitlab/exclusive_lease_helpers/sleeping_lock.rb' + - 'lib/gitlab/experimentation.rb' + - 'lib/gitlab/file_hook.rb' + - 'lib/gitlab/git/commit.rb' + - 'lib/gitlab/git/repository.rb' + - 'lib/gitlab/git/rugged_impl/blob.rb' + - 'lib/gitlab/gitaly_client.rb' + - 'lib/gitlab/github_import/user_finder.rb' + - 'lib/gitlab/hashed_storage/migrator.rb' + - 'lib/gitlab/import_export/command_line_util.rb' + - 'lib/gitlab/multi_collection_paginator.rb' + - 'lib/gitlab/polling_interval.rb' + - 'lib/gitlab/project_search_results.rb' + - 'lib/gitlab/seeder.rb' + - 'lib/gitlab/sidekiq_cluster.rb' + - 'lib/gitlab/sidekiq_daemon/memory_killer.rb' + - 'lib/gitlab/sidekiq_middleware/memory_killer.rb' + - 'lib/gitlab/sidekiq_status.rb' + - 'lib/gitlab/slash_commands/presenters/issue_show.rb' + - 'lib/gitlab/task_helpers.rb' + - 'lib/gitlab/untrusted_regexp.rb' + - 'lib/gitlab/utils.rb' + - 'lib/system_check/sidekiq_check.rb' + - 'lib/tasks/gitlab/gitaly.rake' + - 'lib/tasks/gitlab/snippets.rake' + - 'lib/tasks/gitlab/workhorse.rake' + - 'qa/qa/git/repository.rb' + - 'qa/qa/support/wait_for_requests.rb' + - 'ee/app/models/ee/project.rb' + - 'lib/gitlab/usage_data/topology.rb' # Offense count: 117 # Cop supports --auto-correct. @@ -690,18 +781,6 @@ Style/RedundantFreeze: Style/RedundantInterpolation: Enabled: false -# Offense count: 6 -# Cop supports --auto-correct. -Style/RedundantParentheses: - Exclude: - - 'ee/app/models/ee/merge_request.rb' - -# Offense count: 33 -# Cop supports --auto-correct. -# Configuration parameters: AllowMultipleReturnValues. -Style/RedundantReturn: - Enabled: false - # Offense count: 801 # Cop supports --auto-correct. Style/RedundantSelf: @@ -711,8 +790,8 @@ Style/RedundantSelf: # Cop supports --auto-correct. Style/RedundantSort: Exclude: - - 'ee/app/presenters/packages/nuget/search_results_presenter.rb' - - 'ee/spec/presenters/packages/nuget/search_results_presenter_spec.rb' + - 'app/presenters/packages/nuget/search_results_presenter.rb' + - 'spec/presenters/packages/nuget/search_results_presenter_spec.rb' # Offense count: 120 # Cop supports --auto-correct. @@ -769,25 +848,20 @@ Style/StringLiteralsInInterpolation: Style/SymbolProc: Enabled: false -# Offense count: 1478 +# Offense count: 2362 # Cop supports --auto-correct. # Configuration parameters: AllowImplicitReturn, AllowedReceivers. Rails/SaveBang: Exclude: - - 'ee/spec/controllers/groups/epic_issues_controller_spec.rb' - - 'ee/spec/controllers/groups/epic_links_controller_spec.rb' - - 'ee/spec/controllers/groups/epics_controller_spec.rb' - - 'ee/spec/controllers/groups/roadmap_controller_spec.rb' - - 'ee/spec/controllers/projects/environments_controller_spec.rb' - - 'ee/spec/controllers/projects/issues_controller_spec.rb' - - 'ee/spec/controllers/projects/merge_requests/creations_controller_spec.rb' - 'ee/spec/controllers/projects/merge_requests_controller_spec.rb' - - 'ee/spec/controllers/projects/service_desk_controller_spec.rb' - - 'ee/spec/controllers/projects/subscriptions_controller_spec.rb' - - 'ee/spec/controllers/projects/vulnerability_feedback_controller_spec.rb' - 'ee/spec/controllers/subscriptions_controller_spec.rb' + - 'ee/spec/factories/ci/job_artifacts.rb' + - 'ee/spec/factories/epics.rb' + - 'ee/spec/factories/licenses.rb' - 'ee/spec/factories/merge_requests.rb' + - 'ee/spec/features/admin/admin_users_spec.rb' - 'ee/spec/features/admin/geo/admin_geo_nodes_spec.rb' + - 'ee/spec/features/admin/licenses/admin_views_license_spec.rb' - 'ee/spec/features/boards/scoped_issue_board_spec.rb' - 'ee/spec/features/ci_shared_runner_warnings_spec.rb' - 'ee/spec/features/dashboards/operations_spec.rb' @@ -796,13 +870,19 @@ Rails/SaveBang: - 'ee/spec/features/merge_requests/user_views_all_merge_requests_spec.rb' - 'ee/spec/features/projects/members/invite_group_and_members_spec.rb' - 'ee/spec/features/projects/merge_requests/user_approves_merge_request_spec.rb' + - 'ee/spec/features/projects/mirror_spec.rb' - 'ee/spec/features/projects/new_project_spec.rb' - 'ee/spec/features/projects/settings/user_manages_approval_settings_spec.rb' - 'ee/spec/features/projects/settings/user_manages_members_spec.rb' - 'ee/spec/features/search/elastic/global_search_spec.rb' + - 'ee/spec/features/security/project/internal_access_spec.rb' + - 'ee/spec/features/security/project/public_access_spec.rb' - 'ee/spec/finders/epics_finder_spec.rb' + - 'ee/spec/finders/security/vulnerabilities_finder_spec.rb' - 'ee/spec/frontend/fixtures/analytics.rb' + - 'ee/spec/graphql/resolvers/vulnerabilities_resolver_spec.rb' - 'ee/spec/helpers/application_helper_spec.rb' + - 'ee/spec/helpers/ee/dashboard_helper_spec.rb' - 'ee/spec/helpers/ee/issues_helper_spec.rb' - 'ee/spec/initializers/fog_google_https_private_urls_spec.rb' - 'ee/spec/lib/analytics/merge_request_metrics_calculator_spec.rb' @@ -811,60 +891,84 @@ Rails/SaveBang: - 'ee/spec/lib/ee/gitlab/background_migration/move_epic_issues_after_epics_spec.rb' - 'ee/spec/lib/ee/gitlab/background_migration/populate_any_approval_rule_for_merge_requests_spec.rb' - 'ee/spec/lib/ee/gitlab/background_migration/populate_any_approval_rule_for_projects_spec.rb' + - 'ee/spec/lib/ee/gitlab/background_migration/prune_orphaned_geo_events_spec.rb' - 'ee/spec/lib/ee/gitlab/checks/push_rules/commit_check_spec.rb' - 'ee/spec/lib/ee/gitlab/ci/pipeline/quota/activity_spec.rb' - 'ee/spec/lib/gitlab/auth/ldap/access_spec.rb' - 'ee/spec/lib/gitlab/auth/o_auth/user_spec.rb' - 'ee/spec/lib/gitlab/auth/saml/user_spec.rb' + - 'ee/spec/lib/gitlab/background_migration/fix_orphan_promoted_issues_spec.rb' - 'ee/spec/lib/gitlab/elastic/search_results_spec.rb' - 'ee/spec/lib/gitlab/email/handler/ee/service_desk_handler_spec.rb' + - 'ee/spec/lib/gitlab/geo/cron_manager_spec.rb' - 'ee/spec/lib/gitlab/geo/jwt_request_decoder_spec.rb' - 'ee/spec/lib/gitlab/geo/oauth/session_spec.rb' - 'ee/spec/lib/gitlab/geo_spec.rb' - 'ee/spec/lib/gitlab/git_access_spec.rb' + - 'ee/spec/lib/gitlab/import_export/group/relation_factory_spec.rb' + - 'ee/spec/lib/gitlab/mirror_spec.rb' - 'ee/spec/mailers/notify_spec.rb' + - 'ee/spec/migrations/fix_any_approver_rule_for_projects_spec.rb' - 'ee/spec/migrations/geo/migrate_ci_job_artifacts_to_separate_registry_spec.rb' - 'ee/spec/migrations/geo/migrate_lfs_objects_to_separate_registry_spec.rb' + - 'ee/spec/migrations/schedule_merge_request_any_approval_rule_migration_spec.rb' - 'ee/spec/migrations/schedule_project_any_approval_rule_migration_spec.rb' - 'ee/spec/models/application_setting_spec.rb' - 'ee/spec/models/approval_merge_request_rule_spec.rb' + - 'ee/spec/models/approval_project_rule_spec.rb' - 'ee/spec/models/approval_state_spec.rb' - 'ee/spec/models/burndown_spec.rb' - 'ee/spec/models/ci/build_spec.rb' - 'ee/spec/models/ci/pipeline_spec.rb' - 'ee/spec/models/ci/subscriptions/project_spec.rb' + - 'ee/spec/models/concerns/approver_migrate_hook_spec.rb' - 'ee/spec/models/concerns/deprecated_approvals_before_merge_spec.rb' - 'ee/spec/models/concerns/elastic/note_spec.rb' + - 'ee/spec/models/ee/appearance_spec.rb' + - 'ee/spec/models/ee/ci/job_artifact_spec.rb' - 'ee/spec/models/ee/protected_branch_spec.rb' - 'ee/spec/models/ee/protected_ref_access_spec.rb' - 'ee/spec/models/ee/protected_ref_spec.rb' + - 'ee/spec/models/elasticsearch_indexed_namespace_spec.rb' + - 'ee/spec/models/environment_spec.rb' - 'ee/spec/models/epic_spec.rb' - 'ee/spec/models/geo/project_registry_spec.rb' - 'ee/spec/models/geo_node_spec.rb' - 'ee/spec/models/geo_node_status_spec.rb' + - 'ee/spec/models/gitlab_subscription_spec.rb' - 'ee/spec/models/group_spec.rb' - 'ee/spec/models/issue_spec.rb' - 'ee/spec/models/label_note_spec.rb' + - 'ee/spec/models/lfs_object_spec.rb' - 'ee/spec/models/license_spec.rb' - 'ee/spec/models/merge_request_spec.rb' + - 'ee/spec/models/merge_train_spec.rb' - 'ee/spec/models/operations/feature_flag_scope_spec.rb' - 'ee/spec/models/operations/feature_flag_spec.rb' - 'ee/spec/models/operations/feature_flags/strategy_spec.rb' - 'ee/spec/models/operations/feature_flags/user_list_spec.rb' + - 'spec/models/packages/package_spec.rb' + - 'ee/spec/models/project_ci_cd_setting_spec.rb' - 'ee/spec/models/project_services/github_service_spec.rb' - 'ee/spec/models/project_services/jenkins_service_spec.rb' - 'ee/spec/models/project_spec.rb' + - 'ee/spec/models/protected_environment_spec.rb' + - 'ee/spec/models/repository_spec.rb' - 'ee/spec/models/scim_identity_spec.rb' - 'ee/spec/models/scim_oauth_access_token_spec.rb' + - 'ee/spec/models/upload_spec.rb' - 'ee/spec/models/user_preference_spec.rb' - 'ee/spec/models/user_spec.rb' - 'ee/spec/models/visible_approvable_spec.rb' - 'ee/spec/models/vulnerabilities/feedback_spec.rb' - 'ee/spec/models/vulnerabilities/issue_link_spec.rb' + - 'ee/spec/policies/group_policy_spec.rb' + - 'ee/spec/policies/note_policy_spec.rb' + - 'ee/spec/policies/project_policy_spec.rb' - 'ee/spec/policies/protected_branch_policy_spec.rb' + - 'ee/spec/policies/vulnerabilities/feedback_policy_spec.rb' - 'ee/spec/presenters/audit_event_presenter_spec.rb' - 'ee/spec/presenters/epic_presenter_spec.rb' - - 'ee/spec/presenters/packages/conan/package_presenter_spec.rb' - 'ee/spec/requests/api/boards_spec.rb' - 'ee/spec/requests/api/epic_issues_spec.rb' - 'ee/spec/requests/api/epic_links_spec.rb' @@ -876,7 +980,6 @@ Rails/SaveBang: - 'ee/spec/requests/api/groups_spec.rb' - 'ee/spec/requests/api/issues_spec.rb' - 'ee/spec/requests/api/ldap_group_links_spec.rb' - - 'ee/spec/requests/api/maven_packages_spec.rb' - 'ee/spec/requests/api/merge_request_approval_rules_spec.rb' - 'ee/spec/requests/api/merge_request_approvals_spec.rb' - 'ee/spec/requests/api/merge_requests_spec.rb' @@ -885,9 +988,15 @@ Rails/SaveBang: - 'ee/spec/requests/api/protected_branches_spec.rb' - 'ee/spec/requests/api/scim_spec.rb' - 'ee/spec/requests/api/todos_spec.rb' + - 'ee/spec/requests/lfs_http_spec.rb' - 'ee/spec/services/approval_rules/finalize_service_spec.rb' + - 'ee/spec/services/approval_rules/update_service_spec.rb' + - 'ee/spec/services/ci/minutes/email_notification_service_spec.rb' + - 'ee/spec/services/ci/process_build_service_spec.rb' - 'ee/spec/services/ci/register_job_service_spec.rb' - 'ee/spec/services/ee/boards/issues/create_service_spec.rb' + - 'ee/spec/services/ee/boards/issues/list_service_spec.rb' + - 'ee/spec/services/ee/boards/lists/list_service_spec.rb' - 'ee/spec/services/ee/issuable/clone/attributes_rewriter_spec.rb' - 'ee/spec/services/ee/issuable/common_system_notes_service_spec.rb' - 'ee/spec/services/ee/issues/update_service_spec.rb' @@ -896,13 +1005,15 @@ Rails/SaveBang: - 'ee/spec/services/ee/notes/quick_actions_service_spec.rb' - 'ee/spec/services/ee/notification_service_spec.rb' - 'ee/spec/services/ee/resource_events/change_weight_service_spec.rb' - - 'ee/spec/services/elastic/index_record_service_spec.rb' - 'ee/spec/services/epic_links/create_service_spec.rb' + - 'ee/spec/services/epics/close_service_spec.rb' - 'ee/spec/services/epics/issue_promote_service_spec.rb' + - 'ee/spec/services/epics/reopen_service_spec.rb' - 'ee/spec/services/epics/tree_reorder_service_spec.rb' - 'ee/spec/services/epics/update_dates_service_spec.rb' - 'ee/spec/services/epics/update_service_spec.rb' - 'ee/spec/services/geo/blob_verification_secondary_service_spec.rb' + - 'ee/spec/services/geo/files_expire_service_spec.rb' - 'ee/spec/services/geo/metrics_update_service_spec.rb' - 'ee/spec/services/geo/registry_consistency_service_spec.rb' - 'ee/spec/services/geo/repository_verification_secondary_service_spec.rb' @@ -911,8 +1022,11 @@ Rails/SaveBang: - 'ee/spec/services/lfs/unlock_file_service_spec.rb' - 'ee/spec/services/merge_requests/approval_service_spec.rb' - 'ee/spec/services/merge_requests/remove_approval_service_spec.rb' + - 'ee/spec/services/merge_requests/update_blocks_service_spec.rb' - 'ee/spec/services/merge_trains/refresh_merge_request_service_spec.rb' - 'ee/spec/services/projects/after_rename_service_spec.rb' + - 'ee/spec/services/projects/import_export/export_service_spec.rb' + - 'ee/spec/services/projects/update_mirror_service_spec.rb' - 'ee/spec/services/projects/update_service_spec.rb' - 'ee/spec/services/quick_actions/interpret_service_spec.rb' - 'ee/spec/services/slash_commands/global_slack_handler_spec.rb' @@ -920,50 +1034,92 @@ Rails/SaveBang: - 'ee/spec/services/status_page/trigger_publish_service_spec.rb' - 'ee/spec/services/todo_service_spec.rb' - 'ee/spec/services/update_build_minutes_service_spec.rb' + - 'ee/spec/services/vulnerability_feedback/create_service_spec.rb' + - 'ee/spec/support/helpers/ee/geo_helpers.rb' + - 'ee/spec/support/protected_tags/access_control_shared_examples.rb' + - 'ee/spec/support/shared_examples/features/protected_branches_access_control_shared_examples.rb' + - 'ee/spec/support/shared_examples/finders/geo/framework_registry_finder_shared_examples.rb' + - 'ee/spec/support/shared_examples/graphql/geo/geo_registries_resolver_shared_examples.rb' - 'ee/spec/support/shared_examples/lib/analytics/common_merge_request_metrics_refresh_shared_examples.rb' - 'ee/spec/support/shared_examples/models/concerns/replicator_shared_examples.rb' + - 'ee/spec/support/shared_examples/models/elasticsearch_indexed_container_shared_examples.rb' + - 'ee/spec/support/shared_examples/models/geo_framework_registry_shared_examples.rb' - 'ee/spec/support/shared_examples/models/member_shared_examples.rb' - 'ee/spec/support/shared_examples/models/mentionable_shared_examples.rb' - 'ee/spec/support/shared_examples/policies/protected_environments_shared_examples.rb' + - 'ee/spec/support/shared_examples/requests/api/graphql/geo/registries_shared_examples.rb' - 'ee/spec/support/shared_examples/requests/api/project_approval_rules_api_shared_examples.rb' + - 'ee/spec/support/shared_examples/services/build_execute_shared_examples.rb' - 'ee/spec/support/shared_examples/services/issue_epic_shared_examples.rb' - 'ee/spec/views/layouts/nav/sidebar/_project.html.haml_spec.rb' - 'ee/spec/workers/adjourned_project_deletion_worker_spec.rb' + - 'ee/spec/workers/clear_shared_runners_minutes_worker_spec.rb' - 'ee/spec/workers/create_github_webhook_worker_spec.rb' - - 'ee/spec/workers/elastic_indexer_worker_spec.rb' + - 'ee/spec/workers/elastic_namespace_rollout_worker_spec.rb' - 'ee/spec/workers/geo/container_repository_sync_dispatch_worker_spec.rb' - 'ee/spec/workers/geo/file_download_dispatch_worker_spec.rb' + - 'ee/spec/workers/geo/prune_event_log_worker_spec.rb' + - 'ee/spec/workers/geo/registry_sync_worker_spec.rb' - 'ee/spec/workers/geo/repository_shard_sync_worker_spec.rb' - 'ee/spec/workers/repository_import_worker_spec.rb' - 'ee/spec/workers/update_all_mirrors_worker_spec.rb' - 'qa/qa/specs/features/browser_ui/3_create/repository/push_mirroring_over_http_spec.rb' - 'qa/qa/specs/features/ee/browser_ui/3_create/repository/pull_mirroring_over_http_spec.rb' + - 'qa/qa/specs/features/ee/browser_ui/3_create/repository/pull_mirroring_over_ssh_with_key_spec.rb' - 'spec/controllers/abuse_reports_controller_spec.rb' - 'spec/controllers/admin/impersonations_controller_spec.rb' - 'spec/controllers/admin/runners_controller_spec.rb' + - 'spec/controllers/admin/services_controller_spec.rb' - 'spec/controllers/boards/issues_controller_spec.rb' + - 'spec/controllers/groups/milestones_controller_spec.rb' - 'spec/controllers/groups/runners_controller_spec.rb' + - 'spec/controllers/groups/uploads_controller_spec.rb' + - 'spec/controllers/groups_controller_spec.rb' - 'spec/controllers/oauth/authorizations_controller_spec.rb' - 'spec/controllers/omniauth_callbacks_controller_spec.rb' - 'spec/controllers/profiles/emails_controller_spec.rb' - 'spec/controllers/profiles/notifications_controller_spec.rb' - 'spec/controllers/projects/artifacts_controller_spec.rb' + - 'spec/controllers/projects/cycle_analytics/events_controller_spec.rb' - 'spec/controllers/projects/cycle_analytics_controller_spec.rb' + - 'spec/controllers/projects/discussions_controller_spec.rb' + - 'spec/controllers/projects/forks_controller_spec.rb' + - 'spec/controllers/projects/group_links_controller_spec.rb' + - 'spec/controllers/projects/imports_controller_spec.rb' - 'spec/controllers/projects/issues_controller_spec.rb' - 'spec/controllers/projects/labels_controller_spec.rb' - 'spec/controllers/projects/merge_requests_controller_spec.rb' - 'spec/controllers/projects/milestones_controller_spec.rb' - 'spec/controllers/projects/notes_controller_spec.rb' - 'spec/controllers/projects/pipelines_controller_spec.rb' + - 'spec/controllers/projects/releases/evidences_controller_spec.rb' - 'spec/controllers/projects/runners_controller_spec.rb' + - 'spec/controllers/projects/starrers_controller_spec.rb' + - 'spec/controllers/projects/uploads_controller_spec.rb' - 'spec/controllers/projects_controller_spec.rb' + - 'spec/controllers/sent_notifications_controller_spec.rb' + - 'spec/controllers/sessions_controller_spec.rb' + - 'spec/controllers/users_controller_spec.rb' + - 'spec/factories/alert_management/alerts.rb' + - 'spec/factories/boards.rb' - 'spec/factories/ci/pipelines.rb' - 'spec/factories/design_management/designs.rb' - 'spec/factories/design_management/versions.rb' + - 'spec/factories/emails.rb' + - 'spec/factories/issues.rb' - 'spec/factories/labels.rb' + - 'spec/factories/merge_requests.rb' + - 'spec/factories/plans.rb' - 'spec/factories/projects.rb' + - 'spec/factories/services.rb' + - 'spec/factories/wiki_pages.rb' + - 'spec/factories_spec.rb' + - 'spec/features/admin/admin_appearance_spec.rb' + - 'spec/features/admin/admin_labels_spec.rb' - 'spec/features/admin/admin_mode/login_spec.rb' - 'spec/features/admin/admin_runners_spec.rb' + - 'spec/features/admin/admin_sees_project_statistics_spec.rb' + - 'spec/features/admin/admin_sees_projects_statistics_spec.rb' - 'spec/features/admin/admin_users_impersonation_tokens_spec.rb' - 'spec/features/admin/admin_users_spec.rb' - 'spec/features/boards/sidebar_spec.rb' @@ -975,6 +1131,7 @@ Rails/SaveBang: - 'spec/features/dashboard/projects_spec.rb' - 'spec/features/error_tracking/user_sees_error_index_spec.rb' - 'spec/features/groups/members/request_access_spec.rb' + - 'spec/features/issuables/close_reopen_report_toggle_spec.rb' - 'spec/features/issues/bulk_assignment_labels_spec.rb' - 'spec/features/issues/gfm_autocomplete_spec.rb' - 'spec/features/issues/issue_sidebar_spec.rb' @@ -989,30 +1146,45 @@ Rails/SaveBang: - 'spec/features/merge_request/user_posts_diff_notes_spec.rb' - 'spec/features/merge_request/user_resolves_diff_notes_and_discussions_resolve_spec.rb' - 'spec/features/merge_request/user_sees_cherry_pick_modal_spec.rb' + - 'spec/features/merge_request/user_sees_discussions_spec.rb' - 'spec/features/merge_request/user_sees_merge_widget_spec.rb' + - 'spec/features/merge_request/user_sees_versions_spec.rb' - 'spec/features/merge_requests/user_mass_updates_spec.rb' - 'spec/features/profiles/emails_spec.rb' - 'spec/features/profiles/password_spec.rb' - 'spec/features/profiles/personal_access_tokens_spec.rb' - 'spec/features/projects/features_visibility_spec.rb' + - 'spec/features/projects/fork_spec.rb' + - 'spec/features/projects/jobs/permissions_spec.rb' - 'spec/features/projects/jobs_spec.rb' - 'spec/features/projects/members/user_requests_access_spec.rb' - 'spec/features/projects/pages_lets_encrypt_spec.rb' - 'spec/features/projects/pages_spec.rb' + - 'spec/features/projects/pipelines/pipeline_spec.rb' + - 'spec/features/projects/pipelines/pipelines_spec.rb' - 'spec/features/projects/remote_mirror_spec.rb' - 'spec/features/projects/services/user_activates_slack_notifications_spec.rb' - 'spec/features/projects/settings/access_tokens_spec.rb' - 'spec/features/projects/show/user_sees_deletion_failure_message_spec.rb' - 'spec/features/projects/user_sees_sidebar_spec.rb' - 'spec/features/projects/wiki/user_updates_wiki_page_spec.rb' + - 'spec/features/projects/wiki/user_views_wiki_page_spec.rb' - 'spec/features/projects/wiki/users_views_asciidoc_page_with_includes_spec.rb' + - 'spec/features/runners_spec.rb' + - 'spec/features/security/project/internal_access_spec.rb' - 'spec/features/security/project/private_access_spec.rb' + - 'spec/features/security/project/public_access_spec.rb' - 'spec/features/users/login_spec.rb' - 'spec/features/users/show_spec.rb' + - 'spec/finders/admin/projects_finder_spec.rb' - 'spec/finders/autocomplete/move_to_project_finder_spec.rb' + - 'spec/finders/ci/pipelines_for_merge_request_finder_spec.rb' - 'spec/finders/group_descendants_finder_spec.rb' + - 'spec/finders/group_projects_finder_spec.rb' - 'spec/finders/issues_finder_spec.rb' + - 'spec/finders/joined_groups_finder_spec.rb' - 'spec/finders/merge_requests_finder_spec.rb' + - 'spec/finders/personal_projects_finder_spec.rb' - 'spec/finders/projects_finder_spec.rb' - 'spec/finders/uploader_finder_spec.rb' - 'spec/frontend/fixtures/issues.rb' @@ -1021,6 +1193,11 @@ Rails/SaveBang: - 'spec/graphql/mutations/merge_requests/set_wip_spec.rb' - 'spec/graphql/resolvers/boards_resolver_spec.rb' - 'spec/helpers/appearances_helper_spec.rb' + - 'spec/helpers/auto_devops_helper_spec.rb' + - 'spec/helpers/issuables_helper_spec.rb' + - 'spec/helpers/issues_helper_spec.rb' + - 'spec/helpers/members_helper_spec.rb' + - 'spec/helpers/notes_helper_spec.rb' - 'spec/helpers/profiles_helper_spec.rb' - 'spec/helpers/projects/alert_management_helper_spec.rb' - 'spec/helpers/projects_helper_spec.rb' @@ -1030,18 +1207,23 @@ Rails/SaveBang: - 'spec/lib/after_commit_queue_spec.rb' - 'spec/lib/backup/manager_spec.rb' - 'spec/lib/banzai/reference_parser/external_issue_parser_spec.rb' + - 'spec/lib/banzai/reference_redactor_spec.rb' + - 'spec/lib/gitlab/alerting/alert_spec.rb' - 'spec/lib/gitlab/analytics/cycle_analytics/records_fetcher_spec.rb' - 'spec/lib/gitlab/auth/ldap/user_spec.rb' - 'spec/lib/gitlab/auth/o_auth/user_spec.rb' - 'spec/lib/gitlab/auth/saml/user_spec.rb' - 'spec/lib/gitlab/auth_spec.rb' + - 'spec/lib/gitlab/authorized_keys_spec.rb' - 'spec/lib/gitlab/background_migration/backfill_deployment_clusters_from_deployments_spec.rb' - 'spec/lib/gitlab/background_migration/backfill_project_repositories_spec.rb' - 'spec/lib/gitlab/background_migration/backfill_project_settings_spec.rb' - 'spec/lib/gitlab/background_migration/backfill_push_rules_id_in_projects_spec.rb' + - 'spec/lib/gitlab/background_migration/backfill_snippet_repositories_spec.rb' - 'spec/lib/gitlab/background_migration/digest_column_spec.rb' - 'spec/lib/gitlab/background_migration/encrypt_columns_spec.rb' - 'spec/lib/gitlab/background_migration/fix_cross_project_label_links_spec.rb' + - 'spec/lib/gitlab/background_migration/fix_projects_without_project_feature_spec.rb' - 'spec/lib/gitlab/background_migration/fix_projects_without_prometheus_service_spec.rb' - 'spec/lib/gitlab/background_migration/fix_user_namespace_names_spec.rb' - 'spec/lib/gitlab/background_migration/fix_user_project_route_names_spec.rb' @@ -1056,82 +1238,130 @@ Rails/SaveBang: - 'spec/lib/gitlab/background_migration/populate_user_highest_roles_table_spec.rb' - 'spec/lib/gitlab/background_migration/recalculate_project_authorizations_spec.rb' - 'spec/lib/gitlab/background_migration/remove_restricted_todos_spec.rb' + - 'spec/lib/gitlab/background_migration/reset_merge_status_spec.rb' - 'spec/lib/gitlab/background_migration/set_confidential_note_events_on_services_spec.rb' - 'spec/lib/gitlab/background_migration/set_confidential_note_events_on_webhooks_spec.rb' - 'spec/lib/gitlab/bitbucket_server_import/importer_spec.rb' - 'spec/lib/gitlab/ci/ansi2json/style_spec.rb' + - 'spec/lib/gitlab/ci/status/build/common_spec.rb' - 'spec/lib/gitlab/cycle_analytics/base_event_fetcher_spec.rb' - 'spec/lib/gitlab/cycle_analytics/events_spec.rb' - 'spec/lib/gitlab/database/custom_structure_spec.rb' - 'spec/lib/gitlab/database/partitioning_migration_helpers/table_management_helpers_spec.rb' - 'spec/lib/gitlab/database_importers/self_monitoring/project/create_service_spec.rb' + - 'spec/lib/gitlab/email/handler/create_note_handler_spec.rb' + - 'spec/lib/gitlab/email/handler/unsubscribe_handler_spec.rb' + - 'spec/lib/gitlab/gfm/reference_rewriter_spec.rb' + - 'spec/lib/gitlab/git/object_pool_spec.rb' - 'spec/lib/gitlab/git/remote_mirror_spec.rb' + - 'spec/lib/gitlab/git/repository_spec.rb' - 'spec/lib/gitlab/git_access_spec.rb' + - 'spec/lib/gitlab/gitaly_client/object_pool_service_spec.rb' - 'spec/lib/gitlab/gitaly_client/repository_service_spec.rb' - 'spec/lib/gitlab/import_export/avatar_saver_spec.rb' + - 'spec/lib/gitlab/import_export/base/relation_factory_spec.rb' - 'spec/lib/gitlab/import_export/design_repo_restorer_spec.rb' - 'spec/lib/gitlab/import_export/fast_hash_serializer_spec.rb' - 'spec/lib/gitlab/import_export/fork_spec.rb' - 'spec/lib/gitlab/import_export/group/legacy_tree_saver_spec.rb' + - 'spec/lib/gitlab/import_export/group/relation_factory_spec.rb' + - 'spec/lib/gitlab/import_export/group/tree_saver_spec.rb' - 'spec/lib/gitlab/import_export/importer_spec.rb' - 'spec/lib/gitlab/import_export/lfs_restorer_spec.rb' - 'spec/lib/gitlab/import_export/lfs_saver_spec.rb' - 'spec/lib/gitlab/import_export/members_mapper_spec.rb' + - 'spec/lib/gitlab/import_export/project/relation_factory_spec.rb' - 'spec/lib/gitlab/import_export/project/tree_restorer_spec.rb' - 'spec/lib/gitlab/import_export/project/tree_saver_spec.rb' - 'spec/lib/gitlab/import_export/repo_restorer_spec.rb' - 'spec/lib/gitlab/import_export/saver_spec.rb' + - 'spec/lib/gitlab/import_export/snippet_repo_restorer_spec.rb' - 'spec/lib/gitlab/import_export/snippet_repo_saver_spec.rb' - 'spec/lib/gitlab/import_export/snippets_repo_restorer_spec.rb' - 'spec/lib/gitlab/import_export/snippets_repo_saver_spec.rb' - 'spec/lib/gitlab/import_export/uploads_manager_spec.rb' - 'spec/lib/gitlab/import_export/uploads_saver_spec.rb' - 'spec/lib/gitlab/import_export/wiki_restorer_spec.rb' + - 'spec/lib/gitlab/legacy_github_import/importer_spec.rb' + - 'spec/lib/gitlab/legacy_github_import/issue_formatter_spec.rb' + - 'spec/lib/gitlab/legacy_github_import/milestone_formatter_spec.rb' + - 'spec/lib/gitlab/legacy_github_import/pull_request_formatter_spec.rb' - 'spec/lib/gitlab/lets_encrypt/client_spec.rb' - 'spec/lib/gitlab/markdown_cache/active_record/extension_spec.rb' - 'spec/lib/gitlab/markdown_cache/redis/store_spec.rb' + - 'spec/lib/gitlab/middleware/go_spec.rb' - 'spec/lib/gitlab/shard_health_cache_spec.rb' + - 'spec/lib/mattermost/command_spec.rb' + - 'spec/lib/mattermost/session_spec.rb' + - 'spec/lib/mattermost/team_spec.rb' - 'spec/mailers/notify_spec.rb' + - 'spec/migrations/20190924152703_migrate_issue_trackers_data_spec.rb' - 'spec/migrations/20200122123016_backfill_project_settings_spec.rb' - 'spec/migrations/20200123155929_remove_invalid_jira_data_spec.rb' - 'spec/migrations/20200127090233_remove_invalid_issue_tracker_data_spec.rb' + - 'spec/migrations/20200130145430_reschedule_migrate_issue_trackers_data_spec.rb' + - 'spec/migrations/20200313203550_remove_orphaned_chat_names_spec.rb' - 'spec/migrations/20200406102120_backfill_deployment_clusters_from_deployments_spec.rb' + - 'spec/migrations/20200526115436_dedup_mr_metrics_spec.rb' + - 'spec/migrations/add_deploy_token_type_to_deploy_tokens_spec.rb' + - 'spec/migrations/add_incident_settings_to_all_existing_projects_spec.rb' - 'spec/migrations/add_unique_constraint_to_approvals_user_id_and_merge_request_id_spec.rb' - 'spec/migrations/backfill_and_add_not_null_constraint_to_released_at_column_on_releases_table_spec.rb' + - 'spec/migrations/backfill_imported_snippet_repositories_spec.rb' - 'spec/migrations/backfill_releases_table_updated_at_and_add_not_null_constraints_to_timestamps_spec.rb' + - 'spec/migrations/backfill_snippet_repositories_spec.rb' - 'spec/migrations/encrypt_plaintext_attributes_on_application_settings_spec.rb' + - 'spec/migrations/enqueue_reset_merge_status_second_run_spec.rb' + - 'spec/migrations/enqueue_reset_merge_status_spec.rb' - 'spec/migrations/fill_file_store_lfs_objects_spec.rb' - 'spec/migrations/fill_store_uploads_spec.rb' - 'spec/migrations/fix_null_type_labels_spec.rb' - 'spec/migrations/fix_pool_repository_source_project_id_spec.rb' + - 'spec/migrations/fix_projects_without_project_feature_spec.rb' + - 'spec/migrations/fix_projects_without_prometheus_services_spec.rb' - 'spec/migrations/fix_wrong_pages_access_level_spec.rb' - 'spec/migrations/insert_project_hooks_plan_limits_spec.rb' - 'spec/migrations/migrate_auto_dev_ops_domain_to_cluster_domain_spec.rb' + - 'spec/migrations/move_limits_from_plans_spec.rb' + - 'spec/migrations/populate_project_statistics_packages_size_spec.rb' - 'spec/migrations/schedule_link_lfs_objects_projects_spec.rb' + - 'spec/migrations/schedule_populate_merge_request_assignees_table_spec.rb' + - 'spec/migrations/seed_repository_storages_weighted_spec.rb' - 'spec/models/appearance_spec.rb' + - 'spec/models/application_record_spec.rb' - 'spec/models/application_setting_spec.rb' + - 'spec/models/ci/build_metadata_spec.rb' - 'spec/models/ci/build_spec.rb' + - 'spec/models/ci/build_trace_chunk_spec.rb' - 'spec/models/ci/instance_variable_spec.rb' + - 'spec/models/ci/legacy_stage_spec.rb' + - 'spec/models/ci/persistent_ref_spec.rb' - 'spec/models/ci/pipeline_spec.rb' - 'spec/models/ci/runner_spec.rb' - 'spec/models/clusters/applications/helm_spec.rb' + - 'spec/models/commit_spec.rb' + - 'spec/models/commit_status_spec.rb' - 'spec/models/concerns/avatarable_spec.rb' - 'spec/models/concerns/bulk_insertable_associations_spec.rb' - 'spec/models/concerns/cache_markdown_field_spec.rb' + - 'spec/models/concerns/case_sensitivity_spec.rb' - 'spec/models/concerns/featurable_spec.rb' - 'spec/models/concerns/issuable_spec.rb' - 'spec/models/concerns/mentionable_spec.rb' - 'spec/models/concerns/milestoneable_spec.rb' + - 'spec/models/concerns/milestoneish_spec.rb' - 'spec/models/concerns/routable_spec.rb' - 'spec/models/concerns/subscribable_spec.rb' - 'spec/models/concerns/token_authenticatable_spec.rb' - 'spec/models/container_repository_spec.rb' - 'spec/models/cycle_analytics/issue_spec.rb' - 'spec/models/cycle_analytics/plan_spec.rb' + - 'spec/models/cycle_analytics/production_spec.rb' - 'spec/models/deploy_keys_project_spec.rb' - 'spec/models/deploy_token_spec.rb' - 'spec/models/deployment_spec.rb' - 'spec/models/design_management/version_spec.rb' + - 'spec/models/diff_discussion_spec.rb' - 'spec/models/diff_note_spec.rb' - 'spec/models/email_spec.rb' - 'spec/models/environment_spec.rb' @@ -1143,7 +1373,9 @@ Rails/SaveBang: - 'spec/models/hooks/system_hook_spec.rb' - 'spec/models/hooks/web_hook_spec.rb' - 'spec/models/identity_spec.rb' + - 'spec/models/issue/metrics_spec.rb' - 'spec/models/issue_spec.rb' + - 'spec/models/jira_import_state_spec.rb' - 'spec/models/key_spec.rb' - 'spec/models/lfs_objects_project_spec.rb' - 'spec/models/member_spec.rb' @@ -1155,12 +1387,18 @@ Rails/SaveBang: - 'spec/models/note_spec.rb' - 'spec/models/notification_setting_spec.rb' - 'spec/models/pages_domain_spec.rb' + - 'spec/models/project_auto_devops_spec.rb' + - 'spec/models/project_feature_spec.rb' - 'spec/models/project_services/bamboo_service_spec.rb' + - 'spec/models/project_services/buildkite_service_spec.rb' - 'spec/models/project_services/jira_service_spec.rb' + - 'spec/models/project_services/packagist_service_spec.rb' - 'spec/models/project_services/pipelines_email_service_spec.rb' - 'spec/models/project_services/teamcity_service_spec.rb' - 'spec/models/project_spec.rb' - 'spec/models/project_team_spec.rb' + - 'spec/models/protectable_dropdown_spec.rb' + - 'spec/models/redirect_route_spec.rb' - 'spec/models/release_spec.rb' - 'spec/models/remote_mirror_spec.rb' - 'spec/models/resource_milestone_event_spec.rb' @@ -1171,47 +1409,77 @@ Rails/SaveBang: - 'spec/models/upload_spec.rb' - 'spec/models/user_preference_spec.rb' - 'spec/models/user_spec.rb' + - 'spec/models/user_status_spec.rb' - 'spec/models/wiki_page/meta_spec.rb' - 'spec/models/wiki_page_spec.rb' - 'spec/policies/ci/build_policy_spec.rb' - 'spec/policies/ci/pipeline_policy_spec.rb' - 'spec/policies/ci/pipeline_schedule_policy_spec.rb' + - 'spec/policies/group_policy_spec.rb' + - 'spec/policies/issue_policy_spec.rb' - 'spec/policies/merge_request_policy_spec.rb' - 'spec/policies/project_policy_spec.rb' + - 'spec/presenters/ci/build_runner_presenter_spec.rb' + - 'spec/presenters/ci/trigger_presenter_spec.rb' + - 'spec/presenters/packages/conan/package_presenter_spec.rb' + - 'spec/requests/api/access_requests_spec.rb' - 'spec/requests/api/boards_spec.rb' + - 'spec/requests/api/branches_spec.rb' + - 'spec/requests/api/ci/runner_spec.rb' + - 'spec/requests/api/commit_statuses_spec.rb' + - 'spec/requests/api/conan_packages_spec.rb' - 'spec/requests/api/deployments_spec.rb' - 'spec/requests/api/environments_spec.rb' + - 'spec/requests/api/go_proxy_spec.rb' - 'spec/requests/api/graphql/mutations/merge_requests/set_labels_spec.rb' - 'spec/requests/api/graphql/user_query_spec.rb' - 'spec/requests/api/graphql_spec.rb' + - 'spec/requests/api/group_import_spec.rb' - 'spec/requests/api/group_milestones_spec.rb' - 'spec/requests/api/internal/base_spec.rb' - 'spec/requests/api/issues/get_group_issues_spec.rb' + - 'spec/requests/api/issues/post_projects_issues_spec.rb' - 'spec/requests/api/jobs_spec.rb' - 'spec/requests/api/labels_spec.rb' + - 'spec/requests/api/maven_packages_spec.rb' - 'spec/requests/api/members_spec.rb' - 'spec/requests/api/merge_request_diffs_spec.rb' - 'spec/requests/api/merge_requests_spec.rb' + - 'spec/requests/api/notes_spec.rb' + - 'spec/requests/api/pages/internal_access_spec.rb' + - 'spec/requests/api/pages/private_access_spec.rb' + - 'spec/requests/api/pages/public_access_spec.rb' - 'spec/requests/api/pipeline_schedules_spec.rb' - 'spec/requests/api/project_import_spec.rb' + - 'spec/requests/api/project_milestones_spec.rb' - 'spec/requests/api/projects_spec.rb' - - 'spec/requests/api/runners_spec.rb' - 'spec/requests/api/snippets_spec.rb' - 'spec/requests/git_http_spec.rb' + - 'spec/requests/lfs_http_spec.rb' - 'spec/requests/profiles/notifications_controller_spec.rb' - 'spec/requests/projects/cycle_analytics_events_spec.rb' - 'spec/serializers/environment_status_entity_spec.rb' + - 'spec/serializers/issue_entity_spec.rb' + - 'spec/serializers/job_entity_spec.rb' - 'spec/serializers/merge_request_poll_widget_entity_spec.rb' - 'spec/serializers/merge_request_widget_entity_spec.rb' + - 'spec/services/auth/container_registry_authentication_service_spec.rb' + - 'spec/services/auto_merge/base_service_spec.rb' + - 'spec/services/auto_merge_service_spec.rb' + - 'spec/services/ci/create_cross_project_pipeline_service_spec.rb' - 'spec/services/ci/create_pipeline_service_spec.rb' - 'spec/services/ci/register_job_service_spec.rb' - 'spec/services/ci/retry_build_service_spec.rb' + - 'spec/services/ci/update_runner_service_spec.rb' + - 'spec/services/clusters/update_service_spec.rb' - 'spec/services/deployments/after_create_service_spec.rb' - 'spec/services/design_management/generate_image_versions_service_spec.rb' + - 'spec/services/discussions/resolve_service_spec.rb' - 'spec/services/draft_notes/destroy_service_spec.rb' - 'spec/services/emails/confirm_service_spec.rb' - 'spec/services/groups/destroy_service_spec.rb' - 'spec/services/groups/import_export/import_service_spec.rb' + - 'spec/services/issuable/bulk_update_service_spec.rb' - 'spec/services/issuable/clone/attributes_rewriter_spec.rb' - 'spec/services/issuable/common_system_notes_service_spec.rb' - 'spec/services/issues/close_service_spec.rb' @@ -1221,6 +1489,7 @@ Rails/SaveBang: - 'spec/services/issues/update_service_spec.rb' - 'spec/services/labels/promote_service_spec.rb' - 'spec/services/members/destroy_service_spec.rb' + - 'spec/services/merge_requests/build_service_spec.rb' - 'spec/services/merge_requests/conflicts/list_service_spec.rb' - 'spec/services/merge_requests/create_service_spec.rb' - 'spec/services/merge_requests/merge_service_spec.rb' @@ -1230,11 +1499,16 @@ Rails/SaveBang: - 'spec/services/milestones/destroy_service_spec.rb' - 'spec/services/milestones/promote_service_spec.rb' - 'spec/services/milestones/transfer_service_spec.rb' + - 'spec/services/notes/create_service_spec.rb' - 'spec/services/notification_recipients/build_service_spec.rb' - 'spec/services/notification_service_spec.rb' + - 'spec/services/packages/conan/create_package_file_service_spec.rb' - 'spec/services/projects/after_rename_service_spec.rb' + - 'spec/services/projects/autocomplete_service_spec.rb' - 'spec/services/projects/create_service_spec.rb' + - 'spec/services/projects/destroy_service_spec.rb' - 'spec/services/projects/fork_service_spec.rb' + - 'spec/services/projects/hashed_storage/base_attachment_service_spec.rb' - 'spec/services/projects/move_access_service_spec.rb' - 'spec/services/projects/move_project_group_links_service_spec.rb' - 'spec/services/projects/overwrite_project_service_spec.rb' @@ -1243,6 +1517,8 @@ Rails/SaveBang: - 'spec/services/projects/update_pages_service_spec.rb' - 'spec/services/projects/update_service_spec.rb' - 'spec/services/quick_actions/interpret_service_spec.rb' + - 'spec/services/reset_project_cache_service_spec.rb' + - 'spec/services/resource_events/change_milestone_service_spec.rb' - 'spec/services/system_hooks_service_spec.rb' - 'spec/services/system_note_service_spec.rb' - 'spec/services/system_notes/issuables_service_spec.rb' @@ -1250,42 +1526,71 @@ Rails/SaveBang: - 'spec/services/todos/destroy/confidential_issue_service_spec.rb' - 'spec/services/users/destroy_service_spec.rb' - 'spec/services/users/repair_ldap_blocked_service_spec.rb' + - 'spec/services/verify_pages_domain_service_spec.rb' + - 'spec/sidekiq/cron/job_gem_dependency_spec.rb' - 'spec/support/helpers/cycle_analytics_helpers.rb' + - 'spec/support/helpers/design_management_test_helpers.rb' - 'spec/support/helpers/jira_service_helper.rb' - 'spec/support/helpers/login_helpers.rb' - 'spec/support/helpers/notification_helpers.rb' - - 'spec/support/helpers/stub_action_cable_connection.rb' - 'spec/support/helpers/stub_object_storage.rb' - 'spec/support/migrations_helpers/cluster_helpers.rb' + - 'spec/support/migrations_helpers/namespaces_helper.rb' - 'spec/support/migrations_helpers/track_untracked_uploads_helpers.rb' + - 'spec/support/shared_contexts/email_shared_context.rb' - 'spec/support/shared_contexts/finders/group_projects_finder_shared_contexts.rb' - 'spec/support/shared_contexts/mailers/notify_shared_context.rb' + - 'spec/support/shared_examples/controllers/cache_control_shared_examples.rb' - 'spec/support/shared_examples/controllers/githubish_import_controller_shared_examples.rb' - 'spec/support/shared_examples/controllers/sessionless_auth_controller_shared_examples.rb' - 'spec/support/shared_examples/features/editable_merge_request_shared_examples.rb' - 'spec/support/shared_examples/lib/gitlab/ci/ci_trace_shared_examples.rb' + - 'spec/support/shared_examples/models/chat_slash_commands_shared_examples.rb' + - 'spec/support/shared_examples/models/cluster_application_helm_cert_shared_examples.rb' + - 'spec/support/shared_examples/models/concerns/limitable_shared_examples.rb' + - 'spec/support/shared_examples/models/concerns/timebox_shared_examples.rb' - 'spec/support/shared_examples/models/diff_note_after_commit_shared_examples.rb' - 'spec/support/shared_examples/models/member_shared_examples.rb' - 'spec/support/shared_examples/models/members_notifications_shared_example.rb' - 'spec/support/shared_examples/models/mentionable_shared_examples.rb' + - 'spec/support/shared_examples/models/project_latest_successful_build_for_shared_examples.rb' - 'spec/support/shared_examples/models/relative_positioning_shared_examples.rb' - 'spec/support/shared_examples/models/slack_mattermost_notifications_shared_examples.rb' - 'spec/support/shared_examples/models/update_project_statistics_shared_examples.rb' - 'spec/support/shared_examples/models/with_uploads_shared_examples.rb' + - 'spec/support/shared_examples/policies/project_policy_shared_examples.rb' - 'spec/support/shared_examples/quick_actions/issuable/issuable_quick_actions_shared_examples.rb' - 'spec/support/shared_examples/quick_actions/merge_request/merge_quick_action_shared_examples.rb' + - 'spec/support/shared_examples/requests/api/award_emoji_todo_shared_examples.rb' - 'spec/support/shared_examples/requests/api/boards_shared_examples.rb' + - 'spec/support/shared_examples/requests/api/custom_attributes_shared_examples.rb' + - 'spec/support/shared_examples/requests/api/nuget_packages_shared_examples.rb' + - 'spec/support/shared_examples/requests/api/pypi_packages_shared_examples.rb' + - 'spec/support/shared_examples/serializers/note_entity_shared_examples.rb' - 'spec/support/shared_examples/services/common_system_notes_shared_examples.rb' - 'spec/support/shared_examples/services/issuable_shared_examples.rb' + - 'spec/support/shared_examples/services/wiki_pages/destroy_service_shared_examples.rb' - 'spec/tasks/gitlab/web_hook_rake_spec.rb' + - 'spec/uploaders/file_uploader_spec.rb' + - 'spec/uploaders/object_storage_spec.rb' + - 'spec/views/notify/changed_milestone_email.html.haml_spec.rb' - 'spec/views/projects/imports/new.html.haml_spec.rb' - 'spec/views/projects/merge_requests/show.html.haml_spec.rb' - 'spec/views/shared/_label_row.html.haml_spec.rb' + - 'spec/workers/concerns/project_export_options_spec.rb' + - 'spec/workers/gitlab/import/stuck_project_import_jobs_worker_spec.rb' + - 'spec/workers/gitlab/jira_import/stuck_jira_import_jobs_worker_spec.rb' - 'spec/workers/migrate_external_diffs_worker_spec.rb' - 'spec/workers/namespaceless_project_destroy_worker_spec.rb' + - 'spec/workers/namespaces/root_statistics_worker_spec.rb' - 'spec/workers/pages_domain_verification_worker_spec.rb' + - 'spec/workers/process_commit_worker_spec.rb' + - 'spec/workers/propagate_integration_worker_spec.rb' - 'spec/workers/propagate_service_template_worker_spec.rb' - 'spec/workers/remove_unreferenced_lfs_objects_worker_spec.rb' + - 'spec/workers/repository_check/single_repository_worker_spec.rb' - 'spec/workers/repository_cleanup_worker_spec.rb' - 'spec/workers/repository_import_worker_spec.rb' - 'spec/workers/repository_update_remote_mirror_worker_spec.rb' + - 'spec/workers/stuck_ci_jobs_worker_spec.rb' + - 'spec/workers/update_head_pipeline_for_merge_request_worker_spec.rb' diff --git a/CHANGELOG.md b/CHANGELOG.md index 1406bc720e..6055223dfd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,83 +2,65 @@ documentation](doc/development/changelog.md) for instructions on adding your own entry. -## 13.1.6 (2020-08-05) +## 13.2.3 (2020-08-05) - No changes. -## 13.1.5 (2020-07-23) +## 13.2.2 (2020-07-29) -- No changes. +### Fixed (3 changes) -## 13.1.4 (2020-07-09) +- Coerce repository_storages_weighted, removes repository_storages. !36376 +- Fix JiraImportUsersInput startAt field. !37492 +- Provide better git error message when the user is unconfirmed. !37944 + +### Changed (1 change) + +- Skip mass unconfirming users when send_user_confirmation_email setting is off. !38024 + + +## 13.2.1 (2020-07-23) ### Fixed (4 changes) -- Fix path conflict for Ghost on UpdateRoutesForLostAndFoundGroupAndOrphanedProjects. !35425 -- Fix existing repository_storages_weighted migrations. !35814 -- Fix error 500s creating new projects due to empty weights. !35829 -- Fix gitlab:*:check Rake tasks. !35944 +- Resolve Pasting an image into a comment also uploads design. !37171 +- Fix merge request approvals for EE without a license. !37246 +- Fix local Tiller not being default-enabled on the frontend. !37494 +- Fix missing path for avatars of bots. !37671 + +### Changed (2 changes) + +- Limit database deprecation notice window. !37009 +- Shorten 'enable LFS' manage for design management. !37385 -## 13.1.3 (2020-07-06) +## 13.2.0 (2020-07-22) -- No changes. +### Security (3 changes) -## 13.1.2 (2020-07-01) +- Unconfirm wrongfully verified email addresses and user accounts. !35492 +- Make logrotate run as git user for source installations. !35519 +- Replace misleading text in re-confirmation emails. !36634 -### Security (18 changes) - -- Update xterm js dependency to latest stable 3.x version. -- Do not show activity for users with private profiles. -- Fix stored XSS in markdown renderer. -- Upgrade swagger-ui to solve XSS issues. -- Fix group deploy token API authorizations. -- Check access when sending TODOs related to merge requests. -- Change from hybrid to JSON cookies serializer. -- Prevent XSS in group name validations. -- Disable caching for wiki attachments. -- Disable Github Importer API by settings. -- Fix null byte error in upload path. -- Update permissions for time tracking endpoints. -- Add snippet repository validation after bundle import. -- Update Kaminari gem. -- Fix note author name rendering. -- Sanitize bitbucket repo urls to mitigate XSS. -- Stored XSS on the Error Tracking page. -- Fix security issue when rendering issuable. - - -## 13.1.1 (2020-06-23) - -### Fixed (4 changes) - -- Fix missing templating vars set from URL in metrics dashboard. !34668 -- Fix edit status dropdown overflow. !34847 -- Load user before logging git http-requests. !34923 -- Do not mask key comments for DeployKeys. !35014 - -### Added (1 change) - -- Periodically recompute project authorizations. !34071 - - -## 13.1.0 (2020-06-22) - -### Removed (4 changes, 2 of them are from the community) +### Removed (7 changes, 2 of them are from the community) - Remove deprecated dashboard & group milestone pages. !13237 - Removed UltraAuth integration for OmniAuth. !29330 (Kartikey Tanna) - Remove all search autocomplete for groups/projects/other. !31187 - Remove temporary datepicker position fix as it is no longer required. !31836 (Arun Kumar Mohan) +- Remove the ability to customize the title and description of some integrations (Bugzilla, Custom Issue Tracker, Redmine, and YouTrack). !33298 +- Drop deprecated **_ANALYZER_IMAGE_PREFIX. !34325 +- Remove Internet Explorer 11 specific polyfills. !36830 -### Fixed (154 changes, 57 of them are from the community) +### Fixed (300 changes, 79 of them are from the community) +- Remove broken hyperlink from close and reopen button. !22220 (Lee Tickett) - Fix 'Active' checkbox text in Pipeline Schedule form to be a label. !27054 (Jonston Chan) - Fix back button when switching MR tabs. !29862 (Lee Tickett) - Remove ability to scroll Issue while in Design View. !29881 - Fix merge request note label URLs. !30428 (Lee Tickett) - Fix default path when creating project from group template. !30597 (Lee Tickett) -- Group authorization refresh to consider shared groups. !31204 +- Fixed issue (#198424) that prevented k8s authentication with intermediate certificates. !31254 (Abdelrahman Mohamed) - Fix group transfer service to deny moving group to its subgroup. !31495 (Abhisek Datta) - Fix issuable listings with any label filter. !31729 - Move prepend to last in ee-app-services. !31838 (Rajendra Kadam) @@ -135,11 +117,13 @@ entry. - Don't display confidential note icon on confidential issue public notes. !32571 - Update container expiration policy database defaults. !32600 - Fix rendering of emojis in status tooltips. !32604 +- Remove `:prevent_closing_blocked_issues` feature flag. !32630 (Lee Tickett) - Hid copy contents button when blob has rendering error. !32632 - Avoid refresh to show endedAt after mutation. !32636 - Fix for metrics creation when saving MR. !32668 - Skip the individual JIRA issues if failed to import vs failing the whole batch. !32673 - Hide "Import from Jira" option from non-entitled users. !32685 +- Allow special characters in dashboard path. !32714 - Fix broken help link on operations settings page. !32722 - Allow different in bulk editing issues. !32734 - Fix whitespace changes overgrowing the diff container. !32774 @@ -166,11 +150,13 @@ entry. - Deduplicate URL parameters when requesting merge request diffs which causes diffs load to fail. !33117 - Fix tabbing through form fields in projects/new flow. !33209 - Fix incorrect commit search results returned when searching with ref. !33216 +- Issue list page shows correct status for moved re-opened issues. !33238 - Fix NoMethodError by using the correct method to report exceptions to Sentry. !33260 - Fix KaTeX font paths. !33338 - Resolve Fix Incomplete Kubernetes Cluster Status List. !33344 - Fix auto-merge not running after discussions resolved. !33371 - Fix bug in snippets updating only file_name or content. !33375 +- Resolve "WebIDE displays blank file incorrectly". !33391 - Fix invisible emoji modal on Set Status form when clicked the second time. !33398 - vertically center action icon in the CI pipeline. !33427 (Nathanael Weber) - Wrap auto merge parameters update in database transaction. !33471 @@ -191,45 +177,191 @@ entry. - Fix linking alerts to created issues for the Generic alerts intergration. !33647 - Resolve spacing ux debt on Release assets form field. !33684 - Fix pagination link header. !33714 (Max Wittig) -- Fix Value Stream Analytics summary when using non-english locale. !33717 -- Fix bug with variable substitution in alerts. !33772 +- When clicking multiple times to leave a single comment, the input field should remain focused. !33742 - Allow wiki pages with +<> characters in their title to be saved. !33803 - Fix force_remove_source_branch not working in API. !33804 - Fix prometheus alerts not being automatically created. !33806 - Fix pagination for resource label events. !33821 -- Fix relative URL root in wiki_base_path. !33841 +- Fix pagination for resource milestone events api. !33845 - Return code navigation path for nil diff_refs. !33850 - Record audit event when an admin creates a new SSH Key for a user via the API. !33859 (Rajendra Kadam) - Do not create duplicate issues for exising Alert Management alerts. !33860 - Add link text to collapsed left sidebar links for screen readers. !33866 - Update text in error tracking list error message. !33872 -- Adjust wrong column reference for ResetMergeStatus (background job). !33899 +- Ensure that alerts are shown when prometheus service is active. !33928 - Fixed dashboard YAML file validaiton for files which do not contain object as root element. !33935 - Fix design note scrolling. !33939 +- Updated the Android CI Script. !34007 (s-ayush2903) - Update validates_hostname gem with support for more TLDs. !34010 +- Remove default "archived" parameter value from Groups API's projects endpoint. !34018 (Justin Sleep) +- Fix approval rule type when project rule has users/groups. !34026 - Update wording of addMultipleToDiscussionWarning. !34088 - Show all storages in settings. !34093 - Set author as nullable in snippet GraphQL Type. !34135 - Fix rendering of very long paths in merge request file tree. !34153 +- Fix 500 errors and false positive warnings during metrics dashboard validation. !34166 - Remove not null constraint from events tables. !34190 - Ensure we always generate a valid wiki event URL. !34191 - Send information about attached files to the GraphQL mutation. !34221 - Update issue limits template to use minutes. !34254 - Add route for the lost-and-found group and update the route of orphaned projects. !34285 +- Make markdown textarea buttons tab accessible. !34300 - GraphQL - properly handle pagination of millisecond-precision timestamps. !34352 - Fix 500 error in BlobController#delete. !34367 - Updated Auto DevOps with a fix to delete PostgreSQL PVC on environment cleanup, a fix for multiline K8S_SECRET variables, updated Helm to 2.16.7 and glibc to 2.31. !34399 (verenion) +- Updates Helm version to 2.16.7, which has some fixes. !34452 +- Align "External" access level row in the user admin form. !34455 (Eduardo Sanz @esanzgar) - Fix issues with scroll on iOS / iPad OS. !34486 +- Add environment_scope filter to ci-variables API. !34490 - Fix order of integrations to be sorted alphabetically. !34501 - Fix undefined method error. !34522 +- Fix static site editor raw (has front matter) <-> body (lacks front matter) content changes sync. !34523 - Use Keys::DestroyService for deleting an SSH key when an admin deletes a key via the API. !34535 (Rajendra Kadam) - Removed default artifact name for Terraform template. !34557 -- Footer system message fix. +- Record audit event when a user creates a new SSH Key for themselves via the API. !34645 (Rajendra Kadam) +- Restrict alert assignee user search to current project in alert management details. !34649 +- Limit alert assignment to only users who can read alerts. !34681 +- Use Keys::DestroyService for deleting an SSH key when a user deletes a key via the API. !34718 (Rajendra Kadam) +- Use GpgKeys::CreateService when an admin creates a new GPG key for a user. !34737 (Rajendra Kadam) +- Sort code coverage graph in ascending order. !34750 +- Fix Issue sticky title URL hash offset. !34764 +- Fix broken todo GraphQL API filtering when filtering by type. !34790 +- Use GpgKeys::CreateService when a user creates GPG keys for themselves via the API. !34817 (Rajendra Kadam) +- Expand healtchecks `500`s when DB is not available. !34844 +- Assign plan_id when building a new plan limit. !34845 +- Fix 500 errors with filenames that contain glob characters. !34864 +- Avoid updating snippet content when snippet_files content is not present. !34865 +- Ensure original repository is archived after a shard move. !34895 +- Fix issue suggestion text color on dark mode. !34899 +- Enclose `release-cli` steps in an array. !34913 +- Add DestroyService for GPG keys and use for deleting GPG keys via API. !34935 (Rajendra Kadam) +- Resolve Misleading message displays when MR request is first submitted. !34958 +- Cancel review app deployment when MR is merged. !34960 +- Add RSpecs for Gitlab::Emoji module. !34980 (Rajendra Kadam) +- Fix directory and last commit not loading for some filenames. !34985 +- Fix confidential warning not showing the issuable type. !34988 +- Fixed mermaid not rendering when switching diff tabs. !35023 +- Use GpgKeys::DestroyService when a user deletes GPG keys for themselves via the API. !35033 (Rajendra Kadam) +- Fix alignment of navigation theme options. !35041 +- Support fenced code blocks in Atlassian Document Format converter. !35065 +- Fixed size limit for too large snippets. !35076 +- Don't include changes in webhook payload when old associations are empty. !35158 +- Fix release assets for Guest users of private projects. !35166 +- Properly set CI_DEPLOY_FREEZE variable in pipelines. !35226 +- Move 'Delete comment' button to bottom of 'More actions' list. !35237 +- Only run DAST job if Kubernetes active. !35259 +- Add instrumentation to Gitaly streamed responses. !35283 +- Fix pages_url for projects with mixed case path. !35300 +- Ensure .git/config is updated for forks. !35305 +- Defer updating .git/config for imported projects. !35308 +- Redirect wiki edit actions for missing pages. !35350 +- Fix styling bug for disabled merge button. !35365 +- Static Site Editor can’t be opened in projects belonging to a subgroup. !35378 +- Resolve timeout in admin/jobs. !35385 +- Fix job log text color in dark mode. !35387 +- Minor UI fixes for Issue page in dark mode. !35395 +- Disable ILM on ELK vendor yaml. !35398 +- Improve alert list spacing. !35400 +- Fix path conflict for Ghost on UpdateRoutesForLostAndFoundGroupAndOrphanedProjects. !35425 +- Add tiller.log to Auto DevOps deployment job artifacts when AUTO_DEVOPS_DEPLOY_DEBUG is set. !35458 +- Resolve [Un]Assign Issue to/from Comment Author Action Visibility. !35459 +- Add email and email_verified claims to OAuth ID token. !35468 (André Hänsel) +- Make ProjectUpdateRepositoryStorageWorker idempotent. !35483 +- Project bot users should always have their emails confirmed by default. !35498 +- Only show open Merge Requests in Web IDE. !35514 +- Remove Edit dashboard button from self monitoring dashboard. !35521 +- Guard against data integrity issues when canceling review app jobs. !35555 +- Use FLOAT_TYPE for storage limit. !35559 +- Enforce prometheus metric uniqueness across project scope. !35566 +- Use full version instead of short version for Sentry Error Release links. !35623 +- Propagate error on FF pre-receive failure. !35633 +- Support multiple mailboxes incoming email check. !35639 +- Fix Profile Applications page to be shown in correct locale. !35661 +- Fix 404 when importing project with developer permission. !35667 +- Fix incorrect text escaping in the Static Site Editor. !35671 +- Use the user's preferred language as default. !35676 +- Create associated routes when a new bot user is created. !35711 +- Prevent autosave when reply comment via cmd+enter. !35716 +- Fix border-radius-base SCSS value. !35740 +- Fix alert sort styling issues. !35741 +- Change the sort order for alert severity and status. !35774 +- Fix unique case where static site editor's custom renderer for identifier syntax didn't robustly handle inline code. !35775 (Derek Knox) +- Save show whitespace changes. !35806 +- Fix existing repository_storages_weighted migrations. !35814 +- Fix error 500s creating new projects due to empty weights. !35829 +- Fix rendering alert issue description field. !35862 +- Fixed translation errors on MR Widget. !35888 +- Fix 500 errors with invalid access tokens. !35895 +- Change PrometheusMetrics identifier index. !35912 +- Backfill missing routes for Bot users. !35960 +- Add generic message when no pipeline in MR. !35980 +- Conditionally render Docker row checkbox. !36000 (gfyoung) +- Fix missing avatar in MR widget. !36034 +- Fix comment loading error in issues and merge requests. !36043 +- Fix routing for paths starting with help and projects. !36048 +- Fix infinite loading spinner for related merge requests on commit pipelines tab. !36077 +- Use error.message instead of error in importer.log. !36104 +- Remove hardcoded reference to gitlab.com in NPM .gitlab-ci.yml template. !36124 +- Remove dashboard panels' tabindex where is not needed. !36168 +- Fix Project#pages_url not to downcase url path. !36183 +- Remove border from related merge requests/issues counter. !36272 +- Fail jobs that fail to render registration response. !36274 +- Sort metrics dashboard panels and groups using a stable sort. !36278 +- Remove HTML link from plain text mail. !36301 +- Fix wrong value of checkbox in integration form. !36329 +- Add a Rake task to fix incorrectly-recorded external diffs. !36353 +- Fix single file editor with long branch name. !36371 +- Allow self monitoring dashboard to be duplicated. !36433 +- Propagate DS_JAVA_VERSION for dependency scanning. !36448 +- Fix to display speech bubble on hover over image on commits page. !36470 (Adam Alvis @adamalvis) +- Fix to remove speech bubble on hover over image on MR Overview tab. !36474 (Adam Alvis @adamalvis) +- Add DOCKERFILE_PATH to Auto DevOps workflow:rules. !36475 +- Show symlink icon in repository browser. !36524 +- Snippet comments where any line begins with a slash following an alphabetic character can't be published. !36563 +- Exclude services relation from Project Import/Export. !36569 +- Permanently close Jira import success alert. !36571 +- Fix dashboard schema validation issue. !36577 +- Refactor issues controller spec to fix SaveBang Cop. !36582 (Rajendra Kadam) +- Fix positioning of mr/issue count. !36621 +- Update to Grape v1.4.0. !36628 +- Fix API errors when null value is given for the bio. !36650 +- Avoid 500 errors with long expiration dates in tokens. !36657 +- Remove CI/CD variable validations on AWS keys. !36679 +- Ensure to run unassign issuables worker when not in a transaction. !36680 +- Mark existing Project Bot Users as confirmed. !36692 +- Fix error message when saving an integration and testing the settings. !36700 +- Do not depend on artifacts from previous stages in Auto DevOps deployments. !36741 +- Delete tracking records on partitioning migration rollback. !36743 +- Updates Helm version to 2.16.9 which has some fixes. !36746 +- Web IDE: Page title should not be .editorconfig when the IDE is first loaded. !36783 +- Removes fixes that broke the pipeline table. !36803 +- Refactor group controllers specs to fix SaveBang Cop. !36853 (Rajendra Kadam) +- Fix the default metrics dashboard to work on K8s versions 1.12 to 1.16. !36863 +- Fix incorrect marking MR as Draft. !36869 +- Use an array for fetching same_family_pipeline_ids. !36883 +- Remove extra Secret-Detection job on merge requests. !36884 +- Remove Rails Optimistic Locking monkeypatch. !36893 +- Refactor projects controllers specs to fix SaveBang Cop. !36920 (Rajendra Kadam) +- Fix background overflow when design note is selected. !36931 +- Fix bulk editing labels bug. !36981 +- Fix not being able to add more than one CI variable through the UI. !37001 +- Uses --set-string to avoid Helm confusion over short SHA vs Scientific Notation. !37004 (Bryan H. @galador) +- Fix displaying import errors from server. !37073 +- Fix failing dashboard schema validation calls. !37108 +- Fix showing MLC form on replies. !37139 - Set experiementation cookie for GitLab domain only. +- Prevent duplicate health status text on epics. - Add DS detection of build.gradle.kts. +- Fix for test report link in MR widget. +- Footer system message fix. -### Changed (76 changes, 5 of them are from the community) +### Deprecated (1 change, 1 of them is from the community) +- Remove the unused worker code and its queue. !32595 (Ravishankar) + +### Changed (191 changes, 9 of them are from the community) + +- Deduplicate labels with identical title and project. !21384 - Add a GraphQL endpoint to fetch Jira projects through its REST API. !28190 - Change legends in monitor dashboards to tabular layout. !30131 - Move pipelines routing under /-/ scope. !30730 @@ -245,6 +377,7 @@ entry. - Externalize i18n strings from ./app/views/shared/milestones/_form_dates.html.haml. !32162 (Gilang Gumilar) - Improve Container Registry UI header. !32424 - Added node size to cluster index. !32435 +- Enable display of wiki events in activity streams. !32475 - Update operations metrics settings title and description to make them general. !32494 - Track merge_requests_users usage data. !32562 - Adds cluster CPU and Memory to cluster index. !32601 @@ -258,9 +391,11 @@ entry. - Add new issue link to email notification header. !32833 - Bump cluster-applications to 0.17.0, which updates Runner to 0.17.0 and Cilium to 1.7.4. !32931 - Update artifacts section to show when an artifact is locked. !32992 +- Show clone button on project page for readme preference. !33023 - Include tag count in the image repository list. !33027 - Clean up gitlab-shell install-from-source path. !33057 - Increase LFS token default time to 2 hours. !33140 +- Add the unique visits data to the usage ping. !33146 - Add explicit mention of Merge request in Slack message. !33152 - Expose `release_links.type` via API. !33154 - Add link_type column to release_links table. !33156 @@ -271,6 +406,7 @@ entry. - Refine SAST language detection by frameworks. !33226 - Render Merge request reference as link. !33248 - Upgrade to Gitaly v13.1.0-rc1. !33302 +- Render Merge request reference as link in email templates. !33316 - Show disabled suggestion button with tooltip message. !33357 - Add update validations to SnippetInputAction. !33379 - Add snippet DB visibility check in spec. !33388 (Jacopo Beschi @jacopo-beschi) @@ -279,35 +415,145 @@ entry. - Add GoMicro logo to project templates. !33404 - Add Jekyll logo to project templates. !33405 - Add Hexo logo to project templates. !33406 +- Add UI to disable Service template when instance-level integration is active. !33490 - Rename Add Designs button. !33491 - Add CPU, memory usage charts to self monitoring default dashboard. !33532 - Add database migrations to design_management_designs.filename to enforce a 255 character limit, and modify any filenames that exceed that limit. !33565 - Track Sentry error status updates with dedicated actions. !33623 - Alert Managament: Change sorting order to have newest alerts first. !33642 - Add blobs field to SnippetType in GraphQL. !33657 +- Move Usage activity by stage for Configure to Core. !33672 - Format metrics column chart x axis dates. !33681 +- Emit Bitbucket Server Importer metrics. !33700 - Style ToastUI contextual menus. !33719 - Update Auto deploy image to v0.16.1, introducing support for AUTO_DEVOPS_DEPLOY_DEBUG. !33799 - Add whether instance has Auto DevOps enabled to usage ping. !33811 - Update local IP address and domain name allow list input label. !33812 - Add date time format to the monitor stacked-column chart. !33814 - Allow Tf Plan to genrate multiple reports. !33867 +- Report all unique users for Secure scanners. !33881 - Remove async_merge_request_check_mergeability feature flag. !33917 - Filter potentially-sensitive Sidekiq arguments from logs and Sentry. !33967 - Update Static Site Editor toolbar to group inline-code and code-block buttons together. !34006 - Set default values for SAST_EXCLUDED_PATHS and DS_EXCLUDED_PATHS. !34076 - Add ability to filter self monitoring resource usage charts by instance name. !34084 +- Add skeleton loader to cluster list. !34090 - Pick repository storage based on weight. !34095 +- Use IP or cookie in known sign-in check. !34102 +- Prevents editing of non-markdown kramdown content in the Static Site Editor's WYSIWYG mode. !34185 - Display error for YAML files that are too large. !34199 - Change copy of webhooks / integration help text. !34301 +- Use CodeQuality 0.85.10 in the CI template. !34329 - Update board header icons. !34366 - Show Redis instance in performance bar. !34377 +- Extend members REST API with the option to unassign Issues and Merge Requests when member leaves team. !34388 +- Reorder snippets in lists using `updated_at` column. !34393 (Dibyadarshi Dash @ddash2) +- Add files argument to snippet create mutation. !34449 +- Consolidate object storage config in one place. !34460 - Add secret detection template to Auto DevOps. !34467 +- Add contextual menu to single stat panels. !34497 - Add allowed actions to snippet input action. !34499 +- Add files argument to snippet update mutation. !34514 - Change from vendor specific to Gitlab. !34576 +- Enable `:ci_release_generation` feature flag by default. !34633 +- Update gl-toggles with deprecated attributes. !34660 +- Adjust verbiage on repository storages settings page. !34675 +- Change redirect path after integration save. !34697 +- Refine UI of integration form. !34707 +- Change CI variable font family to monospace. !34788 (Aaron Walker) +- Rename GraphQL AwardEmoji mutations to follow naming conventions, deprecating the old mutations. !34798 +- Improve error message when unconfirmed user tries to log in. !34818 +- Update LFS setting label. !34829 (George Tsiolis) +- Display error if metrics dashboard YAML is too large. !34834 +- Add expand/collapse view to Terraform MR widget. !34879 +- Expose storage size limit for namespaces in GraphQL. !34882 +- Resolve Add no graph empty state for DAG. !35053 +- Remove pending and running tabs from pipelines list and remove count from finished tab. !35062 +- Stop removing NaN values from monitoring data series. !35086 +- Multiple Kubernetes clusters now available in GitLab core. !35094 +- Include snippets size in project statistics. !35120 +- Add parallel persistence for author_name on AuditEvent. !35130 +- Convert the Image tag UI from a table to a list view. !35138 +- Add personal and project snippet monthly counters to usage data. !35155 +- Exclude integrations (services) from Project Import/Export. !35249 +- Parameterize PG deprecation notice. !35271 +- Add inapplicable reason in MR suggestion Tooltip. !35276 +- Add snippets_size to namespace_root_storage_statistics. !35311 +- Rename Container Expiration Policies to Cleanup policy for tags. !35315 +- Expose snippets_size in ProjectStatistics Entity. !35316 +- Add snippets_size to ProjectStatistics GraphQL type. !35319 +- Update snippet and project statistics after certain events. !35340 +- Update the static site editor's markdown mode text to monospace to better reflect a code-editing experience. !35347 (Derek Knox) +- Resolve Remove button row from environments empty state. !35413 +- Track last activity for Personal Access Token. !35471 +- Add GitLab username and name to the import users from Jira mutation response. !35542 +- Use local Tiller by default for GitLab-managed apps. !35562 +- Hide cleanup button for clusters with management project. !35576 +- Update integration form to use GitLab UI components. !35582 +- Add snippets_size to Group entity. !35585 +- Add snippets_size to RootStorageStatisticsType. !35586 +- Move merge_requests_users metric to stage section. !35593 +- Include snippets_size statistic inside RootStorageStatistics. !35601 +- Accept multiple blobs in snippets. !35605 +- Replace FA exchange icon with GitLab SVG. !35634 +- Require namespace path (and username) to be at least 2 chars long. !35649 +- Remove count for pending/running/finished pipelines in tabs. !35693 +- Display commits search in mobile & adjust text. !35702 +- Open source cluster health dashboard and make it available to all users. !35721 +- Update snippet statistics after project import. !35730 +- Remove the second prompt to accept or decline an invitation. !35777 +- Track wiki page views in Snowplow. !35784 +- Use the application's default_branch_name when available when initializing a new repo with a README. !35801 +- Use native Gitaly pagination for Branch list API. !35819 +- Move file link to bottom in Web IDE. !35847 +- Package APIs moved to core. !35919 +- Allow setting extra tags for Sentry exceptions with GITLAB_SENTRY_EXTRA_TAGS. !35965 +- Include personal snippets size in RootStorageStatistics. !35984 +- Change Alert fingerprint index to run when status is not resolved. !36024 +- Update namespace statistics after personal snippet update/removal. !36031 +- Add details rows to Container Registry Tags List. !36036 +- Add raw snippet repository file endpoint to API. !36037 +- Move monitor stage usage activity to CE. !36067 +- Move release stage usage activity to CE. !36083 +- Move create stage usage activity to CE. !36086 +- Move plan stage usage activity to CE. !36087 +- Move manage stage usage activity to CE. !36089 +- Move verify stage usage activity to CE. !36090 +- Move alert integrations setting to Vue. !36110 +- Use new vuex store for code quality MR widget. !36120 +- Remove non-unique index on `merge_request_metrics.merge_request_id` column. !36170 +- Cleanup policies: display API error messages under form field. !36190 +- Replace fa-comment / fa-comments icons with GitLab SVG. !36206 +- Update `rack-timeout` to `0.5.2`. !36289 +- Bring SAST to Core - eslint. !36392 +- Replace initial dashboard loading state with a loading spinner, show dashboard skeleton earlier with smaller loading indicators. !36399 +- Merge tslint secure analyzer with eslint secure analyzer. !36400 +- Expose issue ID via GraphQL. !36412 +- Add broken tag state to tags list items. !36442 +- Fix UI quirks with pipeline schedule cron options. !36471 +- Update eslint secure analyzer to analyze jsx. !36505 +- Display informative error for status updates on duplicate alerts. !36527 +- Change default value in application_settings.issues_create_limit to be 0. !36558 +- Expose approvals fields for FOSS FE. !36564 +- Move service desk feature to core. !36613 +- Check WIP status after all other possible statuses. !36624 +- Add new models for DAST site profiles as part of DAST on-demand scans. !36659 +- Add date to x-axes timestamps. !36675 +- Make the Design Collection more visible in the Issue UI. !36681 +- Add correlation between trigger job and child pipeline. !36750 +- Static Site Editor: Set default sublist indent spaces to four space characters. !36756 +- Add managed-apps section in log explorer. !36769 +- Use a Confluence icon for the project Confluence integration nav item. !36780 +- Remove file_path validation in snippet create action. !36809 +- Improve animations of design note selection in design management. !36927 +- Add entity_path column to audit_events table. !37041 +- Make DAG annotations stick. !37068 +- Support multiple files when editing snippets. !37079 +- Change loading MR message wording. !37181 - Assign alerts sidebar base. +- Improved UX of the code navigation popover. -### Performance (19 changes, 1 of them is from the community) +### Performance (50 changes, 1 of them is from the community) - Improve performance of commit search by limiting the number of results requested. !32260 - Add GraphQL lookahead support. !32373 @@ -316,24 +562,57 @@ entry. - Use build_stubbed to avoid interacting with the DB in todos helper specs. !32906 (Arun Kumar Mohan) - Optimize SQL queries on Milestone index page. !32953 - Add build report results data model. !32991 +- Improve the performance for loading large diffs on a Merge request. !33037 - Adjust condition for partial indexes on services table. !33044 - Add index to issues and epics on last_edited_by_id. !33075 - Fix preconnect typo in rel link. !33255 - Add project_id, user_id, status, ref index to ci_pipelines. !33290 - Move migration related to ci_builds to post_deployment. !33416 +- Remove need to call commit (gitaly call) in ProjectPipelineStatus. !33712 - Reduce redundant queries for Search API users scope. !33795 - Speed up boot time in production. !33929 - Harden CI pipelines usage data queries with an index. !34045 +- Use snapshot transfers for repository shard moves when possible. !34113 - Add partial index on locked merge requets. !34127 +- Improve pipeline index controller performance by resolving Gitaly N+1 calls. !34160 - Lazy load commit_date and authored_date on Commit. !34181 - Optimize container repository for groups query. !34364 +- Further improve the performance for loading large diffs on a Merge request. !34516 +- Paginate the notes incremental fetch endpoint. !34628 +- Optimize rolling 28 days snippets counter. !34918 +- Only load project license if needed. !35068 +- Improve query to retrieve job artifacts with files stored locally. !35084 +- Preload commits markdown cache. !35314 +- Use BatchLoader for Project.forks_count to limit calls to Redis. !35328 +- Rework hardening CI pipelines usage data queries with an index. !35494 +- Performance improvement for job logs. !35504 +- Define a namespace traversal cache. !35713 +- MR diff migration: perform I/O outside of database transaction. !35734 +- Resolve N+1 in Search API projects scope. !35833 +- Optimize deployment counters for last 28 days. !35892 +- Trigger stackprof by sending a SIGUSR2 signal. !35993 +- Improve the search performance for merge requests. !36072 +- Reduce number of scanned commits for code intelligence. !36093 +- Improve snippet finders queries. !36292 +- Swap Grape over to Gitlab::Json. !36472 +- Add oj gem for faster JSON. !36555 +- Replace fa-eyes-slash icons with GitLab SVG eye-slash icon. !36602 +- Avoid N+1 calls for image_path when rendering commits. !36724 +- Enable BulkInsertSafe on Ci::BuildNeed. !36815 +- Remove optimized_count_users_by_group_id feature flag. !36953 +- Remove unindexed condition on label transfer. !37060 +- Speed up project creation for users with many projects. !37070 +- Split query for code-nav path into two queries. !37092 +- Use memoized start/finish for metrics based on issues table. !37155 - Enable CI Atomic Processing by default. -### Added (149 changes, 14 of them are from the community) +### Added (298 changes, 23 of them are from the community) +- Release generation via gitlab-ci.yml documentation. !19237 - Add rake task to verify encrypted data through secrets. !21851 - User can apply multiple suggestions at the same time. !22439 (Jesse Hall) - Resolve Add a button to assign users who have commented on an issue. !23883 +- Add custom emoji model and database table. !24229 (Rajendra Kadam) - Resolve Graph code coverage changes over time for a project. !26174 - Add doc for custom validators in api styleguide. !26734 (Rajendra Kadam) - Add Scheduled Job for Monitoring Monitor Group Demo Environments. !27360 @@ -350,12 +629,14 @@ entry. - Support Workhorse directly uploading files to S3. !29389 - Add frontend support for multiline comments. !29516 - Support first_name and last_name attributes in LDAP user sync. !29542 +- Link to test reports from MR Widget. !29729 - Add link to status page detail view for status page published issues. !30249 - Add metrics dashboard name to document title. !30392 - Backfill StatusPage::Published incidents and enable a publish quick action for EE. !30906 - Add missing Merge Request fields. !30935 - Show build status on branch list. !30948 (Lee Tickett) - Add mutation to create commits in GraphQL. !31102 +- Support quick actions when editing issue, merge request, and epic descriptions. !31186 - Add GraphQL support for authored and assigned Merge Requests. !31227 - Add usage data metrics for terraform states. !31280 - Add usage data metrics for terraform reports. !31281 @@ -402,16 +683,21 @@ entry. - Add timezone display to alert based issue start time. !32702 - Display dates on metrics dashboards in UTC time zone. !32746 - Store Todo resolution method. !32753 +- Add Falco to the managed cluster apps template. !32779 - Add experience_level to user_preferences. !32784 +- Add keyboard shortcuts to metrics dashboard. !32804 - Remove metrics dashboard annotations attached to time periods older than two weeks. !32838 - Monitor:Health metrics instrumenation. !32846 - Adds PostHog as a CI/CD Managed Application. !32856 - Groups API has top_level_only option to exclude subgroups. !32870 - Create operations_feature_flags_issues table. !32876 +- Allow advanced API projects filtering for admins. !32879 - Add api.js methods to update issues and merge requests. !32893 - Render user-defined links in dashboard yml file on metrics dashboard. !32895 +- Create group_deploy_keys_groups intermediate table. !32901 - Add accessibility report MR widget. !32902 - Add a GraphQL mutation for toggling the resolved state of a Discussion. !32934 +- Added CI template for Dart. !32942 (agilob) - Add container expiration policy objects to the GraphQL API. !32944 - Don't hide Commit tab in Web IDE when there are no changes yet. !32979 - Add column for alert slack notifications. !33017 @@ -420,6 +706,8 @@ entry. - Adds groupMembership and projectMembership to GraphQL API. !33049 - Alerts list pagination. !33073 - Add ApplicationSetting ui changes for repository_storages_weighted. !33096 +- Resolve Feature proposal: API for import from BitBucket Server. !33097 +- Add squash commits options as a project setting. !33099 - Display confirmation modal when user exits SSE and there are unsaved changes. !33103 - Add column dashboard_timezone to project_metrics_setting. !33120 - Allow the assignment of alerts to users from the alert detail view. !33122 @@ -437,24 +725,32 @@ entry. - Add support for pasting images in the Web IDE. !33256 - Add ProjectAccessToken table. !33272 - Automatically resolve alert when associated issue closes. !33278 +- Add Jira Importer user mapping form. !33320 - Add `link_type` to `ReleaseLink` GraphQL type. !33386 +- Add setting to enable and disable shared Runners for a group and its descendants. !33411 (Arthur de Lapertosa Lisboa) - Add members to project graphQL endpoint. !33418 - Update Static Site Editor WYSIWYG mode to hide front matter. !33441 - Added delete action for Dashboard Annotations in GraphQL. !33468 - Create graphQL endpoint for Jira users import. !33501 - Support IAP protected prometheus installations. !33508 - New instance-level variables UI. !33510 -- Provide `__range` variable for Prometheus queries. !33521 +- Add design activity in event streams. !33534 +- Allow developer role read-only access to Terraform state. !33573 - Add support for `git filter-repo` to repository cleanup. !33576 - Close open reply input fields in the design view sidebar when leaving a new comment. !33587 - Add dashboard schema validation warnings as metrics dashboard GraphQL field. !33592 - Add time range to user-defined links in metrics dashboard. !33663 - Increase events count for Prometheus alerts. !33706 +- Add dashboard validation warning to metrics dashboard. !33769 - Track pod logs refresh action. !33802 +- Expose all Jira projects endpoint through a GraphQL. !33861 - Add secret detection template. !33869 +- Add new path to access project metrics dashboard. !33905 +- Add new raw snippet blob endpoint. !33938 - Add DAG visualization MVC. !33958 - Introduce a feature flag for Vue-based UI for all import providers. !33980 - Add sticky title on Issue pages. !33983 +- Allow policies to override parent rules. !33990 - Allow Release asset links to be associated with a type. !33998 - Support user-defined Grafana links in metrics dashboard. !34003 - Adds AWS guidance to CI/CD > Add Variable modal. !34009 @@ -465,25 +761,157 @@ entry. - Track merge requests submitted by Static Site Editor. !34105 - Turn off alert issue creation by default. !34107 - Add detailed logs of each Redis instance usage during job execution and web requests. !34110 +- Support metrics dashboard with file name. !34115 - Add API to schedule project repository storage moves. !34119 +- Update diff discussion positions on demand. !34148 +- Add ability for user to manually create a todo for an alert. !34175 - Add validation step on backend for metrics dashboard links. !34204 - Track when Static Site Editor is initialized. !34215 - Bring SAST to Core - brakeman. !34217 - Mask key comments when exposing SSH/Deploy Keys via the API. !34255 - Convert `:release` yaml to `release-cli` commands. !34261 - Validate regex before sending them to CleanupContainerRepositoryWorker. !34282 +- Create vulnerability_statistics table. !34289 - Add secret_detection to DOWNLOADABLE_TYPES. !34313 - Enable ability to assign alerts to users with corresponding system notes and todos. !34360 +- Rolling 28 day time period counters for snippets. !34363 +- Add regex fields to the container expiration policy update mutation. !34389 +- Display Multiple Terraform Reports in MR Widget. !34392 +- Highlight commented rows. !34432 +- Add ci_builds_metadata.secrets column. !34480 - Enable CI Inheriting Env Variables feature. !34495 - Show tooltip on error detail page when hovering over dates. !34506 +- Show notification about empty stacktrace. !34517 - Add native code intelligence. !34542 +- Add global setting to disable/enable email notification on unknown sign-ins. !34562 - Bump cluster-applications version to v0.20.0. !34569 +- Send fixed pipeline notification by default. !34589 - Add search argument for AlertStatusCountsResolver. !34596 +- Add clusters_applications_cilium DB table. !34601 +- Fetch metrics dashboard templating variable options using a Prometheus query. !34607 +- Add Jira users mapping to start Jira import mutation. !34609 - Allow CI_JOB_TOKEN for authenticating to the Terraform state API. !34618 +- Search plain text in alert list frontend. !34631 +- Trigger unsaved changes warning in snippets on navigating away. !34640 +- Add Cilium to the ParseClusterApplicationsArtifactService. !34695 +- Use new icon for api preview. !34700 (Roger Meier) +- Remove partial clone feature flag. !34703 +- Ability to use an arbitrary YAML blob to create CI pipelines. !34706 +- Upgrade GitLab Pages to 1.19.0. !34730 +- Add CI_PROJECT_ROOT_NAMESPACE predefined environment variable. !34733 +- Add override selector for project-level integrations. !34742 +- Create namespace_limits table with additional purchase columns. !34746 +- Add mutation to update merge requests. !34748 +- Add plan limits for max size per artifact type. !34767 +- Add package scope validation to Node.js template. !34778 +- Expose project deploy keys for autocompletion. !34875 +- Block invalid URLs in metrics dashboard chart links. !34888 +- Add release data to GraphQL endpoint. !34937 +- Add ref, released_at, milestones to release yml. !34943 +- Add option to unassign member from issuables when removing them from a project. !34946 +- Add diff stats fields to merge request type. !34966 +- Bump Gitaly to v13.2.0-rc1. !34977 +- Add prometheus_alert_id and environment_id to Alert management alerts. !34995 +- Add full width to single charts in a row. !34999 +- Support extensibility for Editor Lite. !35008 +- Add snippets_size to ProjectStatistics. !35017 +- Add SnippetStatistics model. !35026 +- Add metrics settings menu to dashboard header. !35028 +- Surface metrics charts on the alert detail page. !35044 +- Add milestone stats to GraphQL endpoint. !35066 +- Add a custom HTML renderer to the Static Site Editor for markdown identifier syntax. !35077 +- Expose ref, milestones, released_at to releaser-cli. !35115 +- Add snippet statistics logic. !35118 +- Allow files with .md.erb extension for the Static Site Editor. !35136 +- Add migration for experimental product analytics table. !35168 +- Extend ECS Deploy template with Fargate jobs. !35173 +- Upgrade Pages to 1.20.0. !35177 +- Automatically close related issue when resolving Alert Management Prometheus Alert. !35208 +- Create API to retrieve resource state events. !35210 +- Allow diffs to be viewed file-by-file. !35223 (rinslow) +- Add indices for projects with disable_overriding_approvers_per_merge_request. !35224 +- Log name of class that failed to obtain exclusive lease. !35228 +- Render source job info in TriggeredPipelineEntity. !35232 +- Add refresh rate options to dashboard header. !35238 +- Add annotation component for DAG. !35240 +- Add a custom HTML renderer to the Static Site Editor for embedded ruby (ERB) syntax. !35261 +- Display metric label in single stat. !35289 +- Add issue column to alert list. !35291 +- Expose metrics dashboard URL for alert GraphQL query. !35293 +- Allow diffing changes in wiki history. !35330 (gwhyte, Steve Mokris) +- Added support for reordering issues to the v4 API. !35349 (Joel @jjshoe, Lee Tickett @leetickett) +- Add 'not' params to MergeRequests API endpoint. !35391 +- Implement GraphQL query to generate JSON for SAST config UI. !35397 +- Add system notes for status updates on alerts. !35467 +- Enable S3 Workhorse client if consolidated object settings used. !35480 +- Rolling 28 day time period counter for deployments. !35493 +- Add log statements to Projects::ContainerRepository::DeleteTagsService. !35539 +- Provide a label for 'Scheduled Pipeline' in the pipelines overview page. !35554 +- Add note about SSH key title being public information. !35574 +- Add todo pill styling for resolved alert. !35579 +- Add support for Markdown in the user's bio. !35604 (Riccardo Padovani) +- Introduce prepare environment action to annotate non-deployment jobs. !35642 +- Add custom Dockerfile paths to Auto DevOps Build stage with DOCKERFILE_PATH. !35662 (thklein) +- Add MergeRequest.diffStatsSummary.fileCount to graphql API. !35685 +- Introduces Group Level Delayed Project Removal Setting. !35689 +- Update cluster-applications to 0.23.0. !35691 +- Resolve user's todo when an alert is resolved. !35700 +- Show when alert is new in the Alerts list. !35708 +- Convert Import/Export rate limits to configurable application settings. !35728 +- Add installed state metrics for Cilium cluster application. !35808 +- Add support for linting based on schemas in WebIDE. !35838 +- Add a metrics settings button to the dashboard header. !35848 +- Prevent a project bot from being removed as member. !35899 +- Add background_migration_jobs table to trace background migrations. !35913 +- Allow prefixing with Draft to mark MR as WIP. !35940 +- FindRemoteRepository is storage scoped. !35962 +- Include project and subgroup milestones on Roadmap page. !35973 +- Todo Mutations should return the mutated todos. !35998 +- Add API support for instance-level Kubernetes clusters. !36001 +- Add count to imported Jira issues message. !36075 +- Add temporary storage increase column. !36107 +- Remove generic_alert_fingerprinting feature flag. !36148 +- Upgrade GitLab Pages to 1.21.0. !36214 +- Move approvals endpoints to FOSS version. !36237 +- Add initial custom HTML renderer to the Static Site Editor to prevent editing in WYSIWYG mode. !36250 +- Open new alert when existing alert is resolved. !36261 +- Add custom avatars for Alert and Support Bot. !36269 +- Add PagerDuty integration columns to `project_incident_management_settings` table. !36277 +- Enable Alerts dropdown in Operations Settings. !36296 +- Add number of approval project rules to usage ping. !36316 +- Add namespace settings table. !36321 +- Add a custom HTML renderer to the Static Site Editor for HTML block syntax. !36330 +- Expose gitlab managed apps logs inside log explorer. !36336 +- Add keyboard shortcut ('b') to copy MR source branch name on MR page. !36338 +- Add a custom HTML renderer to the Static Site Editor for font awesome inline HTML syntax. !36361 +- Add system note for alert when creating issue. !36370 +- Periodically update container registry type settings. !36415 +- Expands Jira integration to allow viewing and searching a list of of Jira issues directly within GitLab. !36435 +- Show Approve button on merge requests in Core. !36449 +- Measure adoption of package registry. !36514 +- If a user does not have write access to repo, but a fork exists, the Web IDE button should take them to the fork. !36548 +- Enable Batch Suggestins feature flag by default. !36561 +- Add default and non-default branch jobs for secret detection. !36570 +- Add a custom HTML renderer to the Static Site Editor for markdown identifier instance syntax. !36574 +- Add docs for Alert trigger test alerts. !36647 +- Support short urls for custom metrics dashboards. !36740 +- Update cluster-applications to 0.24.2. !36768 +- Add new Confluence integration for projects. !36781 +- Add confidential attribute to public API for notes creation. !36793 +- Add confidential attribute to graphQL for notes creation. !36799 +- Prometheus instances behind Google IAP can now be accessed via manual configurations. !36856 +- GraphQL mutation for changing locked status of an issue. !36866 +- Default the feature flag to true to always show the default initial branch name setting. !36889 +- Enable feature flag 'sectional_codeowners' Sections for Code Owners. !36902 +- Add pagination to iterations list. !37052 +- Add Jsonnet template for GitLab. !37058 +- Enable design activity events by default. !37107 -### Other (65 changes, 36 of them are from the community) +### Other (137 changes, 45 of them are from the community) - Improve fast-forward merge is not possible message. !22834 (Ben Bodenmiller) +- Add node ci template. !25668 +- Deduplicate merge_request_metrics table. !29566 - Remove unused WAF indexes from CI variables. !30021 - Update the visual design of badges in some areas. !31646 - Extract featurable concern from ProjectFeature. !31700 (Alexander Randa) @@ -505,7 +933,9 @@ entry. - Remove findLabel logic from issue model. !32239 (nuwe1) - Remove findIssue logic from list model. !32241 (nuwe1) - Remove moveIssue logic from list model. !32242 (nuwe1) +- Remove moveMultipleIssues logic from issue model. !32243 (nuwe1) - Remove newIssue logic from list model. !32244 (nuwe1) +- Remove onNewIssueResponse logic from list model. !32245 (nuwe1) - Remove removeAllAssignees logic from issue model. !32247 (nuwe1) - Remove removeAssignee logic from issue model. !32248 (nuwe1) - Clarify verbiage for stuck job messages. !32250 @@ -527,6 +957,7 @@ entry. - Tidy. !32759 (Lee Tickett) - Less verbose JiraService error logs. !32847 - Reduced padding and increased emphasis of titles within the epic tree. !32873 +- Add source to resource state events. !32924 - Remove obsolete users.ghost column. !32957 - Move NoPrimary table def to last context in spec. !33015 (Rajendra Kadam) - Document github rate limit behavior. !33090 @@ -535,9 +966,11 @@ entry. - Convert IP spoofing errors into client errors. !33280 - Update docs to reflect move web IDE Terminal and file sync to Core. !33419 - Add hovering icon for sorting columns on alert management list. !33429 +- Upgrade Grape v1.1.0 to v1.3.3. !33450 - Avoid javascript for omniauth logins. !33459 (Diego Louzán) - Add opacity transition to active design discussion pins. !33493 - Update GitLab Runner Helm Chart to 0.17.1. !33504 +- Store pipeline creation errors and warnings into Ci::PipelineMessage. !33762 - Make project selector in various dashboard more translatable. !33771 - Update Workhorse to v8.35.0. !33817 - Remove FF hide_token_from_runners_api. !33947 @@ -545,11 +978,171 @@ entry. - Specify tiers for SAML SSO at self-hosted plans. !34040 (Takuya Noguchi) - Backfill failed imported snippet repositories. !34052 - Use GitLab SVG icon for file attacher action. !34196 +- Suppress progress on pulling on Performance Test. !34368 (Takuya Noguchi) +- Update icon associated with attach a file actions. !34401 - Add GraphQL snippet FileInputType. !34442 +- Move filter code into finder. !34470 (Ravishankar) +- Update blue hex values to match GitLab UI. !34530 +- Remove legacy job log rendering. !34538 - Update red hex values to match GitLab UI. !34544 +- Update green hex values to match GitLab UI. !34547 +- Validate the existing not null constraints on columns for ci_job_artifacts, lfs_objects, and uploads tables. !34568 +- Move HasStatus module to the Ci namespace. !34577 (blackst0ne) +- Update pinned links to use GlButton. !34620 +- Add machine/sysname/release in topology usage ping. !34627 +- Remove build dependencies on code quality and license scanning. !34659 +- Add :section to approval_merge_request_rule unique index. !34680 +- Replace double angle icons with double chevron. !34736 +- Update Workhorse to v8.36.0. !34759 +- Update heart icon from FontAwesome to GitLab SVG. !34777 +- Fix broken CSS for system notes. !34870 +- Fix Gitaly duration tracking of RefService RPCs. !34904 +- Fix Gitaly duration timings of BlobService RPCs. !34906 +- Fix Gitaly duration timings for conflicts and search RPCs. !34909 +- Add validation for move action in SnippetInputAction. !34911 +- Fix Gitaly duration timings for other CommitService RPCs. !34933 +- Add project_key column to jira_tracker_data table. !34949 +- Update GitLab Runner Helm Chart to 0.18.0. !34969 +- Copy snippet route under - scope. !35020 +- Copy project snippet routes under - scope. !35022 +- Removes monkey patch to generate 6.0.3 style token. !35104 +- Create time-space partitions in separate schema gitlab_partitions_dynamic. !35137 +- Edit copy of DAG unsupported data alert. !35170 +- Move configuration for Alerts endpoint from "Settings > Integration" to "Settings > Operations > Alerts". !35187 +- Clean up GitlabIssueTrackerService database records. !35221 +- Throttle ProjectUpdateRepositoryStorageWorker Jobs. !35230 +- Suppress progress on docker pulling in builtin templates. !35253 (Takuya Noguchi) +- Create schema for static partitions. !35268 +- Add default_branch_name to application_settings. !35282 +- Upgrade Gitaly to 13.2.0-rc2. !35345 +- Drop partitions_dynamic schema if it exists. !35426 +- Avoid grouping statement timeouts in Sentry. !35479 +- Database migration to add project_settings.has_confluence. !35485 +- Update UI links to docs in core features. !35488 +- Update Sidekiq to v5.2.9. !35495 +- Move profiles/keys#get_keys to users#ssh_keys. !35507 (Takuya Noguchi) +- Add default_branch_name to ApplicationSettings visible attrs. !35681 +- Update GitLab Runner Helm Chart to 0.18.1. !35712 +- Prepare database for WebAuthn. !35797 (Jan Beckmann) +- Remove dead Elasticsearch indexing code. !35936 +- Add alias expansion to Terraform documentation. !35941 (zmeggyesi) +- Hide dropdown header on list view. !35954 +- Update GitLab Elasticsearch Indexer. !35966 +- Restore the search autocomplete for groups/project/other. !35983 +- Add issues_enabled column to jira_tracker_data table. !35987 +- Normalize the 'thumb-up', 'thumb-down' icon. !35988 +- Add migration to drop unused daily report results table. !36102 +- Updating $gray-200 hex value and remapping current instances to $gray-100. !36128 +- Removes ci_ensure_scheduling_type feature flag. !36140 +- Update more UI links to docs in core features. !36174 +- Format graphql files with prettier. !36244 +- Replace FA play icon with svg in pipeline schedule and admin runner page. !36379 +- Backfill project snippet statistics. !36444 +- Expose blob mode in GraphQL for repository files. !36488 +- Drop index of ruby objects in details on audit_events table. !36547 +- Expand Operations > Alerts section by default via link follow through. !36649 +- Update snippets housecleaning docs. !36715 +- Update Rouge to v3.21.0. !36942 +- Update GITLAB_WORKHORSE_VERSION to 8.37.0. !36988 +- Track the number of unique users who push, change wikis and change design managerment. - Remove removeIssue logic from list model. (nuwe1) +## 13.1.3 (2020-07-06) + +- No changes. + +## 13.1.2 (2020-07-01) + +### Security (18 changes) + +- Update xterm js dependency to latest stable 3.x version. +- Do not show activity for users with private profiles. +- Fix stored XSS in markdown renderer. +- Upgrade swagger-ui to solve XSS issues. +- Fix group deploy token API authorizations. +- Check access when sending TODOs related to merge requests. +- Change from hybrid to JSON cookies serializer. +- Prevent XSS in group name validations. +- Disable caching for wiki attachments. +- Disable Github Importer API by settings. +- Fix null byte error in upload path. +- Update permissions for time tracking endpoints. +- Add snippet repository validation after bundle import. +- Update Kaminari gem. +- Fix note author name rendering. +- Sanitize bitbucket repo urls to mitigate XSS. +- Stored XSS on the Error Tracking page. +- Fix security issue when rendering issuable. + + +## 13.1.1 (2020-06-23) + +### Fixed (4 changes) + +- Fix missing templating vars set from URL in metrics dashboard. !34668 +- Fix edit status dropdown overflow. !34847 +- Load user before logging git http-requests. !34923 +- Do not mask key comments for DeployKeys. !35014 + +### Added (1 change) + +- Periodically recompute project authorizations. !34071 + + +## 13.0.10 (2020-07-09) + +### Fixed (1 change) + +- Fix gitlab:*:check Rake tasks. !35944 + + +## 13.0.9 (2020-07-06) + +- No changes. + +## 13.0.8 (2020-07-01) + +### Security (18 changes) + +- Update xterm js dependency to latest stable 3.x version. +- Do not show activity for users with private profiles. +- Fix stored XSS in markdown renderer. +- Upgrade swagger-ui to solve XSS issues. +- Fix group deploy token API authorizations. +- Check access when sending TODOs related to merge requests. +- Change from hybrid to JSON cookies serializer. +- Prevent XSS in group name validations. +- Disable caching for wiki attachments. +- Disable Github Importer API by settings. +- Fix null byte error in upload path. +- Update permissions for time tracking endpoints. +- Add snippet repository validation after bundle import. +- Update Kaminari gem. +- Fix note author name rendering. +- Sanitize bitbucket repo urls to mitigate XSS. +- Stored XSS on the Error Tracking page. +- Fix security issue when rendering issuable. + + +## 13.0.7 (2020-06-25) + +### Fixed (7 changes) + +- Group authorization refresh to consider shared groups. !31204 +- Fix Value Stream Analytics summary when using non-english locale. !33717 +- Fix bug with variable substitution in alerts. !33772 +- Fix relative URL root in wiki_base_path. !33841 +- Adjust wrong column reference for ResetMergeStatus (background job). !33899 +- Updated Auto DevOps with a fix to delete PostgreSQL PVC on environment cleanup. !34657 +- Load user before logging git http-requests. !34923 + +### Added (2 changes) + +- Provide `__range` variable for Prometheus queries. !33521 +- Periodically recompute project authorizations. !34071 + + ## 13.0.6 (2020-06-10) - No changes. @@ -1162,6 +1755,38 @@ entry. - Use visitUrl in Alert management. !32414 +## 12.10.14 (2020-07-06) + +- No changes. + +## 12.10.13 (2020-07-01) + +### Security (15 changes) + +- Do not show activity for users with private profiles. +- Fix stored XSS in markdown renderer. +- Upgrade swagger-ui to solve XSS issues. +- Fix group deploy token API authorizations. +- Check access when sending TODOs related to merge requests. +- Change from hybrid to JSON cookies serializer. +- Prevent XSS in group name validations. +- Disable caching for wiki attachments. +- Fix null byte error in upload path. +- Update permissions for time tracking endpoints. +- Update Kaminari gem. +- Fix note author name rendering. +- Sanitize bitbucket repo urls to mitigate XSS. +- Stored XSS on the Error Tracking page. +- Fix security issue when rendering issuable. + + +## 12.10.12 (2020-06-24) + +### Fixed (1 change) + +- Correctly count wiki pages in sidebar. !30508 + + ## 12.10.11 (2020-06-10) - No changes. diff --git a/Dangerfile b/Dangerfile index cc6ebc27d4..cba7226d4b 100644 --- a/Dangerfile +++ b/Dangerfile @@ -6,6 +6,7 @@ require_relative 'lib/gitlab/danger/request_helper' danger.import_plugin('danger/plugins/helper.rb') danger.import_plugin('danger/plugins/roulette.rb') danger.import_plugin('danger/plugins/changelog.rb') +danger.import_plugin('danger/plugins/sidekiq_queues.rb') return if helper.release_automation? diff --git a/GITALY_SERVER_VERSION b/GITALY_SERVER_VERSION index a40b36ab99..d8308f987e 100644 --- a/GITALY_SERVER_VERSION +++ b/GITALY_SERVER_VERSION @@ -1 +1 @@ -13.1.6 +13.2.3 diff --git a/GITLAB_ELASTICSEARCH_INDEXER_VERSION b/GITLAB_ELASTICSEARCH_INDEXER_VERSION index 276cbf9e28..197c4d5c2d 100644 --- a/GITLAB_ELASTICSEARCH_INDEXER_VERSION +++ b/GITLAB_ELASTICSEARCH_INDEXER_VERSION @@ -1 +1 @@ -2.3.0 +2.4.0 diff --git a/GITLAB_PAGES_VERSION b/GITLAB_PAGES_VERSION index 84cc529467..3500250a4b 100644 --- a/GITLAB_PAGES_VERSION +++ b/GITLAB_PAGES_VERSION @@ -1 +1 @@ -1.18.0 +1.21.0 diff --git a/GITLAB_WORKHORSE_VERSION b/GITLAB_WORKHORSE_VERSION index 13afb01d49..2554e8ae98 100644 --- a/GITLAB_WORKHORSE_VERSION +++ b/GITLAB_WORKHORSE_VERSION @@ -1 +1 @@ -8.35.0 +8.37.0 diff --git a/Gemfile b/Gemfile index 33d4ebb7f2..e082094715 100644 --- a/Gemfile +++ b/Gemfile @@ -19,7 +19,7 @@ gem 'default_value_for', '~> 3.3.0' gem 'pg', '~> 1.1' gem 'rugged', '~> 0.28' -gem 'grape-path-helpers', '~> 1.2' +gem 'grape-path-helpers', '~> 1.3' gem 'faraday', '~> 0.12' gem 'marginalia', '~> 1.8.0' @@ -66,7 +66,7 @@ gem 'u2f', '~> 0.2.1' gem 'validates_hostname', '~> 1.0.10' gem 'rubyzip', '~> 2.0.0', require: 'zip' # GitLab Pages letsencrypt support -gem 'acme-client', '~> 2.0.5' +gem 'acme-client', '~> 2.0', '>= 2.0.6' # Browser detection gem 'browser', '~> 2.5' @@ -81,7 +81,9 @@ gem 'gitlab_omniauth-ldap', '~> 2.1.1', require: 'omniauth-ldap' gem 'net-ldap' # API -gem 'grape', '~> 1.1.0' +# Locked at Grape v1.4.0 until https://github.com/ruby-grape/grape/pull/2088 is merged +# Remove config/initializers/grape_patch.rb +gem 'grape', '= 1.4.0' gem 'grape-entity', '~> 0.7.1' gem 'rack-cors', '~> 1.0.6', require: 'rack/cors' @@ -140,6 +142,7 @@ gem 'deckar01-task_list', '2.3.1' gem 'gitlab-markup', '~> 1.7.1' gem 'github-markup', '~> 1.7.0', require: 'github/markup' gem 'commonmarker', '~> 0.20' +gem 'kramdown', '~> 2.2.1' gem 'RedCloth', '~> 4.3.2' gem 'rdoc', '~> 6.1.2' gem 'org-ruby', '~> 0.9.12' @@ -148,7 +151,7 @@ gem 'wikicloth', '0.8.1' gem 'asciidoctor', '~> 2.0.10' gem 'asciidoctor-include-ext', '~> 0.3.1', require: false gem 'asciidoctor-plantuml', '~> 0.0.12' -gem 'rouge', '~> 3.19.0' +gem 'rouge', '~> 3.21.0' gem 'truncato', '~> 0.7.11' gem 'bootstrap_form', '~> 4.2.0' gem 'nokogiri', '~> 1.10.9' @@ -163,6 +166,8 @@ gem 'diff_match_patch', '~> 0.1.0' # Application server gem 'rack', '~> 2.0.9' +# https://github.com/sharpstone/rack-timeout/blob/master/README.md#rails-apps-manually +gem 'rack-timeout', '~> 0.5.1', require: 'rack/timeout/base' group :unicorn do gem 'unicorn', '~> 5.5' @@ -172,7 +177,6 @@ end group :puma do gem 'gitlab-puma', '~> 4.3.3.gitlab.2', require: false gem 'gitlab-puma_worker_killer', '~> 0.1.1.gitlab.1', require: false - gem 'rack-timeout', require: false end # State machine @@ -242,7 +246,9 @@ gem 'slack-messenger', '~> 2.3.3' gem 'hangouts-chat', '~> 0.0.5' # Asana integration -gem 'asana', '~> 0.9' +# asana 0.10.1 needs faraday 1.0 +# https://gitlab.com/gitlab-org/gitlab/-/issues/224296 +gem 'asana', '0.10.0' # FogBugz integration gem 'ruby-fogbugz', '~> 0.2.1' @@ -300,7 +306,7 @@ gem 'sentry-raven', '~> 2.9' gem 'premailer-rails', '~> 1.10.3' # LabKit: Tracing and Correlation -gem 'gitlab-labkit', '0.12.0' +gem 'gitlab-labkit', '0.12.1' # I18n gem 'ruby_parser', '~> 3.8', require: false @@ -331,10 +337,9 @@ group :development do gem 'danger', '~> 6.0', require: false gem 'letter_opener_web', '~> 1.3.4' - gem 'rblineprof', '~> 0.3.6', platform: :mri, require: false # Better errors handler - gem 'better_errors', '~> 2.5.0' + gem 'better_errors', '~> 2.7.1' gem 'binding_of_caller', '~> 0.8.0' # thin instead webrick @@ -361,7 +366,7 @@ group :development, :test do gem 'spring', '~> 2.0.0' gem 'spring-commands-rspec', '~> 1.0.4' - gem 'gitlab-styles', '~> 4.2.0', require: false + gem 'gitlab-styles', '~> 4.3.0', require: false # Pin these dependencies, otherwise a new rule could break the CI pipelines gem 'rubocop', '~> 0.82.0' gem 'rubocop-performance', '~> 1.5.2' @@ -370,6 +375,7 @@ group :development, :test do gem 'scss_lint', '~> 0.56.0', require: false gem 'haml_lint', '~> 0.34.0', require: false gem 'simplecov', '~> 0.18.5', require: false + gem 'simplecov-cobertura', '~> 1.3.1', require: false gem 'bundler-audit', '~> 0.6.1', require: false gem 'benchmark-ips', '~> 2.3.0', require: false @@ -383,6 +389,8 @@ group :development, :test do gem 'png_quantizator', '~> 0.2.1', require: false gem 'parallel', '~> 1.19', require: false + + gem 'rblineprof', '~> 0.3.6', platform: :mri, require: false end # Gems required in omnibus-gitlab pipeline @@ -452,7 +460,7 @@ group :ed25519 do end # Gitaly GRPC protocol definitions -gem 'gitaly', '~> 13.1.0.pre.rc1' +gem 'gitaly', '~> 13.2.0.pre.rc2' gem 'grpc', '~> 1.24.0' @@ -497,3 +505,5 @@ gem 'valid_email', '~> 0.1' # JSON gem 'json', '~> 2.3.0' gem 'json-schema', '~> 2.8.0' +gem 'oj', '~> 3.10.6' +gem 'multi_json', '~> 1.14.1' diff --git a/Gemfile.lock b/Gemfile.lock index 69bd523547..fbe5cfff1f 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -4,8 +4,8 @@ GEM RedCloth (4.3.2) abstract_type (0.0.7) ace-rails-ap (4.1.2) - acme-client (2.0.5) - faraday (~> 0.9, >= 0.9.1) + acme-client (2.0.6) + faraday (>= 0.17, < 2.0.0) actioncable (6.0.3.1) actionpack (= 6.0.3.1) nio4r (~> 2.0) @@ -76,7 +76,7 @@ GEM apollo_upload_server (2.0.0.beta.3) graphql (>= 1.8) rails (>= 4.2) - asana (0.9.3) + asana (0.10.0) faraday (~> 0.9) faraday_middleware (~> 0.9) faraday_middleware-multi_json (~> 0.0) @@ -103,10 +103,6 @@ GEM aws-sdk-core (= 2.11.374) aws-sigv4 (1.1.0) aws-eventstream (~> 1.0, >= 1.0.2) - axiom-types (0.1.1) - descendants_tracker (~> 0.0.4) - ice_nine (~> 0.11.0) - thread_safe (~> 0.3, >= 0.3.1) babosa (1.0.2) base32 (0.3.2) batch-loader (1.4.0) @@ -115,7 +111,7 @@ GEM benchmark-ips (2.3.0) benchmark-memory (0.1.2) memory_profiler (~> 0.9) - better_errors (2.5.0) + better_errors (2.7.1) coderay (>= 1.0.0) erubi (>= 1.0.0) rack (>= 0.9.0) @@ -164,8 +160,6 @@ GEM nap open4 (~> 1.3) coderay (1.1.2) - coercible (1.0.0) - descendants_tracker (~> 0.0.1) colored2 (3.1.2) commonmarker (0.20.1) ruby-enum (~> 0.5) @@ -221,8 +215,6 @@ GEM ruby-statistics (>= 2.1) thor (>= 0.19, < 2) unicode_plot (>= 0.0.4, < 1.0.0) - descendants_tracker (0.0.4) - thread_safe (~> 0.3, >= 0.3.1) device_detector (1.0.0) devise (4.7.1) bcrypt (~> 3.0) @@ -249,6 +241,28 @@ GEM doorkeeper-openid_connect (1.6.3) doorkeeper (>= 5.0, < 5.2) json-jwt (~> 1.6) + dry-configurable (0.11.5) + concurrent-ruby (~> 1.0) + dry-core (~> 0.4, >= 0.4.7) + dry-equalizer (~> 0.2) + dry-container (0.7.2) + concurrent-ruby (~> 1.0) + dry-configurable (~> 0.1, >= 0.1.3) + dry-core (0.4.9) + concurrent-ruby (~> 1.0) + dry-equalizer (0.3.0) + dry-inflector (0.2.0) + dry-logic (1.0.6) + concurrent-ruby (~> 1.0) + dry-core (~> 0.2) + dry-equalizer (~> 0.2) + dry-types (1.4.0) + concurrent-ruby (~> 1.0) + dry-container (~> 0.3) + dry-core (~> 0.4, >= 0.4.4) + dry-equalizer (~> 0.3) + dry-inflector (~> 0.1, >= 0.1.2) + dry-logic (~> 1.0, >= 1.0.2) ed25519 (1.2.4) elasticsearch (6.8.0) elasticsearch-api (= 6.8.0) @@ -290,7 +304,7 @@ GEM multipart-post (>= 1.2, < 3) faraday-http-cache (2.0.0) faraday (~> 0.8) - faraday_middleware (0.12.2) + faraday_middleware (0.14.0) faraday (>= 0.7.4, < 1.0) faraday_middleware-aws-signers-v4 (0.1.7) aws-sdk-resources (~> 2) @@ -377,12 +391,12 @@ GEM po_to_json (>= 1.0.0) rails (>= 3.2.0) git (1.5.0) - gitaly (13.1.0.pre.rc1) + gitaly (13.2.0.pre.rc2) grpc (~> 1.0) github-markup (1.7.0) gitlab-chronic (0.10.5) numerizer (~> 0.2) - gitlab-labkit (0.12.0) + gitlab-labkit (0.12.1) actionpack (>= 5.0.0, < 6.1.0) activesupport (>= 5.0.0, < 6.1.0) grpc (~> 1.19) @@ -400,7 +414,7 @@ GEM gitlab-puma (>= 2.7, < 5) gitlab-sidekiq-fetcher (0.5.2) sidekiq (~> 5) - gitlab-styles (4.2.0) + gitlab-styles (4.3.0) rubocop (~> 0.82.0) rubocop-gitlab-security (~> 0.1.0) rubocop-performance (~> 1.5.2) @@ -439,19 +453,19 @@ GEM signet (~> 0.14) gpgme (2.0.20) mini_portile2 (~> 2.3) - grape (1.1.0) + grape (1.4.0) activesupport builder + dry-types (>= 1.1) mustermann-grape (~> 1.0.0) rack (>= 1.3.0) rack-accept - virtus (>= 1.0.0) grape-entity (0.7.1) activesupport (>= 4.0) multi_json (>= 1.3.2) - grape-path-helpers (1.2.0) + grape-path-helpers (1.3.0) activesupport - grape (~> 1.0) + grape (~> 1.3) rake (~> 12) grape_logging (1.8.3) grape @@ -575,7 +589,8 @@ GEM kgio (2.11.3) knapsack (1.17.0) rake - kramdown (2.1.0) + kramdown (2.2.1) + rexml kramdown-parser-gfm (1.1.0) kramdown (~> 2.0) kubeclient (4.6.0) @@ -641,9 +656,10 @@ GEM multi_xml (0.6.0) multipart-post (2.1.1) murmurhash3 (0.1.6) - mustermann (1.0.3) - mustermann-grape (1.0.0) - mustermann (~> 1.0.0) + mustermann (1.1.1) + ruby2_keywords (~> 0.0.1) + mustermann-grape (1.0.1) + mustermann (>= 1.0.0) nakayoshi_fork (0.0.4) nap (1.1.0) nenv (0.3.0) @@ -671,6 +687,7 @@ GEM octokit (4.15.0) faraday (>= 0.9) sawyer (~> 0.8.0, >= 0.5.3) + oj (3.10.6) omniauth (1.9.0) hashie (>= 3.4.6, < 3.7.0) rack (>= 1.6.2, < 3) @@ -801,7 +818,7 @@ GEM rack rack-test (1.1.0) rack (>= 1.0, < 3) - rack-timeout (0.5.1) + rack-timeout (0.5.2) rails (6.0.3.1) actioncable (= 6.0.3.1) actionmailbox (= 6.0.3.1) @@ -890,7 +907,7 @@ GEM rexml (3.2.4) rinku (2.0.0) rotp (2.1.2) - rouge (3.19.0) + rouge (3.21.0) rqrcode (0.7.0) chunky_png rqrcode-rails3 (0.1.7) @@ -958,6 +975,7 @@ GEM ruby-saml (1.7.2) nokogiri (>= 1.5.10) ruby-statistics (2.1.2) + ruby2_keywords (0.0.2) ruby_dep (1.5.0) ruby_parser (3.13.1) sexp_processor (~> 4.9) @@ -1003,11 +1021,11 @@ GEM shellany (0.0.1) shoulda-matchers (4.0.1) activesupport (>= 4.2.0) - sidekiq (5.2.7) + sidekiq (5.2.9) connection_pool (~> 2.2, >= 2.2.2) - rack (>= 1.5.0) + rack (~> 2.0) rack-protection (>= 1.5.0) - redis (>= 3.3.5, < 5) + redis (>= 3.3.5, < 4.2) sidekiq-cron (1.0.4) fugit (~> 1.1) sidekiq (>= 4.2.1) @@ -1020,6 +1038,8 @@ GEM simplecov (0.18.5) docile (~> 1.1) simplecov-html (~> 0.11) + simplecov-cobertura (1.3.1) + simplecov (~> 0.8) simplecov-html (0.12.2) sixarm_ruby_unaccent (1.2.0) slack-messenger (2.3.3) @@ -1119,11 +1139,6 @@ GEM activerecord (>= 3.0) activesupport (>= 3.0) version_sorter (2.2.4) - virtus (1.0.5) - axiom-types (~> 0.1) - coercible (~> 1.0) - descendants_tracker (~> 0.0, >= 0.0.3) - equalizer (~> 0.0, >= 0.0.9) vmstat (2.3.0) warden (1.2.8) rack (>= 2.0.6) @@ -1155,13 +1170,13 @@ PLATFORMS DEPENDENCIES RedCloth (~> 4.3.2) ace-rails-ap (~> 4.1.0) - acme-client (~> 2.0.5) + acme-client (~> 2.0, >= 2.0.6) activerecord-explain-analyze (~> 0.1) acts-as-taggable-on (~> 6.0) addressable (~> 2.7) akismet (~> 3.0) apollo_upload_server (~> 2.0.0.beta3) - asana (~> 0.9) + asana (= 0.10.0) asciidoctor (~> 2.0.10) asciidoctor-include-ext (~> 0.3.1) asciidoctor-plantuml (~> 0.0.12) @@ -1175,7 +1190,7 @@ DEPENDENCIES bcrypt_pbkdf (~> 1.0) benchmark-ips (~> 2.3.0) benchmark-memory (~> 0.1) - better_errors (~> 2.5.0) + better_errors (~> 2.7.1) binding_of_caller (~> 0.8.0) bootsnap (~> 1.4.6) bootstrap_form (~> 4.2.0) @@ -1236,10 +1251,10 @@ DEPENDENCIES gettext (~> 3.2.2) gettext_i18n_rails (~> 1.8.0) gettext_i18n_rails_js (~> 1.3) - gitaly (~> 13.1.0.pre.rc1) + gitaly (~> 13.2.0.pre.rc2) github-markup (~> 1.7.0) gitlab-chronic (~> 0.10.5) - gitlab-labkit (= 0.12.0) + gitlab-labkit (= 0.12.1) gitlab-license (~> 1.0) gitlab-mail_room (~> 0.0.6) gitlab-markup (~> 1.7.1) @@ -1247,16 +1262,16 @@ DEPENDENCIES gitlab-puma (~> 4.3.3.gitlab.2) gitlab-puma_worker_killer (~> 0.1.1.gitlab.1) gitlab-sidekiq-fetcher (= 0.5.2) - gitlab-styles (~> 4.2.0) + gitlab-styles (~> 4.3.0) gitlab_chronic_duration (~> 0.10.6.2) gitlab_omniauth-ldap (~> 2.1.1) gon (~> 6.2) google-api-client (~> 0.33) google-protobuf (~> 3.8.0) gpgme (~> 2.0.19) - grape (~> 1.1.0) + grape (= 1.4.0) grape-entity (~> 0.7.1) - grape-path-helpers (~> 1.2) + grape-path-helpers (~> 1.3) grape_logging (~> 1.7) graphiql-rails (~> 1.4.10) graphql (~> 1.10.5) @@ -1282,6 +1297,7 @@ DEPENDENCIES jwt (~> 2.1.0) kaminari (~> 1.0) knapsack (~> 1.17) + kramdown (~> 2.2.1) kubeclient (~> 4.6.0) letter_opener_web (~> 1.3.4) license_finder (~> 5.4) @@ -1297,6 +1313,7 @@ DEPENDENCIES mimemagic (~> 0.3.2) mini_magick minitest (~> 5.11.0) + multi_json (~> 1.14.1) nakayoshi_fork (~> 0.0.4) net-ldap net-ntp @@ -1304,6 +1321,7 @@ DEPENDENCIES nokogiri (~> 1.10.9) oauth2 (~> 1.4) octokit (~> 4.15) + oj (~> 3.10.6) omniauth (~> 1.8) omniauth-auth0 (~> 2.0.0) omniauth-authentiq (~> 0.3.3) @@ -1335,7 +1353,7 @@ DEPENDENCIES rack-cors (~> 1.0.6) rack-oauth2 (~> 1.9.3) rack-proxy (~> 0.6.0) - rack-timeout + rack-timeout (~> 0.5.1) rails (~> 6.0.3.1) rails-controller-testing rails-i18n (~> 6.0) @@ -1352,7 +1370,7 @@ DEPENDENCIES request_store (~> 1.5) responders (~> 3.0) retriable (~> 3.1.2) - rouge (~> 3.19.0) + rouge (~> 3.21.0) rqrcode-rails3 (~> 0.1.7) rspec-parameterized rspec-rails (~> 4.0.0) @@ -1380,6 +1398,7 @@ DEPENDENCIES sidekiq-cron (~> 1.0) simple_po_parser (~> 1.1.2) simplecov (~> 0.18.5) + simplecov-cobertura (~> 1.3.1) slack-messenger (~> 2.3.3) snowplow-tracker (~> 0.6.1) spring (~> 2.0.0) diff --git a/VERSION b/VERSION index a40b36ab99..d8308f987e 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -13.1.6 +13.2.3 diff --git a/app/assets/images/confluence.svg b/app/assets/images/confluence.svg new file mode 100644 index 0000000000..f51d4318b6 --- /dev/null +++ b/app/assets/images/confluence.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/assets/images/logos/jira-gray.svg b/app/assets/images/logos/jira-gray.svg new file mode 100644 index 0000000000..0e7069f2bd --- /dev/null +++ b/app/assets/images/logos/jira-gray.svg @@ -0,0 +1 @@ +jira software-icon-gradient-neutral diff --git a/app/assets/javascripts/alert_management/components/alert_details.vue b/app/assets/javascripts/alert_management/components/alert_details.vue index ed6b4b7fdb..0731349630 100644 --- a/app/assets/javascripts/alert_management/components/alert_details.vue +++ b/app/assets/javascripts/alert_management/components/alert_details.vue @@ -12,18 +12,21 @@ import { GlTable, } from '@gitlab/ui'; import { s__ } from '~/locale'; -import query from '../graphql/queries/details.query.graphql'; +import alertQuery from '../graphql/queries/details.query.graphql'; +import sidebarStatusQuery from '../graphql/queries/sidebar_status.query.graphql'; import { fetchPolicies } from '~/lib/graphql'; import TimeAgoTooltip from '~/vue_shared/components/time_ago_tooltip.vue'; import highlightCurrentUser from '~/behaviors/markdown/highlight_current_user'; import initUserPopovers from '~/user_popovers'; import { ALERTS_SEVERITY_LABELS, trackAlertsDetailsViewsOptions } from '../constants'; -import createIssueQuery from '../graphql/mutations/create_issue_from_alert.graphql'; +import createIssueMutation from '../graphql/mutations/create_issue_from_alert.mutation.graphql'; +import toggleSidebarStatusMutation from '../graphql/mutations/toggle_sidebar_status.mutation.graphql'; import { visitUrl, joinPaths } from '~/lib/utils/url_utility'; import Tracking from '~/tracking'; import { toggleContainerClasses } from '~/lib/utils/dom_utils'; import SystemNote from './system_notes/system_note.vue'; import AlertSidebar from './alert_sidebar.vue'; +import AlertMetrics from './alert_metrics.vue'; const containerEl = document.querySelector('.page-with-contextual-sidebar'); @@ -34,6 +37,7 @@ export default { ), fullAlertDetailsTitle: s__('AlertManagement|Alert details'), overviewTitle: s__('AlertManagement|Overview'), + metricsTitle: s__('AlertManagement|Metrics'), reportedAt: s__('AlertManagement|Reported %{when}'), reportedAtWithTool: s__('AlertManagement|Reported %{when} by %{tool}'), }, @@ -51,25 +55,29 @@ export default { TimeAgoTooltip, AlertSidebar, SystemNote, + AlertMetrics, }, - props: { + inject: { + projectPath: { + default: '', + }, alertId: { type: String, - required: true, + default: '', }, - projectPath: { + projectId: { type: String, - required: true, + default: '', }, projectIssuesPath: { type: String, - required: true, + default: '', }, }, apollo: { alert: { fetchPolicy: fetchPolicies.CACHE_AND_NETWORK, - query, + query: alertQuery, variables() { return { fullPath: this.projectPath, @@ -84,15 +92,18 @@ export default { Sentry.captureException(error); }, }, + sidebarStatus: { + query: sidebarStatusQuery, + }, }, data() { return { alert: null, errored: false, + sidebarStatus: false, isErrorDismissed: false, createIssueError: '', issueCreationInProgress: false, - sidebarCollapsed: false, sidebarErrorMessage: '', }; }, @@ -128,10 +139,10 @@ export default { this.sidebarErrorMessage = ''; }, toggleSidebar() { - this.sidebarCollapsed = !this.sidebarCollapsed; + this.$apollo.mutate({ mutation: toggleSidebarStatusMutation }); toggleContainerClasses(containerEl, { - 'right-sidebar-collapsed': this.sidebarCollapsed, - 'right-sidebar-expanded': !this.sidebarCollapsed, + 'right-sidebar-collapsed': !this.sidebarStatus, + 'right-sidebar-expanded': this.sidebarStatus, }); }, handleAlertSidebarError(errorMessage) { @@ -143,7 +154,7 @@ export default { this.$apollo .mutate({ - mutation: createIssueQuery, + mutation: createIssueMutation, variables: { iid: this.alert.iid, projectPath: this.projectPath, @@ -169,9 +180,6 @@ export default { const { category, action } = trackAlertsDetailsViewsOptions; Tracking.event(category, action); }, - alertRefresh() { - this.$apollo.queries.alert.refetch(); - }, }, }; @@ -179,7 +187,7 @@ export default {