diff --git a/.gitignore b/.gitignore index 388718898e..9d9730bf40 100644 --- a/.gitignore +++ b/.gitignore @@ -105,3 +105,4 @@ ee/changelogs/unreleased-ee tags.lock tags.temp .stylelintcache +.solargraph.yml diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index c722f0a597..27a618a992 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -53,21 +53,36 @@ workflow: variables: RAILS_ENV: "test" NODE_ENV: "test" + BUNDLE_WITHOUT: "production:development" + BUNDLE_INSTALL_FLAGS: "--jobs=$(nproc) --retry=3 --quiet" # we override the max_old_space_size to prevent OOM errors NODE_OPTIONS: --max_old_space_size=3584 - SIMPLECOV: "true" GIT_DEPTH: "20" GIT_SUBMODULE_STRATEGY: "none" GET_SOURCES_ATTEMPTS: "3" + KNAPSACK_RSPEC_SUITE_REPORT_PATH: knapsack/report-master.json FLAKY_RSPEC_SUITE_REPORT_PATH: rspec_flaky/report-suite.json RSPEC_TESTS_MAPPING_PATH: crystalball/mapping.json RSPEC_PACKED_TESTS_MAPPING_PATH: crystalball/packed-mapping.json - BUILD_ASSETS_IMAGE: "false" + ES_JAVA_OPTS: "-Xms256m -Xmx256m" ELASTIC_URL: "http://elastic:changeme@elasticsearch:9200" DOCKER_VERSION: "20.10.1" CACHE_CLASSES: "true" + CHECK_PRECOMPILED_ASSETS: "true" + FF_USE_FASTZIP: "true" + + DOCS_REVIEW_APPS_DOMAIN: "178.62.207.141.nip.io" + DOCS_GITLAB_REPO_SUFFIX: "ee" + + REVIEW_APPS_DOMAIN: "gitlab-review.app" + REVIEW_APPS_GCP_PROJECT: "gitlab-review-apps" + REVIEW_APPS_GCP_REGION: "us-central1" + + BUILD_ASSETS_IMAGE: "true" # Set it to "false" to disable assets image building, used in `build-assets-image` + RSPEC_FAIL_FAST_ENABLED: "true" # Set it to "false" to disable RSpec fail-fast + SIMPLECOV: "true" # Preparing custom clone path to reduce space used by all random forks # on GitLab.com's Shared Runners. Our main forks - especially the security @@ -91,30 +106,4 @@ variables: GIT_CLONE_PATH: "/builds/gitlab-org-forks/${CI_PROJECT_NAME}" 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 - - local: .gitlab/ci/frontend.gitlab-ci.yml - - local: .gitlab/ci/global.gitlab-ci.yml - - local: .gitlab/ci/memory.gitlab-ci.yml - - local: .gitlab/ci/pages.gitlab-ci.yml - - local: .gitlab/ci/qa.gitlab-ci.yml - - local: .gitlab/ci/reports.gitlab-ci.yml - - local: .gitlab/ci/rails.gitlab-ci.yml - - local: .gitlab/ci/vendored-gems.gitlab-ci.yml - - local: .gitlab/ci/review.gitlab-ci.yml - - local: .gitlab/ci/rules.gitlab-ci.yml - - local: .gitlab/ci/setup.gitlab-ci.yml - - local: .gitlab/ci/dev-fixtures.gitlab-ci.yml - - local: .gitlab/ci/test-metadata.gitlab-ci.yml - - local: .gitlab/ci/yaml.gitlab-ci.yml - - local: .gitlab/ci/releases.gitlab-ci.yml - - local: .gitlab/ci/notify.gitlab-ci.yml - - local: .gitlab/ci/dast.gitlab-ci.yml - - local: .gitlab/ci/workhorse.gitlab-ci.yml - - local: .gitlab/ci/graphql.gitlab-ci.yml - # switch the remote include to a local include until this is resolved: - # https://gitlab.com/gitlab-org/gitlab/-/issues/327299 - # - remote: 'https://gitlab.com/gitlab-org/frontend/untamper-my-lockfile/-/raw/main/.gitlab-ci-template.yml' - - local: .gitlab/ci/untamper-my-lockfile.yml + - local: .gitlab/ci/*.gitlab-ci.yml diff --git a/.gitlab/CODEOWNERS b/.gitlab/CODEOWNERS index 6432640570..acb80bd194 100644 --- a/.gitlab/CODEOWNERS +++ b/.gitlab/CODEOWNERS @@ -17,42 +17,47 @@ /doc/administration/operations/ @axil @eread @marcia /doc/administration/packages/ @ngaskill /doc/administration/postgresql/ @marcia -/doc/administration/raketasks/ @axil @eread @mjang1 +/doc/administration/raketasks/ @axil @eread /doc/administration/redis/ @axil /doc/administration/reference_architectures/ @axil /doc/administration/snippets/ @aqualls -/doc/administration/troubleshooting @axil @marcia @mjang1 +/doc/administration/troubleshooting @axil @marcia +/doc/api/group_activity_analytics.md @msedlakjakubowski /doc/ci/ @marcel.amirault @sselhorn /doc/ci/environments/ @axil /doc/ci/services/ @sselhorn /doc/ci/test_cases/ @msedlakjakubowski -/doc/development/ @marcia @mjang1 +/doc/development/ @marcia /doc/development/documentation/ @cnorris +/doc/development/value_stream_analytics.md @msedlakjakubowski /doc/gitlab-basics/ @marcia /doc/install/ @axil -/doc/integration/ @aqualls @mjang1 +/doc/integration/ @aqualls /doc/operations/ @ngaskill @axil /doc/push_rules/ @aqualls -/doc/ssh/ @mjang1 +/doc/ssh/ @eread /doc/subscriptions/ @sselhorn /doc/topics/autodevops/ @ngaskill @marcia /doc/topics/git/ @aqualls /doc/update/ @axil @marcia -/doc/user/analytics/ @mjang1 @ngaskill +/doc/user/analytics/ @msedlakjakubowski @ngaskill /doc/user/application_security @rdickenson /doc/user/clusters/ @marcia -/doc/user/compliance/ @mjang1 @rdickenson -/doc/user/group/ @mjang1 @msedlakjakubowski +/doc/user/compliance/ @rdickenson +/doc/user/group/ @msedlakjakubowski /doc/user/group/bulk_editing/ @msedlakjakubowski +/doc/user/group/devops_adoption/ @msedlakjakubowski /doc/user/group/epics/ @msedlakjakubowski +/doc/user/group/insights/ @msedlakjakubowski /doc/user/group/iterations/ @msedlakjakubowski /doc/user/group/roadmap/ @msedlakjakubowski +/doc/user/group/value_stream_analytics/ @msedlakjakubowski /doc/user/infrastructure/ @marcia /doc/user/packages/ @ngaskill -/doc/user/profile/ @mjang1 @msedlakjakubowski -/doc/user/project/ @aqualls @axil @eread @mjang1 @msedlakjakubowski @ngaskill +/doc/user/profile/ @msedlakjakubowski +/doc/user/project/ @aqualls @axil @eread @msedlakjakubowski @ngaskill /doc/user/project/clusters/ @ngaskill -/doc/user/project/import/ @mjang1 @msedlakjakubowski +/doc/user/project/import/ @msedlakjakubowski /doc/user/project/integrations/ @aqualls /doc/user/project/integrations/prometheus_library/ @ngaskill /doc/user/project/issues/ @msedlakjakubowski @@ -60,7 +65,7 @@ /doc/user/project/milestones/ @msedlakjakubowski /doc/user/project/pages/ @axil /doc/user/project/repository/ @aqualls -/doc/user/project/settings/ @mjang1 @aqualls +/doc/user/project/settings/ @aqualls /doc/user/project/static_site_editor/index.md @aqualls /doc/user/project/web_ide/index.md @aqualls /doc/user/project/wiki/index.md @aqualls @@ -131,13 +136,13 @@ /doc/user/snippets.md @aqualls [Docs Growth] -/doc/administration/instance_review.md @aqualls -/doc/api/invitations.md @aqualls -/doc/api/experiments.md @aqualls -/doc/development/experiment_guide/ @aqualls -/doc/development/snowplow/ @aqualls -/doc/development/usage_ping/ @aqualls -/doc/user/admin_area/license.md @aqualls +/doc/administration/instance_review.md @kpaizee +/doc/api/invitations.md @kpaizee +/doc/api/experiments.md @kpaizee +/doc/development/experiment_guide/ @kpaizee +/doc/development/snowplow/ @kpaizee +/doc/development/usage_ping/ @kpaizee +/doc/user/admin_area/license.md @kpaizee [Frontend] *.scss @annabeldunstone @gitlab-org/maintainers/frontend @@ -181,9 +186,9 @@ Dangerfile @gl-quality/eng-prod .editorconfig @gl-quality/eng-prod [Backend Static Code Analysis] -.rubocop*.yml @dstull @splattael @gl-quality/eng-prod -/rubocop/ @dstull @splattael @gl-quality/eng-prod -/spec/rubocop/ @dstull @splattael @gl-quality/eng-prod +.rubocop*.yml @dstull @splattael @gl-quality/eng-prod +/rubocop/ @dstull @splattael @gl-quality/eng-prod +/spec/rubocop/ @dstull @splattael @gl-quality/eng-prod [End-to-end] /qa/ @gl-quality @@ -223,33 +228,41 @@ Dangerfile @gl-quality/eng-prod /ee/lib/gitlab/ci/reports/security/ @gitlab-org/secure/composition-analysis-be @gitlab-org/secure/dynamic-analysis-be @gitlab-org/secure/static-analysis-be @gitlab-org/secure/fuzzing-be [Container Security] -/ee/app/views/projects/threat_monitoring/** @gitlab-org/threat-management/defend/container-security/frontend -/ee/app/assets/javascripts/pages/projects/threat_monitoring/** @gitlab-org/threat-management/defend/container-security/frontend -/ee/app/assets/javascripts/threat_monitoring/** @gitlab-org/threat-management/defend/container-security/frontend -/ee/spec/frontend/threat_monitoring/** @gitlab-org/threat-management/defend/container-security/frontend +/ee/app/views/projects/threat_monitoring/** @gitlab-org/protect/container-security-frontend +/ee/app/views/projects/security/policies/** @gitlab-org/protect/container-security-frontend +/ee/spec/views/projects/security/policies/** @gitlab-org/protect/container-security-frontend +/ee/app/assets/javascripts/pages/projects/threat_monitoring/** @gitlab-org/protect/container-security-frontend +/ee/app/assets/javascripts/threat_monitoring/** @gitlab-org/protect/container-security-frontend +/ee/spec/frontend/threat_monitoring/** @gitlab-org/protect/container-security-frontend -/ee/app/controllers/projects/threat_monitoring_controller.rb @gitlab-org/threat-management/defend/container-security/backend -/ee/spec/controllers/projects/threat_monitoring_controller_spec.rb @gitlab-org/threat-management/defend/container-security/backend -/lib/gitlab/kubernetes/cilium_network_policy.rb @gitlab-org/threat-management/defend/container-security/backend -/spec/lib/gitlab/kubernetes/cilium_network_policy_spec.rb @gitlab-org/threat-management/defend/container-security/backend -/lib/gitlab/kubernetes/network_policy_common.rb @gitlab-org/threat-management/defend/container-security/backend -/spec/support/shared_examples/lib/gitlab/kubernetes/network_policy_common_shared_examples.rb @gitlab-org/threat-management/defend/container-security/backend -/lib/gitlab/kubernetes/network_policy.rb @gitlab-org/threat-management/defend/container-security/backend -/spec/lib/gitlab/kubernetes/network_policy_spec.rb @gitlab-org/threat-management/defend/container-security/backend -/ee/app/services/network_policies/** @gitlab-org/threat-management/defend/container-security/backend -/ee/spec/services/network_policies/** @gitlab-org/threat-management/defend/container-security/backend -/ee/app/controllers/projects/security/waf_anomalies_controller.rb @gitlab-org/threat-management/defend/container-security/backend -/ee/spec/controllers/projects/security/waf_anomalies_controller_spec.rb @gitlab-org/threat-management/defend/container-security/backend -/app/models/clusters/applications/cilium.rb @gitlab-org/threat-management/defend/container-security/backend -/spec/models/clusters/applications/cilium_spec.rb @gitlab-org/threat-management/defend/container-security/backend -/ee/app/controllers/projects/security/network_policies_controller.rb @gitlab-org/threat-management/defend/container-security/backend -/ee/spec/controllers/projects/security/network_policies_controller_spec.rb @gitlab-org/threat-management/defend/container-security/backend -/ee/app/workers/network_policy_metrics_worker.rb @gitlab-org/threat-management/defend/container-security/backend -/ee/spec/workers/network_policy_metrics_worker_spec.rb @gitlab-org/threat-management/defend/container-security/backend -/ee/app/services/network_policies/** @gitlab-org/threat-management/defend/container-security/backend -/ee/spec/services/network_policies/** @gitlab-org/threat-management/defend/container-security/backend -/ee/lib/gitlab/usage_data_counters/network_policy_counter.rb @gitlab-org/threat-management/defend/container-security/backend -/ee/spec/lib/gitlab/usage_data_counters/network_policy_counter_spec.rb @gitlab-org/threat-management/defend/container-security/backend +/ee/app/controllers/projects/threat_monitoring_controller.rb @gitlab-org/protect/container-security-backend +/ee/spec/controllers/projects/threat_monitoring_controller_spec.rb @gitlab-org/protect/container-security-backend +/ee/app/controllers/projects/security/policies_controller.rb @gitlab-org/protect/container-security-backend +/ee/spec/requests/projects/security/policies_controller_spec.rb @gitlab-org/protect/container-security-backend +/ee/app/models/security/orchestration_policy_configuration.rb @gitlab-org/protect/container-security-backend +/ee/spec/models/security/orchestration_policy_configuration_spec.rb @gitlab-org/protect/container-security-backend +/lib/gitlab/kubernetes/cilium_network_policy.rb @gitlab-org/protect/container-security-backend +/spec/lib/gitlab/kubernetes/cilium_network_policy_spec.rb @gitlab-org/protect/container-security-backend +/lib/gitlab/kubernetes/network_policy_common.rb @gitlab-org/protect/container-security-backend +/spec/support/shared_examples/lib/gitlab/kubernetes/network_policy_common_shared_examples.rb @gitlab-org/protect/container-security-backend +/lib/gitlab/kubernetes/network_policy.rb @gitlab-org/protect/container-security-backend +/spec/lib/gitlab/kubernetes/network_policy_spec.rb @gitlab-org/protect/container-security-backend +/ee/app/services/network_policies/** @gitlab-org/protect/container-security-backend +/ee/spec/services/network_policies/** @gitlab-org/protect/container-security-backend +/ee/app/controllers/projects/security/waf_anomalies_controller.rb @gitlab-org/protect/container-security-backend +/ee/spec/controllers/projects/security/waf_anomalies_controller_spec.rb @gitlab-org/protect/container-security-backend +/app/models/clusters/applications/cilium.rb @gitlab-org/protect/container-security-backend +/spec/models/clusters/applications/cilium_spec.rb @gitlab-org/protect/container-security-backend +/ee/app/controllers/projects/security/network_policies_controller.rb @gitlab-org/protect/container-security-backend +/ee/spec/controllers/projects/security/network_policies_controller_spec.rb @gitlab-org/protect/container-security-backend +/ee/app/workers/network_policy_metrics_worker.rb @gitlab-org/protect/container-security-backend +/ee/spec/workers/network_policy_metrics_worker_spec.rb @gitlab-org/protect/container-security-backend +/ee/app/services/network_policies/** @gitlab-org/protect/container-security-backend +/ee/spec/services/network_policies/** @gitlab-org/protect/container-security-backend +/ee/app/services/security/orchestration/** @gitlab-org/protect/container-security-backend +/ee/spec/services/security/orchestration/** @gitlab-org/protect/container-security-backend +/ee/lib/gitlab/usage_data_counters/network_policy_counter.rb @gitlab-org/protect/container-security-backend +/ee/spec/lib/gitlab/usage_data_counters/network_policy_counter_spec.rb @gitlab-org/protect/container-security-backend [Code Owners] /ee/lib/gitlab/code_owners.rb @reprazent @kerrizor @garyh @@ -257,6 +270,39 @@ Dangerfile @gl-quality/eng-prod /ee/spec/lib/gitlab/code_owners/ @reprazent @kerrizor @garyh /doc/user/project/code_owners.md @reprazent @kerrizor @garyh +[Merge Requests] +/app/controllers/projects/merge_requests/ @garyh @patrickbajao @marc_shaw @kerrizor +/app/models/merge_request.rb @dskim_gitlab @garyh @patrickbajao @marc_shaw @kerrizor +/app/services/merge_requests/ @dskim_gitlab @garyh @patrickbajao @marc_shaw @kerrizor +/app/workers/merge_requests/ @dskim_gitlab @garyh @patrickbajao @marc_shaw @kerrizor +/app/workers/merge_request_mergeability_check_worker.rb @dskim_gitlab @garyh @patrickbajao @marc_shaw @kerrizor +/lib/gitlab/diff/ @dskim_gitlab @garyh @patrickbajao @marc_shaw @kerrizor +/lib/gitlab/discussions_diff/ @dskim_gitlab @garyh @patrickbajao @marc_shaw @kerrizor +/lib/gitlab/quick_actions/ @dskim_gitlab @garyh @patrickbajao @marc_shaw @kerrizor + +/ee/app/models/merge_request.rb @dskim_gitlab @garyh @patrickbajao @marc_shaw @kerrizor +/ee/app/services/merge_requests/ @dskim_gitlab @garyh @patrickbajao @marc_shaw @kerrizor +/ee/app/workers/merge_requests/ @dskim_gitlab @garyh @patrickbajao @marc_shaw @kerrizor +/ee/app/workers/merge_request_reset_approvals_worker.rb @dskim_gitlab @garyh @patrickbajao @marc_shaw @kerrizor + +/app/assets/javascripts/diffs @viktomas @jboyson @iamphill @thomasrandolph +/app/assets/javascripts/batch_comments/ @viktomas @jboyson @iamphill @thomasrandolph +/app/assets/javascripts/notes @viktomas @jboyson @iamphill @thomasrandolph +/app/assets/javascripts/merge_request @viktomas @jboyson @iamphill @thomasrandolph +/app/assets/javascripts/merge_conflicts @viktomas @jboyson @iamphill @thomasrandolph +/app/assets/javascripts/mr_notes @viktomas @jboyson @iamphill @thomasrandolph +/app/assets/javascripts/mr_popover @viktomas @jboyson @iamphill @thomasrandolph +/app/assets/javascripts/vue_merge_request_widget @viktomas @jboyson @iamphill @thomasrandolph +/app/assets/javascripts/merge_request.js @viktomas @jboyson @iamphill @thomasrandolph +/app/assets/javascripts/merge_request_tabs.js @viktomas @jboyson @iamphill @thomasrandolph +/app/assets/stylesheets/framework/diffs.scss @viktomas @jboyson @iamphill @thomasrandolph +/app/assets/stylesheets/components/batch_comments/ @viktomas @jboyson @iamphill @thomasrandolph +/ee/app/assets/javascripts/diffs/ @viktomas @jboyson @iamphill @thomasrandolph +/ee/app/assets/javascripts/vue_merge_request_widget @viktomas @jboyson @iamphill @thomasrandolph +/spec/frontend/diffs/ @viktomas @jboyson @iamphill @thomasrandolph +/spec/frontend/batch_comments/ @viktomas @jboyson @iamphill @thomasrandolph + + [Product Intelligence] /ee/lib/gitlab/usage_data_counters/ @gitlab-org/growth/product-intelligence/engineers /ee/lib/ee/gitlab/usage_data.rb @gitlab-org/growth/product-intelligence/engineers @@ -283,4 +329,7 @@ Dangerfile @gl-quality/eng-prod /config/dependency_decisions.yml @gitlab-org/legal-reviewers [Workhorse] -/workhorse/ @jacobvosmaer-gitlab @nick.thomas @nolith @patrickbajao +/workhorse/ @jacobvosmaer-gitlab @nick.thomas @nolith @patrickbajao + +[Application Security] +/lib/gitlab/content_security_policy/ @gitlab-com/gl-security/appsec diff --git a/.gitlab/ci/build-images.gitlab-ci.yml b/.gitlab/ci/build-images.gitlab-ci.yml index 4e35247204..ed1f71e27b 100644 --- a/.gitlab/ci/build-images.gitlab-ci.yml +++ b/.gitlab/ci/build-images.gitlab-ci.yml @@ -9,8 +9,18 @@ build-qa-image: - .build-images:rules:build-qa-image stage: build-images needs: [] + variables: + QA_IMAGE: "${CI_REGISTRY}/${CI_PROJECT_PATH}/gitlab-ee-qa:${CI_COMMIT_REF_SLUG}" script: - - export QA_IMAGE="${CI_REGISTRY}/${CI_PROJECT_PATH}/gitlab-ee-qa:${CI_COMMIT_REF_SLUG}" + # With .git/hooks/post-checkout in place, Git tries to pull LFS objects, but the image doesn't have Git LFS, and we actually don't care about it for this specific so we just remove the file. + # Without removing the file, the error is as follows: "This repository is configured for Git LFS but 'git-lfs' was not found on your path. If you no longer wish to use Git LFS, remove this hook by deleting .git/hooks/post-checkout." + - rm .git/hooks/post-checkout + # Use $CI_MERGE_REQUEST_SOURCE_BRANCH_SHA so that GitLab image built in omnibus-gitlab-mirror and QA image are in sync. + # This falls back to $CI_COMMIT_SHA (the default checked out commit) for the non-merged result pipelines. + # See https://docs.gitlab.com/ee/development/testing_guide/end_to_end/index.html#with-pipeline-for-merged-results. + - if [ -n "$CI_MERGE_REQUEST_SOURCE_BRANCH_SHA" ]; then + git checkout -f ${CI_MERGE_REQUEST_SOURCE_BRANCH_SHA}; + fi - /kaniko/executor --context=${CI_PROJECT_DIR} --dockerfile=${CI_PROJECT_DIR}/qa/Dockerfile --destination=${QA_IMAGE} --cache=true retry: 2 diff --git a/.gitlab/ci/cache-repo.gitlab-ci.yml b/.gitlab/ci/cache-repo.gitlab-ci.yml index 475cbca315..98c8c72ae3 100644 --- a/.gitlab/ci/cache-repo.gitlab-ci.yml +++ b/.gitlab/ci/cache-repo.gitlab-ci.yml @@ -28,9 +28,9 @@ cache-repo: before_script: - '[ -z "$CI_REPO_CACHE_CREDENTIALS" ] || gcloud auth activate-service-account --key-file=$CI_REPO_CACHE_CREDENTIALS' script: - # Enable shallow repo caching only if the $ENABLE_SHALLOW_REPO_CACHING variable exists + # Enable shallow repo caching unless the $DISABLE_SHALLOW_REPO_CACHING variable exists (in the case the shallow clone caching isn't working well) # The `git repack` call works around a Git bug with shallow clones: https://gitlab.com/gitlab-org/git/-/issues/86 - - if [ -n "$ENABLE_SHALLOW_REPO_CACHING" ]; then + - if [ -z "$DISABLE_SHALLOW_REPO_CACHING" ]; then cd .. && rm -rf $CI_PROJECT_NAME; today=$(date +%Y-%m-%d); year=$(date +%Y); @@ -47,8 +47,8 @@ cache-repo: time gzip /tmp/$SHALLOW_CLONE_TAR_FILENAME; [ -z "$CI_REPO_CACHE_CREDENTIALS" ] || (echo "Uploading /tmp/$SHALLOW_CLONE_TAR_FILENAME.gz to GCloud." && time gsutil cp /tmp/$SHALLOW_CLONE_TAR_FILENAME.gz gs://gitlab-ci-git-repo-cache/project-$CI_PROJECT_ID/$SHALLOW_CLONE_TAR_FILENAME.gz); fi - # By default, we want to cache the full repo, unless the $DISABLE_FULL_REPO_CACHING variable exists (in the case the shallow clone caching is working well) - - if [ -z "$DISABLE_FULL_REPO_CACHING" ]; then + # Disable the full repo caching unless the $DISABLE_SHALLOW_REPO_CACHING variable exists (in the case the shallow clone caching isn't working well) + - if [ -n "$DISABLE_SHALLOW_REPO_CACHING" ]; then cd .. && rm -rf $CI_PROJECT_NAME; echo "Cloning $CI_REPOSITORY_URL into $CI_PROJECT_NAME."; time git clone --progress $CI_REPOSITORY_URL $CI_PROJECT_NAME; diff --git a/.gitlab/ci/cng.gitlab-ci.yml b/.gitlab/ci/cng.gitlab-ci.yml index af735d3212..f75497c1a3 100644 --- a/.gitlab/ci/cng.gitlab-ci.yml +++ b/.gitlab/ci/cng.gitlab-ci.yml @@ -7,4 +7,4 @@ cloud-native-image: GIT_DEPTH: "1" script: - install_gitlab_gem - - CNG_PROJECT_PATH="gitlab-org/build/CNG" BUILD_TRIGGER_TOKEN=$CI_JOB_TOKEN ./scripts/trigger-build cng + - CNG_PROJECT_PATH="gitlab-org/build/CNG" ./scripts/trigger-build cng diff --git a/.gitlab/ci/dast.gitlab-ci.yml b/.gitlab/ci/dast.gitlab-ci.yml index a8a201bd1f..309714f873 100644 --- a/.gitlab/ci/dast.gitlab-ci.yml +++ b/.gitlab/ci/dast.gitlab-ci.yml @@ -3,7 +3,7 @@ - prm # For scheduling dast job extends: - - .reports:schedule-dast + - .reports:rules:schedule-dast image: name: "registry.gitlab.com/gitlab-org/security-products/dast:$DAST_VERSION" resource_group: dast_scan diff --git a/.gitlab/ci/dev-fixtures.gitlab-ci.yml b/.gitlab/ci/dev-fixtures.gitlab-ci.yml index 1848283f92..21eae3f23e 100644 --- a/.gitlab/ci/dev-fixtures.gitlab-ci.yml +++ b/.gitlab/ci/dev-fixtures.gitlab-ci.yml @@ -3,7 +3,7 @@ - .default-retry - .rails-cache - .default-before_script - - .use-pg11 + - .use-pg12 stage: test needs: ["setup-test-env"] variables: @@ -29,7 +29,7 @@ run-dev-fixtures-ee: extends: - .run-dev-fixtures - .dev-fixtures:rules:ee-only - - .use-pg11-ee + - .use-pg12-ee script: - cp ee/db/fixtures/development/* $FIXTURE_PATH - *run-dev-fixtures-script diff --git a/.gitlab/ci/docs.gitlab-ci.yml b/.gitlab/ci/docs.gitlab-ci.yml index 8f70127be6..35d462584e 100644 --- a/.gitlab/ci/docs.gitlab-ci.yml +++ b/.gitlab/ci/docs.gitlab-ci.yml @@ -44,7 +44,7 @@ docs-lint markdown: - .default-retry - .docs:rules:docs-lint # When updating the image version here, update it in /scripts/lint-doc.sh too. - image: "registry.gitlab.com/gitlab-org/gitlab-docs/lint-markdown:alpine-3.12-vale-2.8.0-markdownlint-0.26.0" + image: registry.gitlab.com/gitlab-org/gitlab-docs/lint-markdown:alpine-3.13-vale-2.10.2-markdownlint-0.26.0 stage: test needs: [] script: @@ -52,9 +52,10 @@ docs-lint markdown: docs-lint links: extends: - - .default-retry - .docs:rules:docs-lint - image: "registry.gitlab.com/gitlab-org/gitlab-docs/lint-html:alpine-3.12-ruby-2.7.2" + image: registry.gitlab.com/gitlab-org/gitlab-docs/lint-html:alpine-3.13-ruby-2.7.2 + # TODO: revert to .default-retry when https://gitlab.com/gitlab-org/gitlab/-/issues/331002 is fixed. + retry: 2 stage: test needs: [] script: diff --git a/.gitlab/ci/frontend.gitlab-ci.yml b/.gitlab/ci/frontend.gitlab-ci.yml index c39f5cdce9..33aab8554e 100644 --- a/.gitlab/ci/frontend.gitlab-ci.yml +++ b/.gitlab/ci/frontend.gitlab-ci.yml @@ -58,38 +58,34 @@ compile-test-assets as-if-foss: update-assets-compile-production-cache: extends: - compile-production-assets + - .assets-compile-cache-push - .shared:rules:update-cache stage: prepare artifacts: {} # This job's purpose is only to update the cache. - cache: - policy: push # We want to rebuild the cache from scratch to ensure stale dependencies are cleaned up. update-assets-compile-test-cache: extends: - compile-test-assets + - .assets-compile-cache-push - .shared:rules:update-cache stage: prepare artifacts: {} # This job's purpose is only to update the cache. - cache: - policy: push # We want to rebuild the cache from scratch to ensure stale dependencies are cleaned up. update-yarn-cache: extends: - .default-retry - - .yarn-cache + - .yarn-cache-push - .shared:rules:update-cache stage: prepare script: - *yarn-install - cache: - policy: push .frontend-fixtures-base: extends: - .default-retry - .default-before_script - .rails-cache - - .use-pg11 + - .use-pg12 stage: fixtures needs: ["setup-test-env", "retrieve-tests-metadata", "compile-test-assets"] variables: @@ -121,7 +117,7 @@ rspec frontend_fixture as-if-foss: rspec-ee frontend_fixture: extends: - .frontend-fixtures-base - - .frontend:rules:default-frontend-jobs + - .frontend:rules:default-frontend-jobs-ee parallel: 2 graphql-schema-dump: @@ -156,7 +152,7 @@ eslint-as-if-foss: needs: [] script: - *yarn-install - - run_timed_command "yarn run eslint" + - run_timed_command "yarn run lint:eslint:all" .karma-base: extends: .frontend-test-base @@ -169,8 +165,10 @@ karma: extends: - .karma-base - .frontend:rules:default-frontend-jobs - # Don't use `needs` since `rspec-ee frontend_fixture` doesn't exist in `gitlab-foss` pipelines. - dependencies: ["rspec frontend_fixture", "rspec-ee frontend_fixture"] + needs: + - job: "rspec frontend_fixture" + - job: "rspec-ee frontend_fixture" + optional: true coverage: '/^Statements *: (\d+\.\d+%)/' artifacts: name: coverage-javascript @@ -201,8 +199,10 @@ jest: extends: - .jest-base - .frontend:rules:default-frontend-jobs - # Don't use `needs` since `rspec-ee frontend_fixture` doesn't exist in `gitlab-foss` pipelines. - dependencies: ["rspec frontend_fixture", "rspec-ee frontend_fixture"] + needs: + - job: "rspec frontend_fixture" + - job: "rspec-ee frontend_fixture" + optional: true artifacts: name: coverage-frontend expire_in: 31d @@ -222,8 +222,11 @@ jest-integration: script: - *yarn-install - run_timed_command "yarn jest:integration --ci" - # Don't use `needs` since `rspec-ee frontend_fixture` doesn't exist in `gitlab-foss` pipelines. - dependencies: ["rspec frontend_fixture", "rspec-ee frontend_fixture", "graphql-schema-dump"] + needs: + - job: "rspec frontend_fixture" + - job: "rspec-ee frontend_fixture" + optional: true + - job: "graphql-schema-dump" jest-as-if-foss: extends: diff --git a/.gitlab/ci/global.gitlab-ci.yml b/.gitlab/ci/global.gitlab-ci.yml index 891457afe6..489b02fe2f 100644 --- a/.gitlab/ci/global.gitlab-ci.yml +++ b/.gitlab/ci/global.gitlab-ci.yml @@ -16,75 +16,147 @@ - source scripts/utils.sh - source scripts/prepare_build.sh +.ruby-gems-cache: &ruby-gems-cache + key: "ruby-gems-v1" + paths: + - vendor/ruby/ + policy: pull + +.ruby-gems-cache-push: &ruby-gems-cache-push + <<: *ruby-gems-cache + policy: push # We want to rebuild the cache from scratch to ensure stale dependencies are cleaned up. + +.gitaly-ruby-gems-cache: &gitaly-ruby-gems-cache + key: "gitaly-ruby-gems-v1" + paths: + - vendor/gitaly-ruby/ + policy: pull + +.gitaly-ruby-gems-cache-push: &gitaly-ruby-gems-cache-push + <<: *gitaly-ruby-gems-cache + policy: push # We want to rebuild the cache from scratch to ensure stale dependencies are cleaned up. + +.go-pkg-cache: &go-pkg-cache + key: "go-pkg-v1" + paths: + - .go/pkg/mod/ + policy: pull + +.go-pkg-cache-push: &go-pkg-cache-push + <<: *go-pkg-cache + policy: push # We want to rebuild the cache from scratch to ensure stale dependencies are cleaned up. + +.node-modules-cache: &node-modules-cache + key: "node-modules-${NODE_ENV}-v1" + paths: + - node_modules/ + - tmp/cache/webpack-dlls/ + policy: pull + +.node-modules-cache-push: &node-modules-cache-push + <<: *node-modules-cache + policy: push # We want to rebuild the cache from scratch to ensure stale dependencies are cleaned up. + +.assets-cache: &assets-cache + key: "assets-${NODE_ENV}-v1" + paths: + - assets-hash.txt + - public/assets/webpack/ + - tmp/cache/assets/sprockets/ + - tmp/cache/babel-loader/ + - tmp/cache/vue-loader/ + policy: pull + +.assets-cache-push: &assets-cache-push + <<: *assets-cache + policy: push # We want to rebuild the cache from scratch to ensure stale dependencies are cleaned up. + +.rubocop-cache: &rubocop-cache + key: "rubocop-v1" + paths: + - tmp/rubocop_cache/ + policy: pull + +.rubocop-cache-push: &rubocop-cache-push + <<: *rubocop-cache + # We want to rebuild the cache from scratch to ensure stale dependencies are cleaned up but RuboCop has a mechanism + # for keeping only the N latest cache files, so we take advantage of it with `pull-push`. + policy: pull-push + +.qa-ruby-gems-cache: &qa-ruby-gems-cache + key: "qa-ruby-gems-v1" + paths: + - qa/vendor/ruby/ + policy: pull + +.qa-ruby-gems-cache-push: &qa-ruby-gems-cache-push + <<: *qa-ruby-gems-cache + policy: push # We want to rebuild the cache from scratch to ensure stale dependencies are cleaned up. + .setup-test-env-cache: cache: - key: "setup-test-env-v1" - paths: - - vendor/ruby/ - - vendor/gitaly-ruby/ - - .go/pkg/mod/ - policy: pull + - *ruby-gems-cache + - *gitaly-ruby-gems-cache + - *go-pkg-cache + +.setup-test-env-cache-push: + cache: + - *ruby-gems-cache-push + - *gitaly-ruby-gems-cache-push + - *go-pkg-cache-push .rails-cache: cache: - key: "rails-v5" - paths: - - vendor/ruby/ - - vendor/gitaly-ruby/ - policy: pull + - *ruby-gems-cache + - *gitaly-ruby-gems-cache .static-analysis-cache: cache: - key: "static-analysis-v2" - paths: - - vendor/ruby/ - - node_modules/ - - tmp/rubocop_cache/ - policy: pull + - *ruby-gems-cache + - *node-modules-cache + - *rubocop-cache + +.static-analysis-cache-push: + cache: + - *ruby-gems-cache # We don't push this cache as it's already rebuilt by `update-setup-test-env-cache` + - *rubocop-cache-push .coverage-cache: cache: - key: "coverage-cache-v1" - paths: - - vendor/ruby/ - policy: pull + - *ruby-gems-cache .danger-review-cache: cache: - key: "danger-review-v1" - paths: - - vendor/ruby/ - - node_modules/ - policy: pull + - *ruby-gems-cache + - *node-modules-cache .qa-cache: cache: - key: "qa-v2" - paths: - - qa/vendor/ruby/ - policy: pull + - *qa-ruby-gems-cache + +.qa-cache-push: + cache: + - *qa-ruby-gems-cache-push .yarn-cache: cache: - key: "yarn-v1" - paths: - - node_modules/ - - tmp/cache/webpack-dlls/ - policy: pull + - *node-modules-cache + +.yarn-cache-push: + cache: + - *node-modules-cache-push .assets-compile-cache: cache: - key: "assets-compile-${NODE_ENV}-v1" - paths: - - vendor/ruby/ - - node_modules/ - - assets-hash.txt - - public/assets/webpack/ - - tmp/cache/assets/sprockets/ - - tmp/cache/babel-loader/ - - tmp/cache/vue-loader/ - - tmp/cache/webpack-dlls/ - policy: pull + - *ruby-gems-cache + - *node-modules-cache + - *assets-cache + +.assets-compile-cache-push: + cache: + - *ruby-gems-cache # We don't push this cache as it's already rebuilt by `update-setup-test-env-cache` + - *node-modules-cache-push + - *assets-cache-push .use-pg11: image: "registry.gitlab.com/gitlab-org/gitlab-build-images:ruby-2.7.2.patched-golang-1.14-git-2.31-lfs-2.9-chrome-89-node-14.15-yarn-1.22-postgresql-11-graphicsmagick-1.3.36" @@ -128,7 +200,7 @@ .use-kaniko: image: - name: gcr.io/kaniko-project/executor:debug-v1.3.0 + name: registry.gitlab.com/gitlab-org/gitlab-build-images:kaniko entrypoint: [""] before_script: - source scripts/utils.sh diff --git a/.gitlab/ci/memory.gitlab-ci.yml b/.gitlab/ci/memory.gitlab-ci.yml index 3e5639e4d6..f3ad8f81da 100644 --- a/.gitlab/ci/memory.gitlab-ci.yml +++ b/.gitlab/ci/memory.gitlab-ci.yml @@ -37,7 +37,7 @@ memory-static: memory-on-boot: extends: - .only-code-memory-job-base - - .use-pg11 + - .use-pg12 stage: test needs: ["setup-test-env", "compile-test-assets"] variables: diff --git a/.gitlab/ci/pages.gitlab-ci.yml b/.gitlab/ci/pages.gitlab-ci.yml index 4961bd508d..b6d4b0ef11 100644 --- a/.gitlab/ci/pages.gitlab-ci.yml +++ b/.gitlab/ci/pages.gitlab-ci.yml @@ -3,7 +3,7 @@ pages: - .default-retry - .pages:rules stage: pages - dependencies: + needs: - rspec:coverage - coverage-frontend - karma diff --git a/.gitlab/ci/qa.gitlab-ci.yml b/.gitlab/ci/qa.gitlab-ci.yml index 788b482f0a..8bbd7dbf07 100644 --- a/.gitlab/ci/qa.gitlab-ci.yml +++ b/.gitlab/ci/qa.gitlab-ci.yml @@ -4,11 +4,13 @@ - .qa-cache stage: test needs: [] + variables: + USE_BUNDLE_INSTALL: "false" + SETUP_DB: "false" before_script: - - '[ "$FOSS_ONLY" = "1" ] && rm -rf ee/ qa/spec/ee/ qa/qa/specs/features/ee/ qa/qa/ee/ qa/qa/ee.rb' + - !reference [.default-before_script, before_script] - cd qa/ - - bundle install --clean --jobs=$(nproc) --path=vendor --retry=3 --without=development --quiet - - bundle check + - bundle_install_script qa:internal: extends: @@ -39,12 +41,11 @@ qa:selectors-as-if-foss: update-qa-cache: extends: - .qa-job-base + - .qa-cache-push - .shared:rules:update-cache stage: prepare script: - echo "Cache has been updated and ready to be uploaded." - cache: - policy: push # We want to rebuild the cache from scratch to ensure stale dependencies are cleaned up. .package-and-qa-base: image: ${GITLAB_DEPENDENCY_PROXY}ruby:2.7-alpine diff --git a/.gitlab/ci/rails.gitlab-ci.yml b/.gitlab/ci/rails.gitlab-ci.yml index 064aa5a835..68804b0f4c 100644 --- a/.gitlab/ci/rails.gitlab-ci.yml +++ b/.gitlab/ci/rails.gitlab-ci.yml @@ -8,7 +8,8 @@ .minimal-bundle-install: script: - - run_timed_command "bundle install --jobs=$(nproc) --path=vendor --retry=3 --quiet --without default development test production puma unicorn kerberos metrics omnibus ed25519" + - export BUNDLE_WITHOUT="${BUNDLE_WITHOUT}:default:test:puma:unicorn:kerberos:metrics:omnibus:ed25519" + - bundle_install_script .base-script: script: @@ -67,11 +68,11 @@ - .rspec-base - .use-pg12 -.rspec-base-pg11-as-if-foss: +.rspec-base-pg12-as-if-foss: extends: - .rspec-base - .as-if-foss - - .use-pg11 + - .use-pg12 needs: ["setup-test-env", "retrieve-tests-metadata", "compile-test-assets as-if-foss", "detect-tests"] .rspec-ee-base-pg11: @@ -104,7 +105,7 @@ extends: - .rails-job-base - .rails:rules:ee-and-foss-migration - - .use-pg11 + - .use-pg12 stage: test needs: ["setup-test-env"] # rspec job base specs @@ -113,10 +114,10 @@ ############################ # rspec job parallel configs .rspec-migration-parallel: - parallel: 5 + parallel: 7 .rspec-ee-migration-parallel: - parallel: 2 + parallel: 3 .rspec-unit-parallel: parallel: 20 @@ -148,7 +149,7 @@ setup-test-env: - .rails-job-base - .setup-test-env-cache - .rails:rules:code-backstage-qa - - .use-pg11 + - .use-pg12 stage: prepare variables: GITLAB_TEST_EAGER_LOAD: "0" @@ -159,18 +160,13 @@ setup-test-env: expire_in: 7d paths: - config/secrets.yml + - tmp/tests/gitaly/_build/bin/ - tmp/tests/gitaly/config.toml - - tmp/tests/gitaly/gitaly - tmp/tests/gitaly/gitaly2.config.toml - - tmp/tests/gitaly/gitaly-git2go - - tmp/tests/gitaly/gitaly-hooks - - tmp/tests/gitaly/gitaly-lfs-smudge - - tmp/tests/gitaly/gitaly-ssh - tmp/tests/gitaly/internal/ - tmp/tests/gitaly/internal_gitaly2/ - tmp/tests/gitaly/internal_sockets/ - tmp/tests/gitaly/Makefile - - tmp/tests/gitaly/praefect - tmp/tests/gitaly/praefect.config.toml - tmp/tests/gitaly/ruby/ - tmp/tests/gitlab-elasticsearch-indexer/bin/gitlab-elasticsearch-indexer @@ -191,18 +187,10 @@ setup-test-env: update-setup-test-env-cache: extends: - setup-test-env + - .setup-test-env-cache-push - .shared:rules:update-cache artifacts: paths: [] # This job's purpose is only to update the cache. - cache: - policy: push # We want to rebuild the cache from scratch to ensure stale dependencies are cleaned up. - -update-rails-cache: - extends: - - update-setup-test-env-cache - - .rails-cache - cache: - policy: push # We want to rebuild the cache from scratch to ensure stale dependencies are cleaned up. .coverage-base: extends: @@ -213,16 +201,6 @@ update-rails-cache: SETUP_DB: "false" USE_BUNDLE_INSTALL: "false" -update-coverage-cache: - extends: - - .coverage-base - - .shared:rules:update-cache - stage: prepare - script: - - !reference [.minimal-bundle-install, script] - cache: - policy: push # We want to rebuild the cache from scratch to ensure stale dependencies are cleaned up. - .static-analysis-base: extends: - .default-retry @@ -236,80 +214,81 @@ update-coverage-cache: update-static-analysis-cache: extends: - .static-analysis-base + - .static-analysis-cache-push - .shared:rules:update-cache stage: prepare script: - - rm -rf ./node_modules # We remove node_modules because there's no mechanism to remove stall entries. - - run_timed_command "retry yarn install --frozen-lockfile" - - run_timed_command "bundle exec rubocop --parallel" # For the moment we only cache `vendor/ruby/`, `node_modules/`, and `tmp/rubocop_cache` so we don't need to run all the tasks, - cache: - # We want to rebuild the cache from scratch to ensure stale dependencies are cleaned up but RuboCop has a mechanism - # for keeping only the N latest cache files, so we take advantage of it with `pull-push` and removing `node_modules` at the start of the job. - policy: pull-push + - run_timed_command "bundle exec rubocop --parallel" # For the moment we only cache `tmp/rubocop_cache` so we don't need to run all the tasks. static-analysis: extends: - .static-analysis-base - - .rails:rules:code-backstage-qa + - .static-analysis:rules:ee-and-foss stage: test parallel: 4 script: - run_timed_command "retry yarn install --frozen-lockfile" - scripts/static-analysis -rspec migration pg11: +static-analysis as-if-foss: extends: - - .rspec-base-pg11 + - static-analysis + - .static-analysis:rules:as-if-foss + - .as-if-foss + +rspec migration pg12: + extends: + - .rspec-base-pg12 - .rspec-base-migration - .rspec-migration-parallel -rspec migration pg11 minimal: +rspec migration pg12 minimal: extends: - - rspec migration pg11 + - rspec migration pg12 - .minimal-rspec-tests - .rails:rules:ee-and-foss-migration:minimal -rspec unit pg11: +rspec unit pg12: extends: - - .rspec-base-pg11 + - .rspec-base-pg12 - .rails:rules:ee-and-foss-unit - .rspec-unit-parallel -rspec unit pg11 minimal: +rspec unit pg12 minimal: extends: - - rspec unit pg11 + - rspec unit pg12 - .minimal-rspec-tests - .rails:rules:ee-and-foss-unit:minimal -rspec integration pg11: +rspec integration pg12: extends: - - .rspec-base-pg11 + - .rspec-base-pg12 - .rails:rules:ee-and-foss-integration - .rspec-integration-parallel -rspec integration pg11 minimal: +rspec integration pg12 minimal: extends: - - rspec integration pg11 + - rspec integration pg12 - .minimal-rspec-tests - .rails:rules:ee-and-foss-integration:minimal -rspec system pg11: +rspec system pg12: extends: - - .rspec-base-pg11 + - .rspec-base-pg12 - .rails:rules:ee-and-foss-system - .rspec-system-parallel -rspec system pg11 minimal: +rspec system pg12 minimal: extends: - - rspec system pg11 + - rspec system pg12 - .minimal-rspec-tests - .rails:rules:ee-and-foss-system:minimal -# Dedicated job to test DB library code against PG12. -# Note that these are already tested against PG11 in the `rspec unit pg11` / `rspec-ee unit pg11` jobs. -rspec db-library-code pg12: +# Dedicated job to test DB library code against PG11. +# Note that these are already tested against PG12 in the `rspec unit pg12` / `rspec-ee unit pg12` jobs. +rspec db-library-code pg11: extends: - - .rspec-base-pg12 + - .rspec-base-pg11 - .rails:rules:ee-and-foss-db-library-code script: - !reference [.base-script, script] @@ -317,7 +296,7 @@ rspec db-library-code pg12: rspec fast_spec_helper: extends: - - .rspec-base-pg11 + - .rspec-base-pg12 - .rails:rules:ee-and-foss-fast_spec_helper script: - bin/rspec spec/fast_spec_helper.rb @@ -339,6 +318,7 @@ db:check-schema: - .rails:rules:ee-mr-and-default-branch-only script: - source scripts/schema_changed.sh + - scripts/validate_migration_timestamps db:check-migrations: extends: @@ -364,7 +344,7 @@ db:migrate-from-previous-major-version: - sed -i -e "s/gem 'grpc', '~> 1.24.0'/gem 'grpc', '~> 1.30.2'/" Gemfile # Update gRPC for Ruby 2.7 - sed -i -e "s/gem 'google-protobuf', '~> 3.8.0'/gem 'google-protobuf', '~> 3.12'/" Gemfile - sed -i -e "s/gem 'nokogiri', '~> 1.10.5'/gem 'nokogiri', '~> 1.11.0'/" Gemfile - - sed -i -e "s/gem 'mimemagic', '~> 0.3.2'/gem 'ruby-magic', '~> 0.3.2'/" Gemfile + - sed -i -e "s/gem 'mimemagic', '~> 0.3.2'/gem 'ruby-magic', '~> 0.4.0'/" Gemfile - run_timed_command "gem install bundler:1.17.3" - run_timed_command "bundle update google-protobuf nokogiri grpc mimemagic bootsnap" - run_timed_command "bundle install ${BUNDLE_INSTALL_FLAGS}" @@ -434,17 +414,17 @@ rspec:deprecations: # We cannot use needs since it would mean needing 84 jobs (since most are parallelized) # so we use `dependencies` here. dependencies: - - rspec migration pg11 - - rspec unit pg11 - - rspec integration pg11 - - rspec system pg11 - - rspec-ee migration pg11 - - rspec-ee unit pg11 - - rspec-ee integration pg11 - - rspec-ee system pg11 - - rspec-ee unit pg11 geo - - rspec-ee integration pg11 geo - - rspec-ee system pg11 geo + - rspec migration pg12 + - rspec unit pg12 + - rspec integration pg12 + - rspec system pg12 + - rspec-ee migration pg12 + - rspec-ee unit pg12 + - rspec-ee integration pg12 + - rspec-ee system pg12 + - rspec-ee unit pg12 geo + - rspec-ee integration pg12 geo + - rspec-ee system pg12 geo variables: SETUP_DB: "false" script: @@ -466,17 +446,17 @@ rspec:coverage: # so we use `dependencies` here. dependencies: - setup-test-env - - rspec migration pg11 - - rspec unit pg11 - - rspec integration pg11 - - rspec system pg11 - - rspec-ee migration pg11 - - rspec-ee unit pg11 - - rspec-ee integration pg11 - - rspec-ee system pg11 - - rspec-ee unit pg11 geo - - rspec-ee integration pg11 geo - - rspec-ee system pg11 geo + - rspec migration pg12 + - rspec unit pg12 + - rspec integration pg12 + - rspec system pg12 + - rspec-ee migration pg12 + - rspec-ee unit pg12 + - rspec-ee integration pg12 + - rspec-ee system pg12 + - rspec-ee unit pg12 geo + - rspec-ee integration pg12 geo + - rspec-ee system pg12 geo - memory-static - memory-on-boot script: @@ -503,17 +483,17 @@ rspec:feature-flags: # so we use `dependencies` here. dependencies: - setup-test-env - - rspec migration pg11 - - rspec unit pg11 - - rspec integration pg11 - - rspec system pg11 - - rspec-ee migration pg11 - - rspec-ee unit pg11 - - rspec-ee integration pg11 - - rspec-ee system pg11 - - rspec-ee unit pg11 geo - - rspec-ee integration pg11 geo - - rspec-ee system pg11 geo + - rspec migration pg12 + - rspec unit pg12 + - rspec integration pg12 + - rspec system pg12 + - rspec-ee migration pg12 + - rspec-ee unit pg12 + - rspec-ee integration pg12 + - rspec-ee system pg12 + - rspec-ee unit pg12 geo + - rspec-ee integration pg12 geo + - rspec-ee system pg12 geo - memory-static - memory-on-boot script: @@ -529,138 +509,138 @@ rspec:feature-flags: ################################################## # EE: default refs (MRs, default branch, schedules) jobs # -rspec migration pg11-as-if-foss: +rspec migration pg12-as-if-foss: extends: - - .rspec-base-pg11-as-if-foss + - .rspec-base-pg12-as-if-foss - .rspec-base-migration - .rails:rules:as-if-foss-migration - .rspec-migration-parallel -rspec migration pg11-as-if-foss minimal: +rspec migration pg12-as-if-foss minimal: extends: - - rspec migration pg11-as-if-foss + - rspec migration pg12-as-if-foss - .minimal-rspec-tests - .rails:rules:as-if-foss-migration:minimal -rspec unit pg11-as-if-foss: +rspec unit pg12-as-if-foss: extends: - - .rspec-base-pg11-as-if-foss + - .rspec-base-pg12-as-if-foss - .rails:rules:as-if-foss-unit - .rspec-unit-parallel -rspec unit pg11-as-if-foss minimal: +rspec unit pg12-as-if-foss minimal: extends: - - rspec unit pg11-as-if-foss + - rspec unit pg12-as-if-foss - .minimal-rspec-tests - .rails:rules:as-if-foss-unit:minimal -rspec integration pg11-as-if-foss: +rspec integration pg12-as-if-foss: extends: - - .rspec-base-pg11-as-if-foss + - .rspec-base-pg12-as-if-foss - .rails:rules:as-if-foss-integration - .rspec-integration-parallel -rspec integration pg11-as-if-foss minimal: +rspec integration pg12-as-if-foss minimal: extends: - - rspec integration pg11-as-if-foss + - rspec integration pg12-as-if-foss - .minimal-rspec-tests - .rails:rules:as-if-foss-integration:minimal -rspec system pg11-as-if-foss: +rspec system pg12-as-if-foss: extends: - - .rspec-base-pg11-as-if-foss + - .rspec-base-pg12-as-if-foss - .rails:rules:as-if-foss-system - .rspec-system-parallel -rspec system pg11-as-if-foss minimal: +rspec system pg12-as-if-foss minimal: extends: - - rspec system pg11-as-if-foss + - rspec system pg12-as-if-foss - .minimal-rspec-tests - .rails:rules:as-if-foss-system:minimal -rspec-ee migration pg11: +rspec-ee migration pg12: extends: - - .rspec-ee-base-pg11 + - .rspec-ee-base-pg12 - .rspec-base-migration - .rails:rules:ee-only-migration - .rspec-ee-migration-parallel -rspec-ee migration pg11 minimal: +rspec-ee migration pg12 minimal: extends: - - rspec-ee migration pg11 + - rspec-ee migration pg12 - .minimal-rspec-tests - .rails:rules:ee-only-migration:minimal -rspec-ee unit pg11: +rspec-ee unit pg12: extends: - - .rspec-ee-base-pg11 + - .rspec-ee-base-pg12 - .rails:rules:ee-only-unit - .rspec-ee-unit-parallel -rspec-ee unit pg11 minimal: +rspec-ee unit pg12 minimal: extends: - - rspec-ee unit pg11 + - rspec-ee unit pg12 - .minimal-rspec-tests - .rails:rules:ee-only-unit:minimal -rspec-ee integration pg11: +rspec-ee integration pg12: extends: - - .rspec-ee-base-pg11 + - .rspec-ee-base-pg12 - .rails:rules:ee-only-integration - .rspec-ee-integration-parallel -rspec-ee integration pg11 minimal: +rspec-ee integration pg12 minimal: extends: - - rspec-ee integration pg11 + - rspec-ee integration pg12 - .minimal-rspec-tests - .rails:rules:ee-only-integration:minimal -rspec-ee system pg11: +rspec-ee system pg12: extends: - - .rspec-ee-base-pg11 + - .rspec-ee-base-pg12 - .rails:rules:ee-only-system - .rspec-ee-system-parallel -rspec-ee system pg11 minimal: +rspec-ee system pg12 minimal: extends: - - rspec-ee system pg11 + - rspec-ee system pg12 - .minimal-rspec-tests - .rails:rules:ee-only-system:minimal -rspec-ee unit pg11 geo: +rspec-ee unit pg12 geo: extends: - - .rspec-ee-base-geo-pg11 + - .rspec-ee-base-geo-pg12 - .rails:rules:ee-only-unit - .rspec-ee-unit-geo-parallel # FIXME: Temporarily disable geo minimal rspec jobs https://gitlab.com/gitlab-org/gitlab/-/issues/294212 -#rspec-ee unit pg11 geo minimal: +#rspec-ee unit pg12 geo minimal: # extends: -# - rspec-ee unit pg11 geo +# - rspec-ee unit pg12 geo # - .minimal-rspec-tests # - .rails:rules:ee-only-unit:minimal -rspec-ee integration pg11 geo: +rspec-ee integration pg12 geo: extends: - - .rspec-ee-base-geo-pg11 + - .rspec-ee-base-geo-pg12 - .rails:rules:ee-only-integration # FIXME: Temporarily disable geo minimal rspec jobs https://gitlab.com/gitlab-org/gitlab/-/issues/294212 -#rspec-ee integration pg11 geo minimal: +#rspec-ee integration pg12 geo minimal: # extends: -# - rspec-ee integration pg11 geo +# - rspec-ee integration pg12 geo # - .minimal-rspec-tests # - .rails:rules:ee-only-integration:minimal -rspec-ee system pg11 geo: +rspec-ee system pg12 geo: extends: - - .rspec-ee-base-geo-pg11 + - .rspec-ee-base-geo-pg12 - .rails:rules:ee-only-system # FIXME: Temporarily disable geo minimal rspec jobs https://gitlab.com/gitlab-org/gitlab/-/issues/294212 -#rspec-ee system pg11 geo minimal: +#rspec-ee system pg12 geo minimal: # extends: -# - rspec-ee system pg11 geo +# - rspec-ee system pg12 geo # - .minimal-rspec-tests # - .rails:rules:ee-only-system:minimal @@ -676,28 +656,28 @@ db:rollback geo: ########################################## # EE/FOSS: default branch nightly scheduled jobs # -rspec migration pg12: +rspec migration pg11: extends: - - .rspec-base-pg12 + - .rspec-base-pg11 - .rspec-base-migration - .rails:rules:default-branch-schedule-nightly--code-backstage - .rspec-migration-parallel -rspec unit pg12: +rspec unit pg11: extends: - - .rspec-base-pg12 + - .rspec-base-pg11 - .rails:rules:default-branch-schedule-nightly--code-backstage - .rspec-unit-parallel -rspec integration pg12: +rspec integration pg11: extends: - - .rspec-base-pg12 + - .rspec-base-pg11 - .rails:rules:default-branch-schedule-nightly--code-backstage - .rspec-integration-parallel -rspec system pg12: +rspec system pg11: extends: - - .rspec-base-pg12 + - .rspec-base-pg11 - .rails:rules:default-branch-schedule-nightly--code-backstage - .rspec-system-parallel # EE/FOSS: default branch nightly scheduled jobs # @@ -705,45 +685,45 @@ rspec system pg12: ##################################### # EE: default branch nightly scheduled jobs # -rspec-ee migration pg12: +rspec-ee migration pg11: extends: - - .rspec-ee-base-pg12 + - .rspec-ee-base-pg11 - .rspec-base-migration - .rails:rules:default-branch-schedule-nightly--code-backstage-ee-only - .rspec-ee-migration-parallel -rspec-ee unit pg12: +rspec-ee unit pg11: extends: - - .rspec-ee-base-pg12 + - .rspec-ee-base-pg11 - .rails:rules:default-branch-schedule-nightly--code-backstage-ee-only - .rspec-ee-unit-parallel -rspec-ee integration pg12: +rspec-ee integration pg11: extends: - - .rspec-ee-base-pg12 + - .rspec-ee-base-pg11 - .rails:rules:default-branch-schedule-nightly--code-backstage-ee-only - .rspec-ee-integration-parallel -rspec-ee system pg12: +rspec-ee system pg11: extends: - - .rspec-ee-base-pg12 + - .rspec-ee-base-pg11 - .rails:rules:default-branch-schedule-nightly--code-backstage-ee-only - .rspec-ee-system-parallel -rspec-ee unit pg12 geo: +rspec-ee unit pg11 geo: extends: - - .rspec-ee-base-geo-pg12 + - .rspec-ee-base-geo-pg11 - .rails:rules:default-branch-schedule-nightly--code-backstage-ee-only - .rspec-ee-unit-geo-parallel -rspec-ee integration pg12 geo: +rspec-ee integration pg11 geo: extends: - - .rspec-ee-base-geo-pg12 + - .rspec-ee-base-geo-pg11 - .rails:rules:default-branch-schedule-nightly--code-backstage-ee-only -rspec-ee system pg12 geo: +rspec-ee system pg11 geo: extends: - - .rspec-ee-base-geo-pg12 + - .rspec-ee-base-geo-pg11 - .rails:rules:default-branch-schedule-nightly--code-backstage-ee-only # EE: default branch nightly scheduled jobs # ##################################### @@ -752,7 +732,7 @@ rspec-ee system pg12 geo: # EE: Canonical MR pipelines rspec fail-fast: extends: - - .rspec-ee-base-pg11 # This job also runs EE spec which needs elasticsearch + - .rspec-ee-base-pg12 # This job also runs EE spec which needs elasticsearch - .rails:rules:rspec fail-fast stage: test needs: ["setup-test-env", "retrieve-tests-metadata", "compile-test-assets", "detect-tests"] @@ -766,7 +746,7 @@ rspec fail-fast: rspec foss-impact: extends: - - .rspec-base-pg11-as-if-foss + - .rspec-base-pg12-as-if-foss - .rails:rules:rspec-foss-impact needs: ["setup-test-env", "retrieve-tests-metadata", "compile-test-assets as-if-foss", "detect-tests as-if-foss"] script: diff --git a/.gitlab/ci/reports.gitlab-ci.yml b/.gitlab/ci/reports.gitlab-ci.yml index 4d54380cef..0162996e3a 100644 --- a/.gitlab/ci/reports.gitlab-ci.yml +++ b/.gitlab/ci/reports.gitlab-ci.yml @@ -1,120 +1,71 @@ -# include: -# - template: Jobs/Code-Quality.gitlab-ci.yml -# - template: Security/SAST.gitlab-ci.yml -# - template: Security/Dependency-Scanning.gitlab-ci.yml -# - template: Security/DAST.gitlab-ci.yml +include: + - template: Jobs/Code-Quality.gitlab-ci.yml + - template: Security/SAST.gitlab-ci.yml + - template: Security/Secret-Detection.gitlab-ci.yml + - template: Security/Dependency-Scanning.gitlab-ci.yml + - template: Security/License-Scanning.gitlab-ci.yml -# We need to duplicate this job's definition because the rules -# defined in the extended jobs rely on local YAML anchors -# (`*if-default-refs`) code_quality: extends: - .default-retry - - .reports:rules:code_quality - .use-docker-in-docker - stage: test - needs: [] - variables: - CODE_QUALITY_IMAGE: "registry.gitlab.com/gitlab-org/ci-cd/codequality:0.85.23" - script: - - | - if ! docker info &>/dev/null; then - if [ -z "$DOCKER_HOST" -a "$KUBERNETES_PORT" ]; then - export DOCKER_HOST='tcp://localhost:2375' - fi - fi - - docker pull --quiet "$CODE_QUALITY_IMAGE" - - docker run - --env SOURCE_CODE="$PWD" - --volume "$PWD":/code - --volume /var/run/docker.sock:/var/run/docker.sock - "$CODE_QUALITY_IMAGE" /code artifacts: - reports: - codequality: gl-code-quality-report.json paths: - gl-code-quality-report.json # GitLab-specific - expire_in: 1 week # GitLab-specific + rules: !reference [".reports:rules:code_quality", rules] -# We need to duplicate this job's definition because the rules -# defined in the extended jobs rely on local YAML anchors -# (`*if-default-refs`) -.sast: +.sast-analyzer: + # We need to re-`extends` from `sast` as the `extends` here overrides the one from the template. extends: - .default-retry - - .reports:rules:sast - stage: test - # `needs: []` starts the job immediately in the pipeline - # https://docs.gitlab.com/ee/ci/yaml/README.html#needs + - sast needs: [] artifacts: paths: - gl-sast-report.json # GitLab-specific - reports: - sast: gl-sast-report.json expire_in: 1 week # GitLab-specific variables: - DOCKER_TLS_CERTDIR: "" - SAST_ANALYZER_IMAGE_PREFIX: "registry.gitlab.com/gitlab-org/security-products/analyzers" - SAST_ANALYZER_IMAGE_TAG: 2 SAST_BRAKEMAN_LEVEL: 2 # GitLab-specific - SAST_EXCLUDED_PATHS: qa,spec,doc,ee/spec,config/gitlab.yml.example # GitLab-specific + SAST_EXCLUDED_PATHS: "qa, spec, doc, ee/spec, config/gitlab.yml.example, tmp" # GitLab-specific SAST_DISABLE_BABEL: "true" - script: - - /analyzer run brakeman-sast: - extends: .sast - image: - name: "$SAST_ANALYZER_IMAGE_PREFIX/brakeman:$SAST_ANALYZER_IMAGE_TAG" + rules: !reference [".reports:rules:sast", rules] eslint-sast: - extends: .sast - image: - name: "$SAST_ANALYZER_IMAGE_PREFIX/eslint:$SAST_ANALYZER_IMAGE_TAG" + rules: !reference [".reports:rules:sast", rules] nodejs-scan-sast: - extends: .sast - image: - name: "$SAST_ANALYZER_IMAGE_PREFIX/nodejs-scan:$SAST_ANALYZER_IMAGE_TAG" + rules: !reference [".reports:rules:sast", rules] -secrets-sast: - extends: .sast - image: - name: "$SAST_ANALYZER_IMAGE_PREFIX/secrets:3" +semgrep-sast: + rules: !reference [".reports:rules:sast", rules] + +.secret-analyzer: + extends: .default-retry + needs: [] artifacts: paths: - gl-secret-detection-report.json # GitLab-specific - reports: - sast: gl-secret-detection-report.json expire_in: 1 week # GitLab-specific -# We need to duplicate this job's definition because the rules -# defined in the extended jobs rely on local YAML anchors -# (`*if-default-refs`) -.dependency_scanning: +secret_detection: + rules: !reference [".reports:rules:secret_detection", rules] + +.ds-analyzer: + # We need to re-`extends` from `dependency_scanning` as the `extends` here overrides the one from the template. extends: - .default-retry - - .reports:rules:dependency_scanning - stage: test + - dependency_scanning needs: [] variables: - DS_MAJOR_VERSION: 2 - DS_EXCLUDED_PATHS: "qa/qa/ee/fixtures/secure_premade_reports, spec, ee/spec" # GitLab-specific - SECURE_ANALYZERS_PREFIX: "registry.gitlab.com/gitlab-org/security-products/analyzers" + DS_EXCLUDED_PATHS: "qa/qa/ee/fixtures/secure_premade_reports, spec, ee/spec, tmp" # GitLab-specific artifacts: paths: - gl-dependency-scanning-report.json # GitLab-specific - reports: - dependency_scanning: gl-dependency-scanning-report.json expire_in: 1 week # GitLab-specific - script: - - /analyzer run -dependency_scanning gemnasium: - extends: .dependency_scanning - image: - name: "$SECURE_ANALYZERS_PREFIX/gemnasium:$DS_MAJOR_VERSION" +gemnasium-dependency_scanning: before_script: # git-lfs is needed for auto-remediation - apk add git-lfs @@ -123,56 +74,43 @@ dependency_scanning gemnasium: - apk add jq # Lower execa severity based on https://gitlab.com/gitlab-org/gitlab/-/issues/223859#note_452922390 - jq '(.vulnerabilities[] | select (.cve == "yarn.lock:execa:gemnasium:05cfa2e8-2d0c-42c1-8894-638e2f12ff3d")).severity = "Medium"' gl-dependency-scanning-report.json > temp.json && mv temp.json gl-dependency-scanning-report.json + rules: !reference [".reports:rules:dependency_scanning", rules] -dependency_scanning bundler-audit: - extends: .dependency_scanning - image: - name: "$SECURE_ANALYZERS_PREFIX/bundler-audit:$DS_MAJOR_VERSION" +bundler-audit-dependency_scanning: + rules: !reference [".reports:rules:dependency_scanning", rules] -dependency_scanning retire-js: - extends: .dependency_scanning - image: - name: "$SECURE_ANALYZERS_PREFIX/retire.js:$DS_MAJOR_VERSION" +retire-js-dependency_scanning: + rules: !reference [".reports:rules:dependency_scanning", rules] -dependency_scanning gemnasium-python: - extends: .dependency_scanning - image: - name: "$SECURE_ANALYZERS_PREFIX/gemnasium-python:$DS_MAJOR_VERSION" +gemnasium-python-dependency_scanning: + rules: !reference [".reports:rules:dependency_scanning", rules] # Analyze dependencies for malicious behavior # See https://gitlab.com/gitlab-com/gl-security/security-research/package-hunter package_hunter: extends: - - .reports:schedule-dast + - .default-retry + - .reports:rules:package_hunter stage: test image: name: registry.gitlab.com/gitlab-com/gl-security/security-research/package-hunter-cli:latest entrypoint: [""] needs: [] + allow_failure: true script: - rm -r spec locale .git app/assets/images doc/ - cd .. && tar -I "gzip --best" -cf gitlab.tgz gitlab/ - DEBUG=* HTR_user=$PACKAGE_HUNTER_USER HTR_pass=$PACKAGE_HUNTER_PASS node /usr/src/app/cli.js analyze --format gitlab gitlab.tgz | tee $CI_PROJECT_DIR/gl-dependency-scanning-report.json artifacts: paths: - - gl-dependency-scanning-report.json # GitLab-specific + - gl-dependency-scanning-report.json reports: dependency_scanning: gl-dependency-scanning-report.json - expire_in: 1 week # GitLab-specific + expire_in: 1 week license_scanning: - extends: - - .default-retry - - .reports:rules:license_scanning - stage: test - image: - name: "registry.gitlab.com/gitlab-org/security-products/analyzers/license-finder:3" - entrypoint: [""] + extends: .default-retry needs: [] - script: - - /run.sh analyze . artifacts: - reports: - license_scanning: gl-license-scanning-report.json expire_in: 1 week # GitLab-specific - dependencies: [] + rules: !reference [".reports:rules:license_scanning", rules] diff --git a/.gitlab/ci/review.gitlab-ci.yml b/.gitlab/ci/review.gitlab-ci.yml index e1037edc32..5decc83da2 100644 --- a/.gitlab/ci/review.gitlab-ci.yml +++ b/.gitlab/ci/review.gitlab-ci.yml @@ -34,10 +34,7 @@ review-build-cng: - 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 ] || scripts/api/play_job.rb --job-name "review-deploy"' + - ./scripts/trigger-build cng .review-workflow-base: extends: @@ -45,7 +42,6 @@ review-build-cng: 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: "v4.6.3" environment: @@ -59,7 +55,7 @@ review-deploy: - .review-workflow-base - .review:rules:review-deploy stage: review - dependencies: [] + needs: ["review-build-cng"] resource_group: "review/${CI_COMMIT_REF_NAME}" before_script: - export GITLAB_SHELL_VERSION=$( @@ -242,12 +230,3 @@ danger-review: else run_timed_command "bundle exec danger --fail-on-errors=true --verbose" fi - -update-danger-review-cache: - extends: - - danger-review - - .shared:rules:update-cache - stage: prepare - script: echo 'Cache is fresh!' - cache: - policy: push # We want to rebuild the cache from scratch to ensure stale dependencies are cleaned up. diff --git a/.gitlab/ci/rules.gitlab-ci.yml b/.gitlab/ci/rules.gitlab-ci.yml index c2d16582a6..5c9be5b1e9 100644 --- a/.gitlab/ci/rules.gitlab-ci.yml +++ b/.gitlab/ci/rules.gitlab-ci.yml @@ -124,7 +124,7 @@ .docs-patterns: &docs-patterns - ".gitlab/route-map.yml" - "doc/**/*" - - ".markdownlint.json" + - ".markdownlint.yml" - "scripts/lint-doc.sh" .frontend-dependency-patterns: &frontend-dependency-patterns @@ -424,6 +424,13 @@ - <<: *if-default-refs changes: *code-backstage-patterns +.frontend:rules:default-frontend-jobs-ee: + rules: + - <<: *if-not-ee + when: never + - <<: *if-default-refs + changes: *code-backstage-patterns + .frontend:rules:default-frontend-jobs-as-if-foss: rules: - <<: *if-not-ee @@ -518,6 +525,8 @@ .qa:rules:package-and-qa: rules: + - <<: *if-not-ee + when: never - <<: *if-dot-com-gitlab-org-and-security-merge-request changes: *ci-qa-patterns allow_failure: true @@ -929,6 +938,25 @@ - <<: *if-merge-request changes: [".gitlab/ci/rails.gitlab-ci.yml"] +######################### +# Static analysis rules # +######################### + +.static-analysis:rules:ee-and-foss: + rules: + - changes: *code-backstage-qa-patterns + +.static-analysis:rules:as-if-foss: + rules: + - <<: *if-not-ee + when: never + - <<: *if-merge-request-title-as-if-foss + changes: *code-backstage-qa-patterns + - <<: *if-security-merge-request + changes: *code-backstage-qa-patterns + - <<: *if-merge-request + changes: *ci-patterns + ####################### # Vendored gems rules # ####################### @@ -975,6 +1003,16 @@ changes: *code-backstage-qa-patterns allow_failure: true +.reports:rules:secret_detection: + rules: + - if: '$SECRET_DETECTION_DISABLED' + when: never + - if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH' # The Secret-Detection template already has a `secret_detection_default_branch` job + when: never + # - <<: *if-default-branch-refs # To be done in a later iteration: https://gitlab.com/gitlab-org/gitlab/issues/31160#note_278188255 + - changes: *code-backstage-qa-patterns + allow_failure: true + .reports:rules:dependency_scanning: rules: - if: '$DEPENDENCY_SCANNING_DISABLED || $GITLAB_FEATURES !~ /\bdependency_scanning\b/' @@ -996,13 +1034,19 @@ when: manual allow_failure: true -.reports:schedule-dast: +.reports:rules:schedule-dast: rules: - if: '$DAST_DISABLED || $GITLAB_FEATURES !~ /\bdast\b/' when: never - <<: *if-default-branch-schedule-nightly allow_failure: true +.reports:rules:package_hunter: + rules: + - <<: *if-default-branch-schedule-2-hourly + - <<: *if-merge-request + changes: ["yarn.lock"] + .reports:rules:license_scanning: rules: - if: '$LICENSE_SCANNING_DISABLED || $GITLAB_FEATURES !~ /\blicense_scanning\b/' @@ -1042,7 +1086,6 @@ allow_failure: true - <<: *if-dot-com-gitlab-org-merge-request changes: *code-patterns - when: manual allow_failure: true - <<: *if-dot-com-gitlab-org-merge-request changes: *qa-patterns @@ -1063,7 +1106,6 @@ allow_failure: true - <<: *if-dot-com-gitlab-org-merge-request changes: *code-qa-patterns - when: manual allow_failure: true - <<: *if-dot-com-gitlab-org-schedule allow_failure: true @@ -1086,7 +1128,6 @@ allow_failure: true - <<: *if-dot-com-gitlab-org-merge-request changes: *code-qa-patterns - when: manual allow_failure: true .review:rules:review-qa-all: diff --git a/.gitlab/ci/test-metadata.gitlab-ci.yml b/.gitlab/ci/test-metadata.gitlab-ci.yml index b90c02c08e..08c5a7267c 100644 --- a/.gitlab/ci/test-metadata.gitlab-ci.yml +++ b/.gitlab/ci/test-metadata.gitlab-ci.yml @@ -27,19 +27,19 @@ update-tests-metadata: stage: post-test dependencies: - setup-test-env - - rspec migration pg11 + - rspec migration pg12 - rspec frontend_fixture - rspec-ee frontend_fixture - - rspec unit pg11 - - rspec integration pg11 - - rspec system pg11 - - rspec-ee migration pg11 - - rspec-ee unit pg11 - - rspec-ee integration pg11 - - rspec-ee system pg11 - - rspec-ee unit pg11 geo - - rspec-ee integration pg11 geo - - rspec-ee system pg11 geo + - rspec unit pg12 + - rspec integration pg12 + - rspec system pg12 + - rspec-ee migration pg12 + - rspec-ee unit pg12 + - rspec-ee integration pg12 + - rspec-ee system pg12 + - rspec-ee unit pg12 geo + - rspec-ee integration pg12 geo + - rspec-ee system pg12 geo script: - run_timed_command "retry gem install fog-aws mime-types activesupport rspec_profiling postgres-copy --no-document" - source ./scripts/rspec_helpers.sh diff --git a/.gitlab/issue_templates/Audit Event Proposal.md b/.gitlab/issue_templates/Audit Event Proposal.md new file mode 100644 index 0000000000..7a5408ca1f --- /dev/null +++ b/.gitlab/issue_templates/Audit Event Proposal.md @@ -0,0 +1,13 @@ + + +## Audit need + + + +## Proposal + + + +/label ~"Category:Audit Events" +/label ~"feature" +/label ~"group::compliance" diff --git a/.gitlab/issue_templates/Experiment Idea.md b/.gitlab/issue_templates/Experiment Idea.md new file mode 100644 index 0000000000..2693f09e06 --- /dev/null +++ b/.gitlab/issue_templates/Experiment Idea.md @@ -0,0 +1,48 @@ +## Experiment summary + +We believe that... {describe your hypothesis in one sentence} + +To verify that, we will... {describe your test in one sentence} + +And we’ll measure the impact on... {metrics} + +## Hypothesis + + +## Business problem + + +## Supporting data + + +## Expected outcome + + +## Experiment design & implementation + + +## ICE score + + + +| Impact | Confidence | Ease | Score | +| ------ | ------ | ------ | ------ | +| value 1 | value 2 | value 3 | Average(1:3) | + +## Known assumptions + + +## Results, lessons learned, next steps + + + +## Checklist + +* [ ] Fill in the experiment summary and write more about the details of the experiment in the rest of the issue description. Some of these may be filled in through time (the "Result, learnings, next steps" section for example) but at least the experiment summary should be filled in right from the start. +* [ ] Add the label of the `group::` that will work on this experiment (if known). +* [ ] Mention the Product Manager, Engineering Manager, and at least one Product Designer from the group that owns the part of the product that the experiment will affect. +* [ ] Fill in the values in the [ICE score table](#ice-score) ping other team members for the values you aren’t confident about (i.e. engineering should almost always fill out the ease section). Add the ~"ICE Score Needed" label to indicate that the score is incomplete. +* [ ] Replace the ~"ICE Score Needed" with an ICE low/medium/high score label once all values in the ICE table have been added. +* [ ] Mention the [at]gitlab-core-team team and ask for their feedback. + +/label ~"workflow::validation backlog" ~"experiment idea" diff --git a/.gitlab/issue_templates/Feature Flag Removal.md b/.gitlab/issue_templates/Feature Flag Removal.md new file mode 100644 index 0000000000..c061ab8516 --- /dev/null +++ b/.gitlab/issue_templates/Feature Flag Removal.md @@ -0,0 +1,28 @@ + + +## Feature + +The `:feature_name` feature flag was previously [enabled by default](URL) and should be removed. + +## Owners + +- Group: ~"group::GROUP_NAME" +- Slack channel: `#g_GROUP_NAME` +- DRI: USERNAME +- PM: USERNAME + +**Removal** + +This is an __important__ phase, that should be either done in the next Milestone or as soon as possible. For the cleanup phase, please follow our documentation on how to [clean up the feature flag](https://docs.gitlab.com/ee/development/feature_flags/controls.html#cleaning-up). + +- [ ] Remove `:feature_name` feature flag + - [ ] Remove all references to the feature flag from the codebase + - [ ] Remove the YAML definitions for the feature from the repository + - [ ] Create a Changelog Entry + +- [ ] Clean up the feature flag from all environments by running this chatops command in `#production` channel `/chatops run feature delete some_feature`. + +- [ ] Close this issue after the feature flag is removed from the codebase. + +/label ~"feature flag" ~"technical debt" +/assign DRI diff --git a/.gitlab/issue_templates/Feature Flag Roll Out.md b/.gitlab/issue_templates/Feature Flag Roll Out.md index a67d0f4e31..f07604d2d3 100644 --- a/.gitlab/issue_templates/Feature Flag Roll Out.md +++ b/.gitlab/issue_templates/Feature Flag Roll Out.md @@ -1,11 +1,11 @@ -## Feature +## Summary -This feature uses the `:feature_name` feature flag! +This issue is to rollout [the feature](ISSUE LINK) on production, +that is currently behind the `` feature flag. -- [Issue Name](ISSUE LINK) ## Owners @@ -26,14 +26,15 @@ Are there any other stages or teams involved that need to be kept in the loop? ## The Rollout Plan -- Partial Rollout on GitLab.com with beta groups +- Partial Rollout on GitLab.com with testing groups - Rollout on GitLab.com for a certain period (How long) - Percentage Rollout on GitLab.com - Rollout Feature for everyone as soon as it's ready -**Beta Groups/Projects:** +## Testing Groups/Projects/Users + - `gitlab-org/gitlab` project @@ -55,60 +56,97 @@ Are there any other stages or teams involved that need to be kept in the loop? -## Rollout Timeline +## Rollout Steps - +### Rollout on non-production environments -**Initial Rollout** +- [ ] Ensure that the feature MRs have been deployed to non-production environments. + - [ ] `/chatops run auto_deploy status ` +- [ ] Enable the feature globally on non-production environments. + - [ ] `/chatops run feature set true --dev` + - [ ] `/chatops run feature set true --staging` +- [ ] Verify that the feature works as expected. Posting the QA result in this issue is preferable. -*Preparation Phase* -- [ ] Enable on staging (`/chatops run feature set feature_name true --staging`) +### Preparation before production rollout -- [ ] Test on staging +- [ ] Ensure that the feature MRs have been deployed to both production and canary. + - [ ] `/chatops run auto_deploy status ` +- [ ] Check if the feature flag change needs to be accompanied with a + [change management issue](https://about.gitlab.com/handbook/engineering/infrastructure/change-management/#feature-flags-and-the-change-management-process). + Cross link the issue here if it does. +- [ ] Ensure that you or a representative in development can be available for at least 2 hours after feature flag updates in production. + If a different developer will be covering, or an exception is needed, please inform the oncall SRE by using the `@sre-oncall` Slack alias. +- [ ] Ensure that documentation has been updated ([More info](https://docs.gitlab.com/ee/development/documentation/feature_flags.html#features-that-became-enabled-by-default)). +- [ ] Announce on [the feature issue](ISSUE LINK) an estimated time this will be enabled on GitLab.com. +- [ ] If the feature flag in code has [an actor](https://docs.gitlab.com/ee/development/feature_flags/#feature-actors), enable it on GitLab.com for [testing groups/projects](#testing-groupsprojectsusers). + - [ ] `/chatops run feature set --= true` +- [ ] Verify that the feature works as expected. Posting the QA result in this issue is preferable. -- [ ] Ensure that documentation has been updated ([More info](https://docs.gitlab.com/ee/development/documentation/feature_flags.html#features-that-became-enabled-by-default)) +### Global rollout on production -- [ ] Announce on the issue an estimated time this will be enabled on GitLab.com +- [ ] [Incrementally roll out](https://docs.gitlab.com/ee/development/feature_flags/controls.html#process) the feature. + - If the feature flag in code has [an actor](https://docs.gitlab.com/ee/development/feature_flags/#feature-actors), perform **actor-based** rollout. + - [ ] `/chatops run feature set --actors` + - If the feature flag in code does **NOT** have [an actor](https://docs.gitlab.com/ee/development/feature_flags/#feature-actors), perform time-based rollout (**random** rollout). + - [ ] `/chatops run feature set ` + - Enable the feature globally on production environment. + - [ ] `/chatops run feature set true` +- [ ] Announce on [the feature issue](ISSUE LINK) that the feature has been globally enabled. +- [ ] Cross-post chatops slack command to `#support_gitlab-com`. + ([more guidance when this is necessary in the dev docs](https://docs.gitlab.com/ee/development/feature_flags/controls.html#communicate-the-change)) and in your team channel +- [ ] Wait for [at least one day for the verification term](https://about.gitlab.com/handbook/product-development-flow/feature-flag-lifecycle/#including-a-feature-behind-feature-flag-in-the-final-release). -*Partial Rollout Phase* -- [ ] Enable on GitLab.com for individual groups/projects listed above and verify behaviour (`/chatops run feature set --project=gitlab-org/gitlab feature_name true`) +### (Optional) Release the feature with the feature flag -- [ ] Verify behaviour (See Beta Groups) and add details with screenshots as a comment on this issue +If you're still unsure whether the feature is [deemed stable](https://about.gitlab.com/handbook/product-development-flow/feature-flag-lifecycle/#including-a-feature-behind-feature-flag-in-the-final-release) +but want to release it in the current milestone, you can change the default state of the feature flag to be enabled. +To do so, follow these steps: -- [ ] If it is possible to perform an incremental rollout, this should be preferred. Proposed increments are: `10%`, `50%`, `100%`. Proposed minimum time between increments is 15 minutes. - - When setting percentages, make sure that the feature works correctly between feature checks. See https://gitlab.com/gitlab-org/gitlab/-/issues/327117 for more information - - For actor-based rollout: `/chatops run feature set feature_name 10 --actors` - - For time-based rollout: `/chatops run feature set feature_name 10` +- [ ] Create a merge request with the following changes. Ask for review and merge it. + - [ ] Set the `default_enabled` attribute in [the feature flag definition](https://docs.gitlab.com/ee/development/feature_flags/#feature-flag-definition-and-validation) to `true`. + - [ ] Create [a changelog entry](https://docs.gitlab.com/ee/development/feature_flags/#changelog). +- [ ] Ensure that the above MR has been deployed to both production and canary. + If the merge request was deployed before [the code cutoff](https://about.gitlab.com/handbook/engineering/releases/#self-managed-releases-1), + the feature can be officially announced in a release blog post. + - [ ] `/chatops run auto_deploy status ` +- [ ] Close [the feature issue](ISSUE LINK) to indicate the feature will be released in the current milestone. -- [ ] Make the feature flag enabled by default i.e. Change `default_enabled` to `true` +**WARNING:** This approach has the downside that it makes it difficult for us to +[clean up](https://docs.gitlab.com/ee/development/feature_flags/controls.html#cleaning-up) the flag. +For example, on-premise users could disable the feature on their GitLab instance. But when you +remove the flag at some point, they suddenly see the feature as enabled and they can't roll it back +to the previous behavior. To avoid this potential breaking change, use this approach only for urgent +matters. -- [ ] Cross post chatops slack command to `#support_gitlab-com` ([more guidance when this is necessary in the dev docs](https://docs.gitlab.com/ee/development/feature_flags/controls.html#where-to-run-commands)) and in your team channel +### Release the feature +After the feature has been [deemed stable](https://about.gitlab.com/handbook/product-development-flow/feature-flag-lifecycle/#including-a-feature-behind-feature-flag-in-the-final-release), +the [clean up](https://docs.gitlab.com/ee/development/feature_flags/controls.html#cleaning-up) +should be done as soon as possible to permanently enable the feature and reduce complexity in the +codebase. -**Cleanup** - -This is an __important__ phase, that should be either done in the next Milestone or as soon as possible. For the cleanup phase, please follow our documentation on how to [clean up the feature flag](https://docs.gitlab.com/ee/development/feature_flags/controls.html#cleaning-up). - - -- [ ] Announce on the issue that the flag has been enabled - -- [ ] Remove `:feature_name` feature flag - - [ ] Remove all references to the feature flag from the codebase - - [ ] Remove the YAML definitions for the feature from the repository - - [ ] Create a Changelog Entry - -- [ ] Clean up the feature flag from all environments by running this chatops command in `#production` channel `/chatops run feature delete some_feature`. - -**Final Step** - -- [ ] Close this rollout issue for the feature flag after the feature flag is removed from the codebase. + +- [ ] Create a merge request to remove `` feature flag. Ask for review and merge it. + - [ ] Remove all references to the feature flag from the codebase. + - [ ] Remove the YAML definitions for the feature from the repository. + - [ ] Create [a changelog entry](https://docs.gitlab.com/ee/development/feature_flags/#changelog). +- [ ] Ensure that the above MR has been deployed to both production and canary. + If the merge request was deployed before [the code cutoff](https://about.gitlab.com/handbook/engineering/releases/#self-managed-releases-1), + the feature can be officially announced in a release blog post. + - [ ] `/chatops run auto_deploy status ` +- [ ] Close [the feature issue](ISSUE LINK) to indicate the feature will be released in the current milestone. +- [ ] Clean up the feature flag from all environments by running these chatops command in `#production` channel: + - [ ] `/chatops run feature delete --dev` + - [ ] `/chatops run feature delete --staging` + - [ ] `/chatops run feature delete ` +- [ ] Close this rollout issue. ## Rollback Steps - [ ] This feature can be disabled by running the following Chatops command: ``` -/chatops run feature set --project=gitlab-org/gitlab feature_name false +/chatops run feature set false ``` /label ~"feature flag" diff --git a/.gitlab/issue_templates/Basic Proposal.md b/.gitlab/issue_templates/Feature Proposal - basic.md similarity index 68% rename from .gitlab/issue_templates/Basic Proposal.md rename to .gitlab/issue_templates/Feature Proposal - basic.md index 8d47e87f8a..099243c05c 100644 --- a/.gitlab/issue_templates/Basic Proposal.md +++ b/.gitlab/issue_templates/Feature Proposal - basic.md @@ -4,7 +4,7 @@ - /label ~devops:: ~group: ~Category: -/label ~"GitLab Core"/~"GitLab Premium"/~"GitLab Ultimate" +/label ~"GitLab Free"/~"GitLab Premium"/~"GitLab Ultimate" /label ~feature /label ~documentation /label ~direction diff --git a/.gitlab/issue_templates/Geo: Replicate a new Git repository type.md b/.gitlab/issue_templates/Geo Replicate a new Git repository type.md similarity index 99% rename from .gitlab/issue_templates/Geo: Replicate a new Git repository type.md rename to .gitlab/issue_templates/Geo Replicate a new Git repository type.md index 6b2d732f24..feabef36f2 100644 --- a/.gitlab/issue_templates/Geo: Replicate a new Git repository type.md +++ b/.gitlab/issue_templates/Geo Replicate a new Git repository type.md @@ -24,7 +24,7 @@ This issue is for implementing Geo replication and verification of Cool Widgets. For more background, see [Geo self-service framework](https://gitlab.com/gitlab-org/gitlab/-/blob/master/doc/development/geo/framework.md). -In order to implement and test this feature, you need to first [set up Geo locally](https://gitlab.com/gitlab-org/gitlab-development-kit/blob/master/doc/howto/geo.md). +In order to implement and test this feature, you need to first [set up Geo locally](https://gitlab.com/gitlab-org/gitlab-development-kit/blob/main/doc/howto/geo.md). There are three main sections below. It is a good idea to structure your merge requests this way as well: diff --git a/.gitlab/issue_templates/Geo: Replicate a new blob type.md b/.gitlab/issue_templates/Geo Replicate a new blob type.md similarity index 99% rename from .gitlab/issue_templates/Geo: Replicate a new blob type.md rename to .gitlab/issue_templates/Geo Replicate a new blob type.md index 12fe6a6f5b..b9e69d36ec 100644 --- a/.gitlab/issue_templates/Geo: Replicate a new blob type.md +++ b/.gitlab/issue_templates/Geo Replicate a new blob type.md @@ -24,7 +24,7 @@ This issue is for implementing Geo replication and verification of Cool Widgets. For more background, see [Geo self-service framework](https://gitlab.com/gitlab-org/gitlab/-/blob/master/doc/development/geo/framework.md). -In order to implement and test this feature, you need to first [set up Geo locally](https://gitlab.com/gitlab-org/gitlab-development-kit/blob/master/doc/howto/geo.md). +In order to implement and test this feature, you need to first [set up Geo locally](https://gitlab.com/gitlab-org/gitlab-development-kit/blob/main/doc/howto/geo.md). There are three main sections below. It is a good idea to structure your merge requests this way as well: diff --git a/.gitlab/merge_request_templates/Documentation.md b/.gitlab/merge_request_templates/Documentation.md index 0c507277ed..fac84d9814 100644 --- a/.gitlab/merge_request_templates/Documentation.md +++ b/.gitlab/merge_request_templates/Documentation.md @@ -23,7 +23,11 @@ - ~"development guidelines" when changing docs under `doc/development/*`, `CONTRIBUTING.md`, or `README.md`. - ~"development guidelines" and ~"Documentation guidelines" when changing docs under `development/documentation/*`. - ~"development guidelines" and ~"Description templates (.gitlab/\*)" when creating/updating issue and MR description templates. - - [ ] Assign the [designated Technical Writer](https://about.gitlab.com/handbook/engineering/ux/technical-writing/#assignments). + - [ ] [Request a review](https://docs.gitlab.com/ee/development/code_review.html#dogfooding-the-reviewers-feature) + from the [designated Technical Writer](https://about.gitlab.com/handbook/engineering/ux/technical-writing/#assignments). + +/label ~documentation +/assign me Do not add the ~"feature", ~"frontend", ~"backend", ~"bug", or ~"database" labels if you are only updating documentation. These labels will cause the MR to be added to code verification QA issues. @@ -68,5 +72,3 @@ For more information, see our documentation on [Merging a merge request](https:/ 1. [ ] Review by assigned maintainer, who can always request/require the above reviews. Maintainer's review can occur before or after a technical writer review. 1. [ ] Ensure a release milestone is set. 1. [ ] If there has not been a technical writer review, [create an issue for one using the Doc Review template](https://gitlab.com/gitlab-org/gitlab/issues/new?issuable_template=Doc%20Review). - -/label ~documentation diff --git a/.gitlab/merge_request_templates/New End To End Test.md b/.gitlab/merge_request_templates/New End To End Test.md index 9e6c4049b9..f9664c6315 100644 --- a/.gitlab/merge_request_templates/New End To End Test.md +++ b/.gitlab/merge_request_templates/New End To End Test.md @@ -14,7 +14,8 @@ Please link to the respective test case in the testcases project - [ ] Ensure that no [transient bugs](https://about.gitlab.com/handbook/engineering/quality/issue-triage/#transient-bugs) are hidden accidentally due to the usage of `waits` and `reloads`. - [ ] Verify the tags to ensure it runs on the desired test environments. - [ ] If this MR has a dependency on another MR, such as a GitLab QA MR, specify the order in which the MRs should be merged. -- [ ] (If applicable) Create a follow-up issue to document [the special setup](https://docs.gitlab.com/ee/development/testing_guide/end_to_end/running_tests_that_require_special_setup.html) necessary to run the test: ISSUE_LINK +- [ ] (If applicable) Create a follow-up issue to document [the special setup](https://docs.gitlab.com/ee/development/testing_guide/end_to_end/running_tests_that_require_special_setup.html) necessary to run the test: ISSUE_LINK +- [ ] If the test requires an admin's personal access token, ensure that the test passes on your local with and without the `GITLAB_QA_ADMIN_ACCESS_TOKEN` provided. /label ~"Quality" ~"QA" ~test diff --git a/.gitpod.yml b/.gitpod.yml index 950b06b40e..f6c1a60b03 100644 --- a/.gitpod.yml +++ b/.gitpod.yml @@ -1,4 +1,4 @@ -image: registry.gitlab.com/gitlab-org/gitlab-development-kit/gitpod-workspace:gitpod-workspace-image +image: registry.gitlab.com/gitlab-org/gitlab-development-kit/gitpod-workspace:stable tasks: @@ -7,8 +7,6 @@ tasks: - init: | echo "$(date) – Copying GDK" | tee -a /workspace/startup.log - rm -r /workspace/.rvm - mv $HOME/.rvm-workspace /workspace/.rvm cp -r $HOME/gitlab-development-kit /workspace/ ( set -e diff --git a/.haml-lint.yml b/.haml-lint.yml index 0ec1af6a6c..1d1c0fa1de 100644 --- a/.haml-lint.yml +++ b/.haml-lint.yml @@ -110,7 +110,6 @@ linters: - Layout/EmptyLineAfterGuardClause - Layout/LeadingCommentSpace - Layout/SpaceAroundOperators - - Layout/SpaceBeforeBlockBraces - Layout/SpaceBeforeComma - Layout/SpaceBeforeFirstArg - Layout/SpaceInsideHashLiteralBraces @@ -118,7 +117,6 @@ linters: - Layout/TrailingEmptyLines - Lint/LiteralInInterpolation - Lint/ParenthesesAsGroupedExpression - - Lint/RedundantWithIndex - Lint/SafeNavigationConsistency - Metrics/BlockNesting - Naming/VariableName @@ -133,7 +131,6 @@ linters: - Style/IdenticalConditionalBranches - Style/NegatedIf - Style/NestedTernaryOperator - - Style/ParenthesesAroundCondition - Style/SelfAssignment - Style/TernaryParentheses - Style/TrailingCommaInHashLiteral diff --git a/.markdownlint.json b/.markdownlint.json deleted file mode 100644 index e548e03fe2..0000000000 --- a/.markdownlint.json +++ /dev/null @@ -1,148 +0,0 @@ -{ - "default": true, - "first-header-h1": true, - "header-style": { - "style": "atx" - }, - "ul-style": { - "style": "dash" - }, - "no-trailing-spaces": false, - "line-length": false, - "no-duplicate-header": { - "allow_different_nesting": true - }, - "no-trailing-punctuation": { - "punctuation": ".,;:!。,;:!?" - }, - "ol-prefix": { - "style": "one" - }, - "no-inline-html": false, - "hr-style": { - "style": "---" - }, - "no-emphasis-as-heading": false, - "first-line-h1": false, - "code-block-style": { - "style": "fenced" - }, - "proper-names": { - "names": [ - "Akismet", - "Alertmanager", - "API", - "Asana", - "Auth0", - "Authentiq", - "Azure", - "Bamboo", - "Bitbucket", - "Bugzilla", - "CAS", - "CentOS", - "Consul", - "Debian", - "DevOps", - "Docker", - "DockerSlim", - "Elasticsearch", - "Facebook", - "fastlane", - "fluent-plugin-redis-slowlog", - "GDK", - "Geo", - "Git LFS", - "git-annex", - "Git", - "Gitaly", - "GitHub", - "GitLab Geo", - "GitLab Monitor", - "GitLab Operator", - "GitLab Pages", - "GitLab Rails", - "GitLab Runner", - "GitLab Shell", - "GitLab Workhorse", - "GitLab", - "Gitleaks", - "Gmail", - "Google", - "Grafana", - "Gzip", - "Helm", - "HipChat", - "ID", - "Ingress", - "jasmine-jquery", - "JavaScript", - "Jaeger", - "Jenkins", - "Jira", - "Jira Cloud", - "Jira Server", - "jQuery", - "JSON", - "JupyterHub", - "Karma", - "Kerberos", - "Knative", - "Kubernetes", - "LDAP", - "Let's Encrypt", - "Markdown", - "markdownlint", - "Mattermost", - "Microsoft", - "Minikube", - "MinIO", - "ModSecurity", - "NGINX Ingress", - "NGINX", - "OAuth", - "OAuth 2", - "OmniAuth", - "Omnibus GitLab", - "OpenID", - "OpenShift", - "PgBouncer", - "PostgreSQL", - "Praefect", - "Prometheus", - "Puma", - "puma-worker-killer", - "Python", - "Rake", - "Redis", - "Redmine", - "reCAPTCHA", - "Ruby", - "runit", - "Salesforce", - "SAML", - "Sentry", - "Sidekiq", - "Shibboleth", - "Slack", - "SMTP", - "SpotBugs", - "SSH", - "Tiller", - "TOML", - "Trello", - "Trello Power-Ups", - "TypeScript", - "Twitter", - "Ubuntu", - "Ultra Auth", - "Unicorn", - "unicorn-worker-killer", - "URL", - "WebdriverIO", - "YAML", - "YouTrack" - ], - "code_blocks": false - } -} diff --git a/.markdownlint.yml b/.markdownlint.yml new file mode 100644 index 0000000000..ccf2ef02ee --- /dev/null +++ b/.markdownlint.yml @@ -0,0 +1,140 @@ +# Base Markdownlint configuration +# Extended Markdownlint configuration in doc/.markdownlint/ +"default": true +"first-header-h1": true +"header-style": + "style": "atx" +"ul-style": + "style": "dash" +"no-trailing-spaces": false +"line-length": false +"no-duplicate-header": + "allow_different_nesting": true +"no-trailing-punctuation": + "punctuation": ".,;:!。,;:!?" +"ol-prefix": + "style": "one" +"no-inline-html": false +"hr-style": + "style": "---" +"no-emphasis-as-heading": false +"first-line-h1": false +"code-block-style": + "style": "fenced" +"proper-names": + "names": [ + "Akismet", + "Alertmanager", + "API", + "Asana", + "Auth0", + "Authentiq", + "Azure", + "Bamboo", + "Bitbucket", + "Bugzilla", + "CAS", + "CentOS", + "Consul", + "Debian", + "DevOps", + "Docker", + "DockerSlim", + "Elasticsearch", + "Facebook", + "fastlane", + "fluent-plugin-redis-slowlog", + "GDK", + "Geo", + "Git LFS", + "git-annex", + "Git", + "Gitaly", + "GitHub", + "GitLab Geo", + "GitLab Monitor", + "GitLab Operator", + "GitLab Pages", + "GitLab Rails", + "GitLab Runner", + "GitLab Shell", + "GitLab Workhorse", + "GitLab", + "Gitleaks", + "Gmail", + "Google", + "Grafana", + "Gzip", + "Helm", + "HipChat", + "ID", + "Ingress", + "jasmine-jquery", + "JavaScript", + "Jaeger", + "Jenkins", + "Jira", + "Jira Cloud", + "Jira Server", + "jQuery", + "JSON", + "JupyterHub", + "Karma", + "Kerberos", + "Knative", + "Kubernetes", + "LDAP", + "Let's Encrypt", + "Markdown", + "markdownlint", + "Mattermost", + "Microsoft", + "Minikube", + "MinIO", + "ModSecurity", + "NGINX Ingress", + "NGINX", + "OAuth", + "OAuth 2", + "OmniAuth", + "Omnibus GitLab", + "OpenID", + "OpenShift", + "PgBouncer", + "PostgreSQL", + "Praefect", + "Prometheus", + "Puma", + "puma-worker-killer", + "Python", + "Rake", + "Redis", + "Redmine", + "reCAPTCHA", + "Ruby", + "runit", + "Salesforce", + "SAML", + "Sentry", + "Sidekiq", + "Shibboleth", + "Slack", + "SMTP", + "SpotBugs", + "SSH", + "Tiller", + "TOML", + "Trello", + "Trello Power-Ups", + "TypeScript", + "Twitter", + "Ubuntu", + "Ultra Auth", + "Unicorn", + "unicorn-worker-killer", + "URL", + "WebdriverIO", + "YAML", + "YouTrack" + ] + "code_blocks": false diff --git a/.overcommit.yml.example b/.overcommit.yml.example index e0f55dd4a1..c1c2395ca9 100644 --- a/.overcommit.yml.example +++ b/.overcommit.yml.example @@ -48,7 +48,7 @@ PreCommit: enabled: true description: 'Lint documentation for Markdown errors' required_executable: 'node_modules/.bin/markdownlint' - flags: ['--config', '.markdownlint.json', 'doc/**/*.md'] + flags: ['--config', '.markdownlint.yml', 'doc/**/*.md'] install_command: 'yarn install' include: - 'doc/**/*.md' diff --git a/.rubocop.yml b/.rubocop.yml index a19cba5eb4..d086bdf736 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -307,6 +307,9 @@ Cop/ActiveRecordAssociationReload: - 'spec/**/*' - 'ee/spec/**/*' +Cop/ActiveModelErrorsDirectManipulation: + Enabled: true + Gitlab/AvoidFeatureGet: Enabled: true @@ -572,6 +575,9 @@ Rails/SaveBang: - 'ee/spec/**/*.rb' - 'qa/spec/**/*.rb' - 'qa/qa/specs/**/*.rb' + Exclude: + - spec/models/wiki_page/**/* + - spec/models/wiki_page_spec.rb Cop/PutProjectRoutesUnderScope: Include: diff --git a/.rubocop_manual_todo.yml b/.rubocop_manual_todo.yml index f2aa94ac7e..e5cb55488d 100644 --- a/.rubocop_manual_todo.yml +++ b/.rubocop_manual_todo.yml @@ -13,22 +13,9 @@ # WIP See https://gitlab.com/gitlab-org/gitlab/-/issues/322903 Graphql/Descriptions: Exclude: - - 'app/graphql/types/access_level_enum.rb' - - 'app/graphql/types/base_enum.rb' - - 'app/graphql/types/ci/pipeline_config_source_enum.rb' - - 'app/graphql/types/ci/pipeline_status_enum.rb' - - 'app/graphql/types/container_expiration_policy_cadence_enum.rb' - - 'app/graphql/types/container_expiration_policy_keep_enum.rb' - - 'app/graphql/types/container_expiration_policy_older_than_enum.rb' - - 'app/graphql/types/notes/position_type_enum.rb' - - 'app/graphql/types/packages/package_type_enum.rb' - 'app/graphql/types/snippets/blob_action_enum.rb' - - 'app/graphql/types/snippets/type_enum.rb' - 'app/graphql/types/snippets/visibility_scopes_enum.rb' - - 'app/graphql/types/todo_action_enum.rb' - - 'app/graphql/types/tree/type_enum.rb' - 'ee/app/graphql/ee/types/list_limit_metric_enum.rb' - - 'ee/app/graphql/types/alert_management/payload_alert_field_name_enum.rb' - 'ee/app/graphql/types/epic_state_enum.rb' - 'ee/app/graphql/types/health_status_enum.rb' - 'ee/app/graphql/types/iteration_state_enum.rb' @@ -60,18 +47,11 @@ Rails/SaveBang: - '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/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/burndown_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/gitlab_subscription_spec.rb' - 'ee/spec/models/issue_spec.rb' @@ -92,8 +72,6 @@ Rails/SaveBang: - 'ee/spec/models/visible_approvable_spec.rb' - 'ee/spec/models/vulnerabilities/feedback_spec.rb' - 'ee/spec/models/vulnerabilities/issue_link_spec.rb' - - 'ee/spec/services/approval_rules/finalize_service_spec.rb' - - 'ee/spec/services/approval_rules/update_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' @@ -126,23 +104,6 @@ Rails/SaveBang: - 'ee/spec/services/status_page/trigger_publish_service_spec.rb' - 'ee/spec/services/todo_service_spec.rb' - 'ee/spec/services/vulnerability_feedback/create_service_spec.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/policies/protected_environments_shared_examples.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_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/browser_ui/3_create/repository/push_mirroring_lfs_over_http_spec.rb' - 'qa/qa/specs/features/ee/browser_ui/3_create/repository/pull_mirroring_over_http_spec.rb' @@ -151,11 +112,6 @@ Rails/SaveBang: - 'spec/controllers/boards/issues_controller_spec.rb' - 'spec/controllers/sent_notifications_controller_spec.rb' - 'spec/controllers/sessions_controller_spec.rb' - - 'spec/frontend/fixtures/issues.rb' - - 'spec/frontend/fixtures/merge_requests.rb' - - 'spec/graphql/mutations/merge_requests/set_locked_spec.rb' - - 'spec/graphql/mutations/merge_requests/set_wip_spec.rb' - - 'spec/graphql/resolvers/boards_resolver_spec.rb' - 'spec/lib/after_commit_queue_spec.rb' - 'spec/lib/backup/manager_spec.rb' - 'spec/lib/gitlab/alerting/alert_spec.rb' @@ -200,9 +156,6 @@ Rails/SaveBang: - 'spec/lib/gitlab/middleware/go_spec.rb' - 'spec/lib/gitlab/shard_health_cache_spec.rb' - 'spec/mailers/notify_spec.rb' - - 'spec/models/appearance_spec.rb' - - 'spec/models/application_record_spec.rb' - - 'spec/models/application_setting_spec.rb' - 'spec/models/clusters/applications/helm_spec.rb' - 'spec/models/container_repository_spec.rb' - 'spec/models/design_management/version_spec.rb' @@ -219,9 +172,6 @@ Rails/SaveBang: - 'spec/models/jira_import_state_spec.rb' - 'spec/models/key_spec.rb' - 'spec/models/lfs_objects_project_spec.rb' - - 'spec/models/member_spec.rb' - - 'spec/models/members/group_member_spec.rb' - - 'spec/models/members/project_member_spec.rb' - 'spec/models/merge_request_spec.rb' - 'spec/models/milestone_spec.rb' - 'spec/models/namespace_spec.rb' @@ -231,10 +181,6 @@ Rails/SaveBang: - 'spec/models/operations/feature_flags/strategy_spec.rb' - 'spec/models/operations/feature_flags/user_list_spec.rb' - 'spec/models/pages_domain_spec.rb' - - 'spec/models/project_auto_devops_spec.rb' - - 'spec/models/project_feature_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' @@ -242,14 +188,8 @@ Rails/SaveBang: - 'spec/models/resource_milestone_event_spec.rb' - 'spec/models/route_spec.rb' - 'spec/models/sentry_issue_spec.rb' - - 'spec/models/service_spec.rb' - 'spec/models/snippet_spec.rb' - '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' Rails/TimeZone: Enabled: true @@ -410,61 +350,12 @@ Rails/TimeZone: # WIP: https://gitlab.com/gitlab-org/gitlab/-/issues/325836 RSpec/EmptyLineAfterFinalLetItBe: Exclude: - - ee/spec/controllers/groups/analytics/cycle_analytics/stages_controller_spec.rb - - ee/spec/controllers/groups/analytics/cycle_analytics/summary_controller_spec.rb - - ee/spec/controllers/groups/analytics/cycle_analytics/value_streams_controller_spec.rb - - ee/spec/controllers/groups/analytics/tasks_by_type_controller_spec.rb - - ee/spec/controllers/groups/autocomplete_sources_controller_spec.rb - - ee/spec/controllers/groups/insights_controller_spec.rb - - ee/spec/controllers/groups/todos_controller_spec.rb - - ee/spec/controllers/projects/branches_controller_spec.rb - - ee/spec/controllers/projects/incident_management/oncall_schedules_controller_spec.rb - - ee/spec/controllers/projects/insights_controller_spec.rb - - ee/spec/controllers/projects/licenses_controller_spec.rb - - ee/spec/controllers/projects/merge_requests_controller_spec.rb - - ee/spec/controllers/projects/mirrors_controller_spec.rb - - ee/spec/controllers/projects/threat_monitoring_controller_spec.rb - ee/spec/controllers/subscriptions_controller_spec.rb - - ee/spec/features/boards/group_boards/multiple_boards_spec.rb - ee/spec/features/ci_shared_runner_warnings_spec.rb - - ee/spec/features/dashboards/todos_spec.rb - - ee/spec/features/groups/groups_security_credentials_spec.rb - - ee/spec/features/groups/hooks/user_edits_hooks_spec.rb - - ee/spec/features/groups/iterations/user_edits_iteration_spec.rb - - ee/spec/features/groups/usage_quotas_spec.rb - ee/spec/features/integrations/jira/jira_issues_list_spec.rb - - ee/spec/features/issues/bulk_assignment_epic_spec.rb - - ee/spec/features/issues/user_uses_quick_actions_spec.rb - ee/spec/features/markdown/metrics_spec.rb - ee/spec/features/registrations/group_invites_during_signup_flow_spec.rb - ee/spec/features/subscriptions_spec.rb - - ee/spec/graphql/ee/mutations/concerns/mutations/resolves_issuable_spec.rb - - ee/spec/graphql/mutations/boards/update_epic_user_preferences_spec.rb - - ee/spec/graphql/mutations/clusters/agent_tokens/create_spec.rb - - ee/spec/graphql/mutations/compliance_management/frameworks/create_spec.rb - - ee/spec/graphql/mutations/compliance_management/frameworks/destroy_spec.rb - - ee/spec/graphql/mutations/compliance_management/frameworks/update_spec.rb - - ee/spec/graphql/mutations/dast_scanner_profiles/delete_spec.rb - - ee/spec/graphql/mutations/epics/add_issue_spec.rb - - ee/spec/graphql/mutations/gitlab_subscriptions/activate_spec.rb - - ee/spec/graphql/mutations/incident_management/oncall_rotation/create_spec.rb - - ee/spec/graphql/mutations/incident_management/oncall_rotation/destroy_spec.rb - - ee/spec/graphql/mutations/incident_management/oncall_schedule/create_spec.rb - - ee/spec/graphql/mutations/incident_management/oncall_schedule/destroy_spec.rb - - ee/spec/graphql/mutations/incident_management/oncall_schedule/update_spec.rb - - ee/spec/graphql/mutations/issues/set_epic_spec.rb - - ee/spec/graphql/mutations/requirements_management/export_requirements_spec.rb - - ee/spec/graphql/mutations/vulnerabilities/create_external_issue_link_spec.rb - - ee/spec/graphql/types/issue_type_spec.rb - - ee/spec/helpers/ee/graph_helper_spec.rb - - ee/spec/helpers/ee/issues_helper_spec.rb - - ee/spec/helpers/ee/projects/incidents_helper_spec.rb - - ee/spec/helpers/ee/projects/security/api_fuzzing_configuration_helper_spec.rb - - ee/spec/helpers/ee/projects/security/configuration_helper_spec.rb - - ee/spec/helpers/ee/projects/security/sast_configuration_helper_spec.rb - - ee/spec/helpers/ee/trial_helper_spec.rb - - ee/spec/helpers/ee/user_callouts_helper_spec.rb - - ee/spec/helpers/vulnerabilities_helper_spec.rb - ee/spec/lib/ee/api/entities/user_with_admin_spec.rb - ee/spec/lib/ee/api/entities/vulnerability_spec.rb - ee/spec/lib/ee/event_filter_spec.rb @@ -484,9 +375,6 @@ RSpec/EmptyLineAfterFinalLetItBe: - ee/spec/lib/gitlab/analytics/cycle_analytics/summary/group/stage_time_summary_spec.rb - ee/spec/lib/gitlab/checks/diff_check_spec.rb - ee/spec/lib/gitlab/code_owners/loader_spec.rb - - ee/spec/lib/gitlab/elastic/document_reference_spec.rb - - ee/spec/lib/gitlab/elastic/group_search_results_spec.rb - - ee/spec/lib/gitlab/elastic/project_search_results_spec.rb - ee/spec/lib/gitlab/git_access_spec.rb - ee/spec/lib/gitlab/git_access_wiki_spec.rb - ee/spec/lib/gitlab/graphql/aggregations/vulnerability_statistics/lazy_aggregate_spec.rb @@ -553,8 +441,6 @@ RSpec/EmptyLineAfterFinalLetItBe: - ee/spec/services/alert_management/process_prometheus_alert_service_spec.rb - ee/spec/services/approval_rules/create_service_spec.rb - ee/spec/services/audit_event_service_spec.rb - - ee/spec/services/award_emojis/add_service_spec.rb - - ee/spec/services/award_emojis/destroy_service_spec.rb - ee/spec/services/billable_members/destroy_service_spec.rb - ee/spec/services/boards/epic_boards/destroy_service_spec.rb - ee/spec/services/clusters/agent_tokens/create_service_spec.rb @@ -563,7 +449,6 @@ RSpec/EmptyLineAfterFinalLetItBe: - ee/spec/services/dast_scanner_profiles/destroy_service_spec.rb - ee/spec/services/dast_scanner_profiles/update_service_spec.rb - ee/spec/services/dast_site_profiles/destroy_service_spec.rb - - ee/spec/services/dora/aggregate_metrics_service_spec.rb - ee/spec/services/external_approval_rules/create_service_spec.rb - ee/spec/services/external_approval_rules/destroy_service_spec.rb - ee/spec/services/external_approval_rules/update_service_spec.rb @@ -574,12 +459,6 @@ RSpec/EmptyLineAfterFinalLetItBe: - ee/spec/services/merge_request_approval_settings/update_service_spec.rb - ee/spec/services/personal_access_tokens/create_service_audit_log_spec.rb - ee/spec/services/personal_access_tokens/groups/update_lifetime_service_spec.rb - - ee/spec/services/projects/after_rename_service_spec.rb - - ee/spec/services/projects/alerting/notify_service_spec.rb - - ee/spec/services/projects/destroy_service_spec.rb - - ee/spec/services/projects/gitlab_projects_import_service_spec.rb - - ee/spec/services/projects/import_export/export_service_spec.rb - - ee/spec/services/projects/transfer_service_spec.rb - ee/spec/services/push_rules/create_or_update_service_spec.rb - ee/spec/services/quality_management/test_cases/create_service_spec.rb - ee/spec/services/quick_actions/interpret_service_spec.rb @@ -588,11 +467,6 @@ RSpec/EmptyLineAfterFinalLetItBe: - ee/spec/services/requirements_management/update_requirement_service_spec.rb - ee/spec/services/resource_access_tokens/create_service_spec.rb - ee/spec/services/resource_access_tokens/revoke_service_spec.rb - - ee/spec/services/todo_service_spec.rb - - ee/spec/support/shared_examples/graphql/geo/geo_registries_resolver_shared_examples.rb - - ee/spec/support/shared_examples/graphql/mutations/set_multiple_assignees_shared_examples.rb - - ee/spec/support/shared_examples/quick_actions/issue/status_page_quick_actions_shared_examples.rb - - ee/spec/support/shared_examples/services/search_notes_shared_examples.rb - spec/controllers/confirmations_controller_spec.rb - spec/controllers/dashboard/projects_controller_spec.rb - spec/controllers/invites_controller_spec.rb @@ -606,30 +480,8 @@ RSpec/EmptyLineAfterFinalLetItBe: - spec/features/file_uploads/user_avatar_spec.rb - spec/features/issues/user_sees_breadcrumb_links_spec.rb - spec/features/markdown/metrics_spec.rb - - spec/features/merge_request/user_creates_merge_request_spec.rb - - spec/features/merge_request/user_posts_notes_spec.rb - spec/features/operations_sidebar_link_spec.rb - spec/features/participants_autocomplete_spec.rb - - spec/features/projects/badges/pipeline_badge_spec.rb - - spec/features/projects/branches/user_deletes_branch_spec.rb - - spec/features/projects/commit/cherry_pick_spec.rb - - spec/features/projects/commit/user_comments_on_commit_spec.rb - - spec/features/projects/commit/user_reverts_commit_spec.rb - - spec/features/projects/commit/user_views_user_status_on_commit_spec.rb - - spec/features/projects/confluence/user_views_confluence_page_spec.rb - - spec/features/projects/files/gitlab_ci_syntax_yml_dropdown_spec.rb - - spec/features/projects/issues/design_management/user_views_design_images_spec.rb - - spec/features/projects/labels/user_sees_links_to_issuables_spec.rb - - spec/features/projects/labels/user_views_labels_spec.rb - - spec/features/projects/members/master_adds_member_with_expiration_date_spec.rb - - spec/features/projects/merge_request_button_spec.rb - - spec/features/projects/pages/user_adds_domain_spec.rb - - spec/features/projects/pipelines/pipeline_spec.rb - - spec/features/projects/product_analytics/events_spec.rb - - spec/features/projects/settings/project_settings_spec.rb - - spec/features/projects/settings/repository_settings_spec.rb - - spec/features/projects/snippets/user_views_snippets_spec.rb - - spec/features/projects/user_sees_user_popover_spec.rb - spec/features/snippets/embedded_snippet_spec.rb - spec/finders/alert_management/alerts_finder_spec.rb - spec/finders/ci/commit_statuses_finder_spec.rb @@ -650,16 +502,6 @@ RSpec/EmptyLineAfterFinalLetItBe: - spec/frontend/fixtures/pipelines.rb - spec/graphql/features/authorization_spec.rb - spec/graphql/gitlab_schema_spec.rb - - spec/graphql/mutations/alert_management/alerts/todo/create_spec.rb - - spec/graphql/mutations/alert_management/create_alert_issue_spec.rb - - spec/graphql/mutations/alert_management/http_integration/create_spec.rb - - spec/graphql/mutations/alert_management/http_integration/destroy_spec.rb - - spec/graphql/mutations/alert_management/http_integration/reset_token_spec.rb - - spec/graphql/mutations/alert_management/http_integration/update_spec.rb - - spec/graphql/mutations/alert_management/prometheus_integration/create_spec.rb - - spec/graphql/mutations/alert_management/prometheus_integration/reset_token_spec.rb - - spec/graphql/mutations/alert_management/prometheus_integration/update_spec.rb - - spec/graphql/mutations/alert_management/update_alert_status_spec.rb - spec/graphql/mutations/boards/lists/update_spec.rb - spec/graphql/mutations/custom_emoji/create_spec.rb - spec/graphql/mutations/discussions/toggle_resolve_spec.rb @@ -667,53 +509,15 @@ RSpec/EmptyLineAfterFinalLetItBe: - spec/graphql/mutations/issues/set_severity_spec.rb - spec/graphql/mutations/labels/create_spec.rb - spec/graphql/mutations/notes/reposition_image_diff_note_spec.rb - - spec/graphql/resolvers/admin/analytics/usage_trends/measurements_resolver_spec.rb - - spec/graphql/resolvers/alert_management/alert_status_counts_resolver_spec.rb - - spec/graphql/resolvers/branch_commit_resolver_spec.rb - - spec/graphql/resolvers/design_management/designs_resolver_spec.rb - - spec/graphql/resolvers/design_management/version/designs_at_version_resolver_spec.rb - - spec/graphql/resolvers/group_milestones_resolver_spec.rb - - spec/graphql/resolvers/merge_request_pipelines_resolver_spec.rb - - spec/graphql/resolvers/metrics/dashboards/annotation_resolver_spec.rb - - spec/graphql/resolvers/project_pipeline_resolver_spec.rb - - spec/graphql/resolvers/project_pipelines_resolver_spec.rb - - spec/graphql/resolvers/timelog_resolver_spec.rb - spec/lib/bulk_imports/groups/loaders/group_loader_spec.rb - spec/lib/extracts_path_spec.rb - spec/lib/extracts_ref_spec.rb - spec/lib/gitlab/cache/ci/project_pipeline_status_spec.rb - - spec/lib/gitlab/ci/build/policy/changes_spec.rb - - spec/lib/gitlab/ci/config/external/file/local_spec.rb - - spec/lib/gitlab/ci/config/external/file/project_spec.rb - - spec/lib/gitlab/ci/config/external/file/template_spec.rb - - spec/lib/gitlab/ci/config/external/mapper_spec.rb - - spec/lib/gitlab/ci/config/external/processor_spec.rb - - spec/lib/gitlab/ci/pipeline/chain/build_spec.rb - - spec/lib/gitlab/ci/pipeline/chain/cancel_pending_pipelines_spec.rb - - spec/lib/gitlab/ci/pipeline/chain/template_usage_spec.rb - - spec/lib/gitlab/ci/pipeline/chain/validate/external_spec.rb - - spec/lib/gitlab/ci/pipeline/chain/validate/repository_spec.rb - - spec/lib/gitlab/ci/pipeline/seed/build_spec.rb - - spec/lib/gitlab/ci/pipeline/seed/deployment_spec.rb - - spec/lib/gitlab/ci/pipeline/seed/environment_spec.rb - - spec/lib/gitlab/ci/pipeline/seed/processable/resource_group_spec.rb - - spec/lib/gitlab/ci/reports/test_failure_history_spec.rb - - spec/lib/gitlab/ci/syntax_templates_spec.rb - - spec/lib/gitlab/ci/trace/chunked_io_spec.rb - - spec/lib/gitlab/ci/trace_spec.rb - spec/lib/gitlab/closing_issue_extractor_spec.rb - spec/lib/gitlab/composer/cache_spec.rb - spec/lib/gitlab/data_builder/wiki_page_spec.rb - - spec/lib/gitlab/database/partitioning_migration_helpers/foreign_key_helpers_spec.rb - - spec/lib/gitlab/database/partitioning_migration_helpers/table_management_helpers_spec.rb - spec/lib/gitlab/deploy_key_access_spec.rb - spec/lib/gitlab/email/handler/service_desk_handler_spec.rb - - spec/lib/gitlab/git/lfs_changes_spec.rb - - spec/lib/gitlab/git/merge_base_spec.rb - - spec/lib/gitlab/git/push_spec.rb - - spec/lib/gitlab/git_access_design_spec.rb - - spec/lib/gitlab/git_access_project_spec.rb - - spec/lib/gitlab/git_access_wiki_spec.rb - spec/lib/gitlab/gitaly_client/operation_service_spec.rb - spec/lib/gitlab/gl_repository/repo_type_spec.rb - spec/lib/gitlab/group_search_results_spec.rb @@ -723,11 +527,6 @@ RSpec/EmptyLineAfterFinalLetItBe: - spec/lib/gitlab/prometheus/query_variables_spec.rb - spec/lib/gitlab/reactive_cache_set_cache_spec.rb - spec/lib/gitlab/reference_extractor_spec.rb - - spec/lib/gitlab/repository_cache_spec.rb - - spec/lib/gitlab/repository_hash_cache_spec.rb - - spec/lib/gitlab/repository_set_cache_spec.rb - - spec/lib/gitlab/repository_size_checker_spec.rb - - spec/lib/gitlab/repository_size_error_message_spec.rb - spec/lib/gitlab/search_results_spec.rb - spec/lib/gitlab/shell_spec.rb - spec/models/abuse_report_spec.rb @@ -750,37 +549,15 @@ RSpec/EmptyLineAfterFinalLetItBe: - spec/models/note_spec.rb - spec/models/notification_setting_spec.rb - spec/models/operations/feature_flag_spec.rb - - spec/models/packages/dependency_spec.rb - - spec/models/packages/go/module_version_spec.rb - - spec/models/packages/package_spec.rb - - spec/models/packages/tag_spec.rb - spec/models/plan_limits_spec.rb - spec/models/prometheus_alert_spec.rb - spec/models/protected_branch/push_access_level_spec.rb - - spec/models/release_spec.rb - - spec/models/releases/evidence_spec.rb - - spec/models/releases/source_spec.rb - spec/models/repository_spec.rb - - spec/models/service_spec.rb - spec/models/snippet_repository_spec.rb - spec/models/snippet_spec.rb - spec/models/terraform/state_spec.rb - spec/models/u2f_registration_spec.rb - spec/models/user_spec.rb - - spec/models/wiki_page/meta_spec.rb - - spec/models/wiki_page_spec.rb - - spec/presenters/alert_management/alert_presenter_spec.rb - - spec/presenters/ci/pipeline_presenter_spec.rb - - spec/presenters/label_presenter_spec.rb - - spec/presenters/packages/composer/packages_presenter_spec.rb - - spec/presenters/packages/conan/package_presenter_spec.rb - - spec/presenters/packages/detail/package_presenter_spec.rb - - spec/presenters/packages/npm/package_presenter_spec.rb - - spec/presenters/packages/nuget/search_results_presenter_spec.rb - - spec/presenters/project_presenter_spec.rb - - spec/presenters/prometheus_alert_presenter_spec.rb - - spec/presenters/release_presenter_spec.rb - - spec/presenters/user_presenter_spec.rb - spec/requests/api/api_spec.rb - spec/requests/api/award_emoji_spec.rb - spec/requests/api/branches_spec.rb @@ -879,38 +656,11 @@ RSpec/EmptyLineAfterFinalLetItBe: - spec/services/auth/dependency_proxy_authentication_service_spec.rb - spec/services/auto_merge_service_spec.rb - spec/services/bulk_create_integration_service_spec.rb - - spec/services/ci/change_variable_service_spec.rb - - spec/services/ci/change_variables_service_spec.rb - - spec/services/ci/create_pipeline_service/cross_project_pipeline_spec.rb - - spec/services/ci/create_pipeline_service/custom_config_content_spec.rb - - spec/services/ci/create_pipeline_service/dry_run_spec.rb - - spec/services/ci/create_pipeline_service/environment_spec.rb - - spec/services/ci/create_pipeline_service/parameter_content_spec.rb - - spec/services/ci/create_pipeline_service/parent_child_pipeline_spec.rb - - spec/services/ci/create_pipeline_service_spec.rb - - spec/services/ci/create_web_ide_terminal_service_spec.rb - - spec/services/ci/expire_pipeline_cache_service_spec.rb - - spec/services/ci/external_pull_requests/create_pipeline_service_spec.rb - - spec/services/ci/find_exposed_artifacts_service_spec.rb - - spec/services/ci/job_artifacts/create_service_spec.rb - - spec/services/ci/parse_dotenv_artifact_service_spec.rb - - spec/services/ci/pipeline_bridge_status_service_spec.rb - - spec/services/ci/pipeline_trigger_service_spec.rb - - spec/services/ci/prometheus_metrics/observe_histograms_service_spec.rb - - spec/services/ci/register_job_service_spec.rb - - spec/services/ci/resource_groups/assign_resource_from_resource_group_service_spec.rb - - spec/services/ci/retry_build_service_spec.rb - - spec/services/ci/stop_environments_service_spec.rb - spec/services/clusters/applications/prometheus_health_check_service_spec.rb - spec/services/container_expiration_policy_service_spec.rb - spec/services/dependency_proxy/find_or_create_manifest_service_spec.rb - spec/services/discussions/resolve_service_spec.rb - spec/services/discussions/unresolve_service_spec.rb - - spec/services/feature_flags/create_service_spec.rb - - spec/services/feature_flags/destroy_service_spec.rb - - spec/services/feature_flags/disable_service_spec.rb - - spec/services/feature_flags/enable_service_spec.rb - - spec/services/feature_flags/update_service_spec.rb - spec/services/git/branch_push_service_spec.rb - spec/services/import/bitbucket_server_service_spec.rb - spec/services/incident_management/incidents/create_service_spec.rb @@ -999,27 +749,6 @@ RSpec/EmptyLineAfterFinalLetItBe: - spec/views/search/_results.html.haml_spec.rb - spec/views/shared/_label_row.html.haml_spec.rb - spec/views/shared/milestones/_top.html.haml_spec.rb - - spec/workers/ci/create_cross_project_pipeline_worker_spec.rb - - spec/workers/cluster_update_app_worker_spec.rb - - spec/workers/environments/canary_ingress/update_worker_spec.rb - - spec/workers/expire_job_cache_worker_spec.rb - - spec/workers/gitlab/jira_import/import_issue_worker_spec.rb - - spec/workers/gitlab/jira_import/stage/start_import_worker_spec.rb - - spec/workers/gitlab/jira_import/stuck_jira_import_jobs_worker_spec.rb - - spec/workers/import_issues_csv_worker_spec.rb - - spec/workers/incident_management/add_severity_system_note_worker_spec.rb - - spec/workers/incident_management/process_alert_worker_spec.rb - - spec/workers/incident_management/process_prometheus_alert_worker_spec.rb - - spec/workers/jira_connect/sync_project_worker_spec.rb - - spec/workers/namespaces/onboarding_issue_created_worker_spec.rb - - spec/workers/packages/composer/cache_update_worker_spec.rb - - spec/workers/pages_domain_ssl_renewal_cron_worker_spec.rb - - spec/workers/projects/git_garbage_collect_worker_spec.rb - - spec/workers/prometheus/create_default_alerts_worker_spec.rb - - spec/workers/propagate_integration_group_worker_spec.rb - - spec/workers/propagate_integration_project_worker_spec.rb - - spec/workers/run_pipeline_schedule_worker_spec.rb - - spec/workers/update_external_pull_requests_worker_spec.rb RSpec/TimecopFreeze: Exclude: @@ -1604,7 +1333,6 @@ RSpec/AnyInstanceOf: - 'spec/uploaders/workers/object_storage/migrate_uploads_worker_spec.rb' - 'spec/views/layouts/_head.html.haml_spec.rb' - 'spec/views/projects/artifacts/_artifact.html.haml_spec.rb' - - 'spec/views/shared/runners/show.html.haml_spec.rb' - 'spec/workers/archive_trace_worker_spec.rb' - 'spec/workers/build_coverage_worker_spec.rb' - 'spec/workers/build_hooks_worker_spec.rb' @@ -1689,9 +1417,6 @@ Gitlab/NamespacedClass: - 'app/finders/context_commits_finder.rb' - 'app/finders/contributed_projects_finder.rb' - 'app/finders/deployments_finder.rb' - - 'app/finders/environment_names_finder.rb' - - 'app/finders/environments_finder.rb' - - 'app/finders/environments_by_deployments_finder.rb' - 'app/finders/events_finder.rb' - 'app/finders/feature_flags_finder.rb' - 'app/finders/feature_flags_user_lists_finder.rb' @@ -1787,6 +1512,7 @@ Gitlab/NamespacedClass: - 'app/models/concerns/uniquify.rb' - 'app/models/container_expiration_policy.rb' - 'app/models/container_repository.rb' + - 'app/models/context_commits_diff.rb' - 'app/models/custom_emoji.rb' - 'app/models/data_list.rb' - 'app/models/deploy_key.rb' @@ -1846,6 +1572,7 @@ Gitlab/NamespacedClass: - 'app/models/individual_note_discussion.rb' - 'app/models/instance_configuration.rb' - 'app/models/instance_metadata.rb' + - 'app/models/integration.rb' - 'app/models/internal_id.rb' - 'app/models/issuable_severity.rb' - 'app/models/issue.rb' @@ -1933,21 +1660,13 @@ Gitlab/NamespacedClass: - 'app/models/project_repository_storage_move.rb' - 'app/models/project_services/alerts_service.rb' - 'app/models/project_services/alerts_service_data.rb' - - 'app/models/project_services/asana_service.rb' - - 'app/models/project_services/assembla_service.rb' - - 'app/models/project_services/bamboo_service.rb' - 'app/models/project_services/bugzilla_service.rb' - 'app/models/project_services/buildkite_service.rb' - - 'app/models/project_services/builds_email_service.rb' - - 'app/models/project_services/campfire_service.rb' - 'app/models/project_services/chat_notification_service.rb' - 'app/models/project_services/ci_service.rb' - - 'app/models/project_services/confluence_service.rb' - 'app/models/project_services/custom_issue_tracker_service.rb' - - 'app/models/project_services/datadog_service.rb' - 'app/models/project_services/discord_service.rb' - 'app/models/project_services/drone_ci_service.rb' - - 'app/models/project_services/emails_on_push_service.rb' - 'app/models/project_services/ewm_service.rb' - 'app/models/project_services/external_wiki_service.rb' - 'app/models/project_services/flowdock_service.rb' @@ -2014,7 +1733,6 @@ Gitlab/NamespacedClass: - 'app/models/self_managed_prometheus_alert_event.rb' - 'app/models/sent_notification.rb' - 'app/models/sentry_issue.rb' - - 'app/models/service.rb' - 'app/models/service_desk_setting.rb' - 'app/models/service_list.rb' - 'app/models/shard.rb' @@ -2092,6 +1810,7 @@ Gitlab/NamespacedClass: - 'app/policies/group_policy.rb' - 'app/policies/identity_provider_policy.rb' - 'app/policies/instance_metadata_policy.rb' + - 'app/policies/integration_policy.rb' - 'app/policies/issuable_policy.rb' - 'app/policies/issue_policy.rb' - 'app/policies/merge_request_policy.rb' @@ -2112,7 +1831,6 @@ Gitlab/NamespacedClass: - 'app/policies/release_policy.rb' - 'app/policies/repository_policy.rb' - 'app/policies/resource_label_event_policy.rb' - - 'app/policies/service_policy.rb' - 'app/policies/suggestion_policy.rb' - 'app/policies/timebox_policy.rb' - 'app/policies/timelog_policy.rb' @@ -2201,6 +1919,7 @@ Gitlab/NamespacedClass: - 'app/serializers/container_repository_entity.rb' - 'app/serializers/container_tag_entity.rb' - 'app/serializers/container_tags_serializer.rb' + - 'app/serializers/context_commits_diff_entity.rb' - 'app/serializers/current_board_entity.rb' - 'app/serializers/current_board_serializer.rb' - 'app/serializers/current_user_entity.rb' @@ -2252,6 +1971,8 @@ Gitlab/NamespacedClass: - 'app/serializers/group_entity.rb' - 'app/serializers/group_group_link_entity.rb' - 'app/serializers/group_group_link_serializer.rb' + - 'app/serializers/group_issuable_autocomplete_entity.rb' + - 'app/serializers/group_issuable_autocomplete_serializer.rb' - 'app/serializers/group_serializer.rb' - 'app/serializers/issuable_entity.rb' - 'app/serializers/issuable_sidebar_basic_entity.rb' @@ -2354,6 +2075,7 @@ Gitlab/NamespacedClass: - 'app/services/auto_merge_service.rb' - 'app/services/base_container_service.rb' - 'app/services/base_count_service.rb' + - 'app/services/base_project_service.rb' - 'app/services/base_renderer.rb' - 'app/services/base_service.rb' - 'app/services/bulk_create_integration_service.rb' @@ -2754,8 +2476,6 @@ Gitlab/NamespacedClass: - 'ee/app/serializers/geo_project_registry_entity.rb' - 'ee/app/serializers/geo_project_registry_serializer.rb' - 'ee/app/serializers/group_analytics_serializer.rb' - - 'ee/app/serializers/group_issuable_autocomplete_entity.rb' - - 'ee/app/serializers/group_issuable_autocomplete_serializer.rb' - 'ee/app/serializers/group_vulnerability_autocomplete_entity.rb' - 'ee/app/serializers/group_vulnerability_autocomplete_serializer.rb' - 'ee/app/serializers/invited_group_entity.rb' @@ -2975,7 +2695,6 @@ Performance/OpenStruct: - 'Guardfile' - 'app/finders/snippets_finder.rb' - 'app/helpers/application_settings_helper.rb' - - 'app/models/cycle_analytics/project_level_stage_adapter.rb' - 'ee/lib/gitlab/graphql/aggregations/epics/epic_node.rb' - 'ee/lib/gitlab/graphql/aggregations/epics/epic_node.rb' - 'lib/api/wikis.rb' @@ -3010,30 +2729,17 @@ Gitlab/FeatureAvailableUsage: - 'app/helpers/events_helper.rb' - 'app/helpers/labels_helper.rb' - 'app/policies/project_policy.rb' - - 'app/views/groups/issues.html.haml' - - 'app/views/groups/merge_requests.html.haml' - 'app/views/shared/boards/_switcher.html.haml' - 'ee/app/controllers/concerns/description_diff_actions.rb' - 'ee/app/controllers/concerns/ee/boards_actions.rb' - 'ee/app/controllers/concerns/security_dashboards_permissions.rb' - 'ee/app/controllers/ee/boards/lists_controller.rb' - - 'ee/app/controllers/ee/groups/application_controller.rb' - - 'ee/app/controllers/ee/groups/group_members_controller.rb' - 'ee/app/controllers/ee/projects/autocomplete_sources_controller.rb' - 'ee/app/controllers/ee/projects/issues_controller.rb' - 'ee/app/controllers/ee/projects/security/configuration_controller.rb' - 'ee/app/controllers/ee/projects/settings/ci_cd_controller.rb' - 'ee/app/controllers/ee/projects/settings/operations_controller.rb' - 'ee/app/controllers/ee/projects/settings/repository_controller.rb' - - 'ee/app/controllers/groups/analytics/application_controller.rb' - - 'ee/app/controllers/groups/audit_events_controller.rb' - - 'ee/app/controllers/groups/bulk_update_controller.rb' - - 'ee/app/controllers/groups/contribution_analytics_controller.rb' - - 'ee/app/controllers/groups/epics_controller.rb' - - 'ee/app/controllers/groups/hooks_controller.rb' - - 'ee/app/controllers/groups/issues_analytics_controller.rb' - - 'ee/app/controllers/groups/iterations_controller.rb' - - 'ee/app/controllers/projects/analytics/issues_analytics_controller.rb' - 'ee/app/controllers/projects/audit_events_controller.rb' - 'ee/app/controllers/projects/cluster_agents_controller.rb' - 'ee/app/controllers/projects/iterations/inherited_controller.rb' @@ -3044,23 +2750,18 @@ Gitlab/FeatureAvailableUsage: - 'ee/app/finders/clusters/agents_finder.rb' - 'ee/app/finders/ee/alert_management/alerts_finder.rb' - 'ee/app/finders/ee/alert_management/http_integrations_finder.rb' - - 'ee/app/finders/ee/group_projects_finder.rb' - 'ee/app/graphql/ee/types/group_type.rb' - 'ee/app/graphql/mutations/dast/profiles/create.rb' - 'ee/app/graphql/mutations/dast/profiles/run.rb' - 'ee/app/graphql/mutations/dast/profiles/update.rb' - 'ee/app/graphql/mutations/instance_security_dashboard/remove_project.rb' - - 'ee/app/graphql/resolvers/boards/epic_boards_resolver.rb' - 'ee/app/graphql/resolvers/clusters/agent_tokens_resolver.rb' - - 'ee/app/graphql/resolvers/epics_resolver.rb' - - 'ee/app/helpers/ee/analytics/navbar_helper.rb' - 'ee/app/helpers/ee/application_helper.rb' - 'ee/app/helpers/ee/boards_helper.rb' - 'ee/app/helpers/ee/clusters_helper.rb' - 'ee/app/helpers/ee/dashboard_helper.rb' - 'ee/app/helpers/ee/form_helper.rb' - 'ee/app/helpers/ee/graph_helper.rb' - - 'ee/app/helpers/ee/groups_helper.rb' - 'ee/app/helpers/ee/issues_helper.rb' - 'ee/app/helpers/ee/lock_helper.rb' - 'ee/app/helpers/ee/operations_helper.rb' @@ -3069,7 +2770,6 @@ Gitlab/FeatureAvailableUsage: - 'ee/app/helpers/ee/releases_helper.rb' - 'ee/app/helpers/ee/search_helper.rb' - 'ee/app/helpers/ee/tree_helper.rb' - - 'ee/app/helpers/groups/security_features_helper.rb' - 'ee/app/models/approval_state.rb' - 'ee/app/models/concerns/approvable.rb' - 'ee/app/models/concerns/ee/project_security_scanners_information.rb' @@ -3092,15 +2792,12 @@ Gitlab/FeatureAvailableUsage: - 'ee/app/models/ee/project_ci_cd_setting.rb' - 'ee/app/models/namespace_statistics.rb' - 'ee/app/models/project_security_setting.rb' - - 'ee/app/models/saml_provider.rb' - - 'ee/app/policies/compliance_management/framework_policy.rb' - 'ee/app/policies/compliance_management/framework_policy.rb' - 'ee/app/policies/ee/group_policy.rb' - 'ee/app/policies/ee/namespace_policy.rb' - 'ee/app/policies/ee/project_policy.rb' - 'ee/app/policies/ee/protected_branch_policy.rb' - 'ee/app/presenters/ee/label_presenter.rb' - - 'ee/app/presenters/epic_presenter.rb' - 'ee/app/presenters/merge_request_approver_presenter.rb' - 'ee/app/serializers/dashboard_operations_project_entity.rb' - 'ee/app/serializers/ee/environment_entity.rb' @@ -3124,7 +2821,6 @@ Gitlab/FeatureAvailableUsage: - 'ee/app/services/ee/boards/issues/list_service.rb' - 'ee/app/services/ee/boards/lists/create_service.rb' - 'ee/app/services/ee/boards/update_service.rb' - - 'ee/app/services/ee/groups/create_service.rb' - 'ee/app/services/ee/ide/schemas_config_service.rb' - 'ee/app/services/ee/issuable_base_service.rb' - 'ee/app/services/ee/issue_links/create_service.rb' @@ -3139,9 +2835,6 @@ Gitlab/FeatureAvailableUsage: - 'ee/app/services/ee/projects/create_service.rb' - 'ee/app/services/ee/protected_branches/create_service.rb' - 'ee/app/services/ee/releases/create_evidence_service.rb' - - 'ee/app/services/ee/search/group_service.rb' - - 'ee/app/services/iterations/cadences/create_service.rb' - - 'ee/app/services/iterations/cadences/update_service.rb' - 'ee/app/services/iterations/create_service.rb' - 'ee/app/services/iterations/update_service.rb' - 'ee/app/services/merge_requests/sync_report_approver_approval_rules.rb' @@ -3150,16 +2843,6 @@ Gitlab/FeatureAvailableUsage: - 'ee/app/services/quality_management/test_cases/create_service.rb' - 'ee/app/services/requirements_management/process_test_reports_service.rb' - 'ee/app/services/security/store_scans_service.rb' - - 'ee/app/views/groups/_templates_setting.html.haml' - - 'ee/app/views/groups/contribution_analytics/show.html.haml' - - 'ee/app/views/groups/ee/_settings_nav.html.haml' - - 'ee/app/views/groups/epics/index.html.haml' - - 'ee/app/views/groups/epics/show.html.haml' - - 'ee/app/views/groups/epics/show.html.haml' - - 'ee/app/views/groups/hooks/index.html.haml' - - 'ee/app/views/groups/roadmap/show.html.haml' - - 'ee/app/views/groups/settings/_allowed_email_domain.html.haml' - - 'ee/app/views/groups/settings/_ip_restriction.html.haml' - 'ee/app/views/layouts/nav/_test_cases_link.html.haml' - 'ee/app/views/layouts/nav/sidebar/_project_iterations_link.html.haml' - 'ee/app/views/projects/_merge_request_approvals_settings.html.haml' @@ -3193,7 +2876,6 @@ Gitlab/FeatureAvailableUsage: - 'ee/app/views/shared/issuable/_board_create_list_dropdown.html.haml' - 'ee/app/views/shared/issuable/_board_create_list_dropdown.html.haml' - 'ee/app/views/shared/issuable/_group_bulk_update_sidebar.html.haml' - - 'ee/app/views/shared/issuable/_iteration_select.html.haml' - 'ee/app/views/shared/issuable/form/_default_templates.html.haml' - 'ee/app/views/shared/labels/_create_label_help_text.html.haml' - 'ee/app/views/shared/promotions/_promote_mr_features.html.haml' @@ -3207,14 +2889,10 @@ Gitlab/FeatureAvailableUsage: - 'ee/app/workers/analytics/code_review_metrics_worker.rb' - 'ee/app/workers/group_saml_group_sync_worker.rb' - 'ee/lib/api/external_approval_rules.rb' - - 'ee/lib/api/helpers/epics_helpers.rb' - - 'ee/lib/api/ldap_group_links.rb' - 'ee/lib/ee/api/entities/approval_state.rb' - 'ee/lib/ee/api/entities/board.rb' - - 'ee/lib/ee/api/entities/group.rb' - 'ee/lib/ee/api/entities/issue.rb' - 'ee/lib/ee/api/entities/project.rb' - - 'ee/lib/ee/api/groups.rb' - 'ee/lib/ee/api/helpers.rb' - 'ee/lib/ee/api/internal/kubernetes.rb' - 'ee/lib/ee/api/job_artifacts.rb' @@ -3224,14 +2902,11 @@ Gitlab/FeatureAvailableUsage: - 'ee/lib/ee/gitlab/gon_helper.rb' - 'ee/lib/ee/gitlab/tree_summary.rb' - 'ee/lib/gitlab/alert_management.rb' - - 'ee/lib/gitlab/auth/group_saml/group_lookup.rb' - 'ee/lib/gitlab/ci/pipeline/chain/config/content/compliance.rb' - 'ee/lib/gitlab/code_owners.rb' - - 'ee/lib/gitlab/import_export/group/group_and_descendants_repo_restorer.rb' - 'ee/lib/gitlab/incident_management.rb' - 'ee/lib/gitlab/path_locks_finder.rb' - 'ee/lib/incident_management/incident_sla.rb' - - 'ee/spec/models/ee/namespace_spec.rb' - 'ee/spec/models/instance_security_dashboard_spec.rb' - 'ee/spec/models/license_spec.rb' - 'ee/spec/models/project_spec.rb' @@ -3249,7 +2924,6 @@ Style/RegexpLiteralMixedPreserve: - 'app/models/concerns/ci/maskable.rb' - 'app/models/operations/feature_flag.rb' - 'app/models/packages/go/module.rb' - - 'app/models/project_services/chat_message/base_message.rb' - 'app/services/packages/conan/search_service.rb' - 'app/services/projects/update_remote_mirror_service.rb' - 'config/initializers/rspec_profiling.rb' diff --git a/.rubocop_todo.yml b/.rubocop_todo.yml index 4bd885c35d..26b12f2694 100644 --- a/.rubocop_todo.yml +++ b/.rubocop_todo.yml @@ -266,19 +266,6 @@ Performance/CollectionLiteralInLoop: Performance/ConstantRegexp: Enabled: false -# Offense count: 18 -# Cop supports --auto-correct. -Performance/Count: - Exclude: - - 'app/helpers/groups_helper.rb' - - 'app/services/merge_requests/add_context_service.rb' - - 'ee/lib/gitlab/graphql/aggregations/epics/epic_node.rb' - - 'lib/gitlab/sidekiq_status.rb' - - 'spec/lib/gitlab/conflict/file_spec.rb' - - 'spec/lib/gitlab/git/tree_spec.rb' - - 'spec/models/ci/build_spec.rb' - - 'spec/support_specs/helpers/active_record/query_recorder_spec.rb' - # Offense count: 14 # Cop supports --auto-correct. # Configuration parameters: SafeMultiline. @@ -354,8 +341,6 @@ Performance/Sum: - 'ee/spec/lib/gitlab/elastic/bulk_indexer_spec.rb' - 'lib/api/entities/issuable_time_stats.rb' - 'lib/container_registry/tag.rb' - - 'lib/declarative_policy/rule.rb' - - 'lib/declarative_policy/runner.rb' - 'lib/gitlab/ci/reports/test_suite_comparer.rb' - 'lib/gitlab/diff/file.rb' - 'lib/gitlab/sherlock/transaction.rb' @@ -613,9 +598,7 @@ Rails/RenderInline: # SupportedStyles: conservative, aggressive Rails/ShortI18n: Exclude: - - 'app/models/project_services/chat_message/pipeline_message.rb' - 'app/uploaders/content_type_whitelist.rb' - - 'spec/views/shared/runners/show.html.haml_spec.rb' # Offense count: 1144 # Configuration parameters: ForbiddenMethods, AllowedMethods. @@ -628,11 +611,6 @@ Rails/SkipsModelValidations: Rails/SquishedSQLHeredocs: Enabled: false -# Offense count: 44 -# Cop supports --auto-correct. -Rails/WhereEquals: - Enabled: false - # Offense count: 44 # Cop supports --auto-correct. # Configuration parameters: EnforcedStyle. @@ -640,16 +618,6 @@ Rails/WhereEquals: Rails/WhereExists: Enabled: false -# Offense count: 8 -# Cop supports --auto-correct. -Security/YAMLLoad: - Exclude: - - 'lib/gitlab/redis/wrapper.rb' - - 'lib/system_check/incoming_email/imap_authentication_check.rb' - - 'spec/config/mail_room_spec.rb' - - 'spec/initializers/secret_token_spec.rb' - - 'spec/lib/gitlab/prometheus/additional_metrics_parser_spec.rb' - # Offense count: 240 # Cop supports --auto-correct. # Configuration parameters: EnforcedStyle. @@ -851,21 +819,6 @@ Style/NumericLiteralPrefix: Style/PercentLiteralDelimiters: Enabled: false -# Offense count: 247 -# Cop supports --auto-correct. -# Configuration parameters: . -# SupportedStyles: compact, exploded -Style/RaiseArgs: - Enabled: false - EnforcedStyle: exploded - -# Offense count: 2 -# Cop supports --auto-correct. -Style/RedundantBegin: - Exclude: - - 'app/services/clusters/applications/check_installation_progress_service.rb' - - 'lib/gitlab/database/postgres_hll/batch_distinct_counter.rb' - # Offense count: 26 # Cop supports --auto-correct. # Configuration parameters: SafeForConstants. @@ -878,30 +831,11 @@ Style/RedundantFetchBlock: - 'spec/lib/gitlab/null_request_store_spec.rb' - 'spec/lib/gitlab/safe_request_store_spec.rb' -# Offense count: 26 -# Cop supports --auto-correct. -Style/RedundantFileExtensionInRequire: - Enabled: false - # Offense count: 206 # Cop supports --auto-correct. Style/RedundantInterpolation: Enabled: false -# Offense count: 10 -# Cop supports --auto-correct. -Style/RedundantRegexpCharacterClass: - Exclude: - - 'app/models/concerns/taskable.rb' - - 'ee/app/models/saml_provider.rb' - - 'lib/banzai/filter/markdown_pre_escape_filter.rb' - - 'lib/gitlab/authorized_keys.rb' - - 'lib/gitlab/fogbugz_import/repository.rb' - - 'lib/gitlab/quick_actions/substitution_definition.rb' - - 'lib/gitlab/regex.rb' - - 'spec/features/merge_request/user_views_open_merge_request_spec.rb' - - 'spec/tasks/gitlab/usage_data_rake_spec.rb' - # Offense count: 279 # Cop supports --auto-correct. Style/RedundantRegexpEscape: @@ -917,13 +851,6 @@ Style/RedundantSelf: Style/RescueModifier: Enabled: false -# Offense count: 359 -# Cop supports --auto-correct. -# Configuration parameters: EnforcedStyle. -# SupportedStyles: implicit, explicit -Style/RescueStandardError: - Enabled: false - # Offense count: 123 # Cop supports --auto-correct. Style/SingleArgumentDig: diff --git a/.solargraph.yml.example b/.solargraph.yml.example new file mode 100644 index 0000000000..ff8225eb73 --- /dev/null +++ b/.solargraph.yml.example @@ -0,0 +1,16 @@ +--- +include: +- "**/*.rb" +exclude: +- "**/spec/**/*" +- qa/qa/specs/features/**/* +- vendor/**/* +- ".bundle/**/*" +require: [] +domains: [] +reporters: +- rubocop +- require_not_found +require_paths: [] +plugins: [] +max_files: 15000 diff --git a/CHANGELOG.md b/CHANGELOG.md index e8cfa50add..d0d08097a7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,645 @@ documentation](doc/development/changelog.md) for instructions on adding your own entry. +## 13.12.3 (2021-06-07) + +### Added (1 change) + +- [Add an option to expose description_html in Release API](gitlab-org/gitlab@47f3fba10dfa82c65b6b006d56cc1724aac411eb) ([merge request](gitlab-org/gitlab!63393)) + +### Fixed (5 changes) + +- [Fix spam detection with Akismet client](gitlab-org/gitlab@75dbe8d017ed691d0517f0a6ca7b9bdd866fa9d9) ([merge request](gitlab-org/gitlab!63393)) +- [Set CSP back to disabled by default](gitlab-org/gitlab@f8f2dbf229693e20171185ae8e31fd59ce2131b3) ([merge request](gitlab-org/gitlab!63393)) +- [Fix CSP issues related to captchas](gitlab-org/gitlab@cec54814460994ea40311f1091fb7f091d04964f) ([merge request](gitlab-org/gitlab!63393)) +- [Fix issue with frames not loading in Safari](gitlab-org/gitlab@77b9355f244370b1c184943581f3b6cc27495931) ([merge request](gitlab-org/gitlab!63393)) +- [Catch PgQuery::ParseError errors and log as-is](gitlab-org/gitlab@a4f36df3701208b5d015e1e818f3d5be3577697a) ([merge request](gitlab-org/gitlab!62795)) + +### Changed (1 change) + +- [Improve SSH key expiration warning emails](gitlab-org/gitlab@2e3929503046ab1da5635ef295321ce08843f937) ([merge request](gitlab-org/gitlab!63393)) + +## 13.12.2 (2021-06-01) + +### Security (11 changes) + +- [Bump BinData version](gitlab-org/security/gitlab@609303ac4904cad6bbcc776bb809a46a66891d53) ([merge request](gitlab-org/security/gitlab!1414)) +- [Block access to GitLab for users with expired password](gitlab-org/security/gitlab@f0a07ce8a596a4dd6f1311dff893c896b0cdf82f) ([merge request](gitlab-org/security/gitlab!1446)) +- [Adds redirect page to OAuth](gitlab-org/security/gitlab@6ed6dfc8f9ba785fd5337ee0f4701c983b6f07b0) ([merge request](gitlab-org/security/gitlab!1441)) +- [Update users two factor required from group](gitlab-org/security/gitlab@8c3fe378289d2dced2139c9db396b6270d3bc0ab) ([merge request](gitlab-org/security/gitlab!1432)) +- [Updates authorization for lint](gitlab-org/security/gitlab@be33caed9684af07ac715038d7a2865d9d0c7247) ([merge request](gitlab-org/security/gitlab!1429)) +- [Opt in to Atlassians new context qsh](gitlab-org/security/gitlab@f1d06250fbef6fa2af8a8c88d3b3f9391c332089) ([merge request](gitlab-org/security/gitlab!1408)) +- [Limit oncall projects shown to scope of source](gitlab-org/security/gitlab@a70859aaac44c9b3bd3cc673737e01e2a3aba99c) ([merge request](gitlab-org/security/gitlab!1410)) **GitLab Enterprise Edition** +- [Only verify commit signatures if the user email is verified](gitlab-org/security/gitlab@9039fdffdf109cdf667be8db3d792a502aad8bb9) ([merge request](gitlab-org/security/gitlab!1385)) +- [Prevent XSS on notebooks](gitlab-org/security/gitlab@9a2dc30920c2a271257ccec92aebcfabec276096) ([merge request](gitlab-org/security/gitlab!1421)) +- [Truncate all non-blob markdown to 1MB by default](gitlab-org/security/gitlab@e9e6bc0450639ee25fd0ced983da231700a4d4f9) ([merge request](gitlab-org/security/gitlab!1420)) +- [Use xpath search of Nokogiri instead of css search](gitlab-org/security/gitlab@7e5c79021ab54ffc70d22bba3c663ce38ae83a88) ([merge request](gitlab-org/security/gitlab!1416)) + +## 13.12.1 (2021-05-25) + +### Fixed (3 changes) + +- [Merge branch 'fix/pin-gke-version-to-1-18' into 'master'](gitlab-org/gitlab@44de5542ca82b371ed280db9ce03e0c4d4bd6135) ([merge request](gitlab-org/gitlab!62466)) +- [Merge branch '331562-fix-pipeline-security-tab-scanner-filter' into 'master'](gitlab-org/gitlab@1d70bf2efd574537d73b5fd80f92fd8dd939980b) ([merge request](gitlab-org/gitlab!62466)) +- [Update Gitaly's binary path in init.d scripts](gitlab-org/gitlab@0761e78434dbfa120c8ae14263bfe77f9ae48c71) ([merge request](gitlab-org/gitlab!62457)) + +## 13.12.0 (2021-05-22) + +### Security (3 changes) + +- Prevent DOS from Chaining in Mermaid. !60382 +- Report pipeline creation success only when warranted. !60746 +- Fix XSS vulnerability in shared runner description. !60891 + +### Removed (10 changes, 2 of them are from the community) + +- Delete feature flag for usage_data_a_compliance_audit_events_api. !52947 +- Remove feature flag api_always_use_application_json. !56777 +- Remove unneeded index on packages_debian_{project,group}_architectures.distribution_id. !59615 (Mathieu Parent) +- Delete HipChat service database records. !59769 +- Set Hipchat metric definitions status to removed. !59779 +- Remove Legacy Group-Level DORA metrics API. !59858 +- Remove Alerts service metric. !60149 +- Remove description_html field from Release Rest API. !61327 +- Removes multiple_cache_per_job feature flag and associated code. (Laura Montemayor) +- Remove support for WIP in merge request title toggle. + +### Fixed (108 changes, 32 of them are from the community) + +- Add warning when locally stored description is out of date. !29438 +- Disable unsupported task items in Markdown tables. !46060 +- Flush statistics cache anytime it is updated. !52938 +- Return an HTML response for a request with the Accept */* header. !56288 +- Resolve offense Performance/Count. !57007 (Shubham Kumar (@imskr)) +- Don't show due dates in red if the issue is closed. !57647 (Daniel Ziegenberg ) +- Fix Rails/SaveBang Rubocop offenses for wiki_page models. !57899 (Huzaifa Iftikhar @huzaifaiftikhar) +- Fix Rails/SaveBang rubocop offenses in spec/frontend. !57909 (Abdul Wadood @abdulwd) +- Fix Rails/SaveBang rubocop offenses in spec/graphql. !57912 (Abdul Wadood @abdulwd) +- Resolve RuboCop offenses for Style/RedundantRegexpCharacterClass. !57914 (Shubham Kumar @imskr) +- Fixes rubocop offenses Style/RescueStandardError. !57923 (Shubham Kumar (@imskr)) +- Resolves rubocop offense Style/RedundantFileExtensionInRequire. !57963 (Shubham Kumar (@imskr)) +- Fix Rails/SaveBang Rubocop offenses for project related models. !57983 (Huzaifa Iftikhar @huzaifaiftikhar) +- Fix Rails/SaveBang Rubocop offenses for member models. !57994 (Huzaifa Iftikhar @huzaifaiftikhar) +- Resolves offenses Style/RaiseArgs. !58009 (Shubham Kumar @imskr) +- Resolves offenses Style/RedundantBegin. !58017 (Shubham Kumar (@imskr)) +- Resolves offenses Security/YAMLLoad. !58042 (Shubham Kumar (@imskr)) +- Resolves rubocop offenses Rails/WhereEquals. !58067 (Shubham Kumar (@imskr)) +- Fix EmptyLineAfterFinalLetItBe offenses for merge request module. !58185 (Huzaifa Iftikhar @huzaifaiftikhar) +- Fix EmptyLineAfterFinalLetItBe Rubocop offenses for projects module. !58187 (Huzaifa Iftikhar @huzaifaiftikhar) +- Fix EmptyLineAfterFinalLetItBe offenses for alert management module. !58191 (Huzaifa Iftikhar @huzaifaiftikhar) +- Fix EmptyLineAfterFinalLetItBe offenses in spec/graphql/resolvers. !58239 (Huzaifa Iftikhar @huzaifaiftikhar) +- Fix EmptyLineAfterFinalLetItBe offenses in spec/lib/gitlab/ci. !58249 (Huzaifa Iftikhar @huzaifaiftikhar) +- Fix EmptyLineAfterFinalLetItBe offenses in spec/lib/gitlab/database. !58251 (Huzaifa Iftikhar @huzaifaiftikhar) +- Fix EmptyLineAfterFinalLetItBe offenses in spec/lib/gitlab/git. !58254 (Huzaifa Iftikhar @huzaifaiftikhar) +- Fix EmptyLineAfterFinalLetItBe offenses in spec/lib/gitlab/repository. !58308 (Huzaifa Iftikhar @huzaifaiftikhar) +- Fix EmptyLineAfterFinalLetItBe offenses in spec/models/packages. !58370 (Huzaifa Iftikhar @huzaifaiftikhar) +- Fix EmptyLineAfterFinalLetItBe offenses in spec/models/releases. !58384 (Huzaifa Iftikhar @huzaifaiftikhar) +- Fix EmptyLineAfterFinalLetItBe offenses in spec/models/wiki_page. !58388 (Huzaifa Iftikhar @huzaifaiftikhar) +- Fix EmptyLineAfterFinalLetItBe offenses in spec/presenters. !58405 (Huzaifa Iftikhar @huzaifaiftikhar) +- Fix EmptyLineAfterFinalLetItBe offenses in spec/services/ci. !58411 (Huzaifa Iftikhar @huzaifaiftikhar) +- Fix EmptyLineAfterFinalLetItBe offenses in spec/services/feature_flags. !58419 (Huzaifa Iftikhar @huzaifaiftikhar) +- Fix RSpec/EmptyLineAfterFinalLetItBe rubocop offenses in spec/workers. !58421 (Abdul Wadood @abdulwd) +- Prevent loss of timelogs when deleting notes. !58525 (Lee Tickett @leetickett) +- Fix multiline comment dragging in Firefox. !58692 +- Update cached count for "done" todos when deleting todo targets. !58773 +- Fix light label text color in dark mode. !59088 +- Fix false positive for codequality mr diff report. !59421 +- Fix for shell announcement banners. !59482 +- Reschedule background migration to copy projects.container_registry_enabled to project_features.container_registry_access_level. !59513 +- Fix images not showing in Jupyter Markdown tables. !59551 +- Fix paginator of Environment Serializer. !59751 +- Add generic avatar method for users and groups. !59758 +- Set Web hook defaults to intended default values. !59814 +- Fix restrictive permissions for ProjectMembers who are owners. !59844 +- Users search: fix avatar size. !59883 +- Fix cascading settings attr writer behavior. !59910 +- Set a default region to Workhorse S3 client. !59932 +- Fix invite banner display member count for subgroups page. !59948 +- Fix LFS push mirroring for mirrors set up a long time ago. !59972 +- Fix pipeline status when DAG jobs needs manual jobs. !59975 +- Fix tag matching behavior on New Release page. !60035 +- Fix bug that prevented searching for group/project members with multiple words. !60051 +- Fix link to subgroup OAuth application. !60066 +- Explicitly destroy webhooks and logs before the project deletion. !60122 +- Upgrade omniauth_openid_connect gem to our own fork. !60181 +- Fix bug when board card label is clicked. !60327 +- Align help icon for code quality merge request widget. !60330 +- Fast destroy job artifacts when destroying a pipeline. !60391 +- Ensure we never error in web hook logs. !60408 +- Fix bug where test report was not showing while pipeline was running. !60416 +- Do not set experiment cookie on self managed and delete existing cookies. !60419 +- Fix regression in GraphQL field MergeRequest.assignees.webUrl. !60428 +- Fix usage ping misreporting consolidated object storage settings. !60526 +- Fixes bug where variables are being filtered that do not have a value but a key. !60538 +- Fix MR sidebar rendering on mobile. !60552 +- Fix EnvironmentSerializer preloads unrelated pipelines/builds. !60562 +- Don't email issue email participants confidential comments. !60594 (Lee Tickett @leetickett) +- Resolve Cannot Set Assignee in Boards View for self-managed GitLab with Relative URL. !60711 +- Check duplicate package regex against version as well as name. !60760 +- Fix Openshift template to run on main branch. !60811 +- Fix downloadable artifacts for pipeline. !60836 +- Fix SMTP errors when delivering service desk thank you emails with SMTP pool enabled. !60843 +- Fix changelog Dangerfile to convert MR IID to a string before comparison. !60899 +- Fix due date being randomly set in issue page. !60917 +- Disable autocomplete for due date in issue sidebar to prevent triggering updates on Chrome. !60973 +- Remove subscribed field from todos, related issues, and epic issues API. !60981 +- Fixed quick actions link not showing in diff line comment forms. !61029 +- Fixes merge request controls not visible when merge request has single commit. !61030 +- Fixed preview review comment not working with single file diff mode. !61032 +- Fixed dollar signs in suggestions getting replaced incorrectly. !61041 +- Fix artifacts dropdown for merge request and commits pipelines tables. !61045 +- Remove hyphen from Cloudrail CI template name. !61079 +- Bust the cache for /whats-new. !61081 +- Fix commit messages text color in dark mode. !61082 +- Suppress all non-nullable field errors for assignee widget graphql queries to remove assignee fetching error messages in boards. !61091 +- Correct the 'blocked' scope in 'Member' class. !61108 +- Preserve user changes in the wiki editor if multiple people edit the page. !61120 +- Fix multiple assignees checked in boards sidebar. !61227 +- Fix incorrect issue and merge requests counts with filters. !61230 +- Fix slack label filter behavior blank. !61236 +- GithubImport: Fix Review importer when the author does not exist anymore. !61257 +- Restrict issue creation via API by relevant permissions. !61281 +- Merge Request API: Treat 0 as a non-assigning sentinel value. !61301 +- Remove extra padding and margin from merge request widget review app dropdown chevron. !61302 +- Fix a bug displaying project commit anchors. !61361 +- Reset Source Editor's layout after Startup CSS. !61426 +- GithubImporter: Fix "ArgumentError: string contains null byte". !61480 +- Use correct scope when authorizing with Jira GitHub DVCS connector. !61496 +- Fix user popover bio overflow. !61555 +- Hide commit msg for package files without pipeline. !61571 +- Fix position of note actions. !61594 +- Inject Feature Flags Limit Value. !61621 +- Fix services API returning non-existing services. !61646 +- Fix Jira Connect sign in button style. !61665 +- Filter out unconnected-to-user members from receiving on access request emails. !61819 +- Fixed Rails Save Bang offenses in few spec/models/* files. !61862 (Suraj Tripathi @surajtripathy07) +- Fix issuable search optimization in PG12. !61880 + +### Deprecated (4 changes, 1 of them is from the community) + +- Deprecate Alerts service metric. !59899 +- Add Managed Prometheus deprecation warning. !60560 +- Deprecate SetWip GraphQL mutation and add SetDraft mutation. !60803 +- Add GraphQL field 'Project.topics' and deprecate 'Project.tag_list'. !61250 (Jonas Wälter @wwwjon) + +### Changed (145 changes, 52 of them are from the community) + +- Update admin users to use GitLab UI table by default. !54085 +- Remove artifact expiry backfill temp index. !54252 +- Enable the new pipeline form by default. !55250 +- Add migration to update plans on new post-EoA subscriptions. !55625 +- Add support for retries to Advanced Search reindexing. !55681 +- Add missing parts of GraphQL schema to GraphQL documentation. !55944 +- Update Keyboard shortcut help: adding search, update styling. !56400 +- Redirect to activity page when accepting invitation. !56695 +- Add external documentation references in GraphQL. !56704 +- Send in-product marketing email usage data. !56752 +- Enable new RPC to destroy wiki pages. !57106 +- Always resolve GitLab alerts when recovery alert payload is received. !57302 +- Add gl-badge for badges in pipeline schedules nav. !57937 (Yogi (@yo)) +- Add gl-badge for badges in jobs page nav. !57938 (Yogi (@yo)) +- Add gl-badge class for tag's badge. !57939 (Yogi (@yo)) +- Add gl-badge for badges in MRs and issues nav. !57942 (Yogi (@yo)) +- Add gl-badge for badges in todos nav. !57943 (Yogi (@yo)) +- Add gl-badge for badges in admin users nav. !57951 (Yogi (@yo)) +- Add gl-badge for storage badge in admin groups page. !57954 (Yogi (@yo)) +- Add gl-badge for badges in milestone drawer. !57964 (Yogi (@yo)) +- Add gl-badge for badges in snippets nav. !57966 (Yogi (@yo)) +- Add gl-badge for badges in pipeline page nav. !57970 (Yogi (@yo)) +- Add gl-badge for badges in project search page nav. !57971 (Yogi (@yo)) +- Add gl-badge for badges in new MR nav. !57995 (Yogi (@yo)) +- Apply gl-form-input for fields in ssh keys page. !58000 (Yogi (@yo)) +- Apply gl-form-input for fields in preferences page. !58004 (Yogi (@yo)) +- Apply gl-form-input for search field in milestone page. !58007 (Yogi (@yo)) +- Apply gl-form-input for fields in new project milestone page. !58010 (Yogi (@yo)) +- Move to btn-confirm from btn-success in emails directory. !58029 (Yogi (@yo)) +- Move badge to vue component in project badges. !58045 (Yogi (@yo)) +- Switch to gl-badge in whats new dropdown. !58235 (Yogi (@yo)) +- Add gl-form-input class for fields in create project page. !58299 (Yogi (@yo)) +- Move to btn-confirm from btn-success in create from template page. !58303 (Yogi (@yo)) +- Add gl-form-input class for fields in gitlab import page. !58304 (Yogi (@yo)) +- Add gl-form-input class for fields in bitbucket import page. !58309 (Yogi (@yo)) +- Add gl-form-input class for fields in fogbugz import page. !58312 (Yogi (@yo)) +- Add gl-form-input class for fields in gitea import page. !58313 (Yogi (@yo)) +- Add gl-form-input class for fields in import page. !58316 (Yogi (@yo)) +- Add gl-form-input class for fields in phabricator import page. !58318 (Yogi (@yo)) +- Change text for incident auto-resolve setting to match behavior. !58515 +- Move license history to gl-table utility class. !58531 (Yogi (@yo)) +- Add margin top for clear repo check button in admin. !58536 (Yogi (@yo)) +- Add more padding for whats new badge in drawer. !58544 (Yogi (@yo)) +- Add pause_ms column to batched_background_migrations and batched_background_migration_jobs. !58583 +- Geo: Add verification for Terraform States. !58800 +- Disable automatic setup of alerts for Prometheus cluster integration. !58853 +- Improve message for :project_not_found error to indicate possible cause. !58945 (Ignacy Moryc @ignacy) +- Rename 'no contributions' to 'No contributions' in profile activity graph helper. !59076 (Yogi (@yo)) +- Center align project home navigation. !59079 (Yogi (@yo)) +- Move to new GitLab UI for card in health check page. !59081 (Yogi (@yo)) +- Update to question-o and change color in admin users. !59133 (Yogi (@yo)) +- Update to question-o from question icon in navbar. !59134 (Yogi (@yo)) +- Update to question-o from question icon in user stats. !59135 (Yogi (@yo)) +- Move card in billing page to gl-card utility class. !59138 (Yogi (@yo)) +- LibreOffice/OpenOffice file extensions in icon map. !59159 (Holzfeind, Daniel Georg) +- Export issues sorted by relative position and recompute issue relative position on project import. !59175 +- Move 2fa recovery codes to GlCard component. !59219 (Yogi (@yo)) +- Add gl-form-input utility class for pin code field in 2fa. !59220 (Yogi (@yo)) +- Replace invite banner button with modal trigger. !59260 +- Resolve Abstract participants dropdown to a shared component. !59358 +- Make new project ui the only option. !59452 +- Add space next to spinner in Preview payload button. !59458 (Yogi (@yo)) +- Add btn-default class in seat link payload button. !59459 (Yogi (@yo)) +- Add VulnerabiltyFindingEvidenceRequest model. !59539 +- Add VulnerabiltyFindingEvidenceResponse model. !59563 +- Add gl-badge utility class for deleted projects tab. !59590 (Yogi (@yo)) +- Move npm and yarn to new dropdown UI. !59628 +- Change artifacts download button to a vertical ellipsis menu. !59667 +- Correct variant of Rebase button in MR widget. !59684 +- Improve merge message UI text. !59693 +- Use GlModal for Confirmation of Deploy Key Delete. !59697 +- Add ability to order cluster token by last used. !59716 +- Make new issue, merge request, and epic emails more consistent. !59718 +- Add merge request interaction details to MergeRequest.assignees. !59770 +- Expose enable_advanced_logs_querying in Environments API. !59772 +- Increase note actions target size. !59776 +- Redesign the DevOps Score report. !59856 +- Bumped image in the CI-Template Jobs/Build.gitlab-ci.yml to 0.6.0. !59882 (Daniel Estermann (@d.esterman)) +- Expose job and project queued duration in all APIs. !59901 +- Include installable and/or displayable packages only in package finders. !59921 +- Log exceptions in Lfs::PushService. !59960 +- Container Registry Details: split details from tags call. !59969 +- Add ability to include self in cascading setting lock check. !60031 +- Remove workhorse_extract_filename_base feature flag. !60070 +- Support worker_name predicate in Sidekiq queue selector. !60084 +- Add Gradle Kotlin installations commands. !60097 (Cromefire_ (@cromefire_)) +- Fix breadcrumbs and navigation in runner details pages. !60129 +- Improve dropdown and search in the tags page. !60145 +- Clarify image repository delete actions. !60154 +- Update RubyGems and NuGet packages to error status upon metadata extraction failure. !60172 +- Pre-fill user email address after confirming. !60179 +- Retain timelog spent_at time. !60191 (Lee Tickett @leetickett) +- Update button variants to btn-confirm on MR page. !60254 +- Rename default branch for empty project actions. !60258 +- Remove visualization feature flag in pipeline editor. !60273 +- Reorder source_project_id foreign key constraint in merge_requests table. !60313 +- Update edit file buttons and spacing. !60318 +- Keep consistent Global Search tab order. !60319 +- Toggle subscribed state when clicking on icon in collapsed sidebar. !60345 +- Add a Spamcheck API key application setting. !60385 (jdsalaro) +- Change product-marketing-email sending schedule. !60422 +- Fix copy on webhook admin pages for "Issues events" and "Confidential issues events". !60453 +- This change captures resizes of the runner installation instructions modal to make it usable on screens. !60588 +- Create table user_credit_card_validations. !60626 +- Update error tracking settings to use better copy and correct colors. !60627 +- Add sha256 to package file API payload. !60631 +- Github Importer: Add Cache to Pull Request Reviews importer. !60668 +- Add username and password fields for Advanced Search. !60710 +- Migrate DevOps Score empty state to Vue. !60715 +- Adds field authorization to pipeline fields. !60754 +- Change conan token expiration from 1 hour to 24 hours. !60763 +- Remove mobsf service for mobsf SAST job. !60770 +- Polish the "What's new" UI. !60804 (Kev @KevSlashNull) +- Disable web-hooks that fail repeatedly. !60837 +- Add slack integration individual usage ping. !60847 +- Extend branch support for Static Site Editor. !60848 +- Store slice multiplier and max slices running for reindex in DB. !60861 +- Keep new prometheus cluster integration in sync with old cluster application. !60877 +- Validate release description length. !60892 +- i18n: Show translation levels for each language in the UI. !60905 +- Add kubernetes_agent_proxy_request to usage ping. !60978 +- Validate CI pipeline jobs dependencies. !60999 +- Update appearance of "Enable shared runners for this project" toggle in Project > Settings > CI/CD. !61043 +- Add offset and limit to branch names resolver. !61061 +- Require 3 or more characters in search term when searching groups in Jira Connect app. !61099 +- Enforce .git suffix when importing git repo. !61115 +- Improve field descriptions in the Jira integration form. !61205 +- Migrate 'tags' to 'topics' for project in the database context. !61237 (Jonas Wälter @wwwjon) +- Rename master to main in views placeholders. !61252 +- Make pipeline retry endpoint async. !61270 +- Add relations export request when Bulk Import is initiated. !61365 +- Fix :focus styles for What's New. !61398 +- Add body to finding evidence requests. !61408 +- Make semgrep generally available. !61412 +- clicking backdrop closes modal for What's New. !61420 +- Scroll to the top of a diff file when it is collapsed. !61432 +- Wiki: Use FindAllCommits RPC to list page versions. !61459 +- Allows masking ~ character. !61517 (Thomas Dallmair) +- Backfill clusters_integration_elastic_stack.enabled. !61521 +- Update rails project template to rails 6.1. !61547 +- Add body to finding evidence responses. !61631 +- Support warning in pipeline creation by default. !61803 +- Make find_remote_root_refs_inmemory feature flag enabled by default. !61824 +- Add link to email notifying of MR changing draft status. !61891 +- Remove success variant for primary button in upload file modal. (Yogi (@yo)) + +### Performance (63 changes, 1 of them is from the community) + +- Make MergeService idempotent. !55368 +- Speed up save on New/Edit Release page. !57000 +- Cache path lookups for namespaces. !57027 +- Cache project tag list. !57031 +- Linear traversal query for Namespace#ancestors. !57137 +- Set traversal_ids for every namespace. !57318 +- Resolve admin_group_member group policy n+1. !58948 +- Optimize AvailableLabelsService for multiple labels search. !59032 +- Reduce number of SQL queries when creating SystemNotes. !59102 +- Enable pagination in the CompareController. !59162 +- Fix N+1 for commits with pipelines. !59234 +- Improve diff_files endpoint performance. !59489 +- Create the merge request pipeline asynchronously on push. !59624 +- Optimize CI Settings page to reduce N+1 queries. !59625 +- Linear traversal query for Namespace#descendants. !59632 +- Remove unnecessary validation avoiding N+1 queries when building integrations. !59635 +- Improve the packages finder helper SQL queries when handling deploy tokens. !59739 +- Improve shifting of positions when creating issues. !59745 +- Remove the longer_count_cache_validity_period feature flag. !59746 +- Recreate index for deployments updated_at and finished_at. !59771 +- Exclude build dependency calculation when creating the pipeline. !59810 +- Improve pagination of users in the admin panel. !59884 +- Prevent loading of cohorts data in the admin users list. !59890 +- Avoid loading user objects when bulk updating todos. !59909 +- Fix N+1 queries in namespace#any_project_has_container_registry_tags?. !59916 +- Replace OpenStruct with Struct in project_level_stage_adapter.rb. !59956 (Amit Patel @amit.savani) +- Recalculate assigned open issues count after cache invalidation. !59961 +- Improve performance of LFS integrity checks. !59991 +- Add new service to handle add_spent_time to MRs. !60043 +- Stop exposing artifacts on pipelines.json. !60126 +- Improve the Maven API file endpoints response time when a non existing package is requested. !60142 +- Fix three N+1s in Releases API entity generation. !60189 +- Remove string duplication in BlobStitcher. !60406 +- Delete all label links asynchronously when issuable gets destroyed. !60487 +- Fix releases API N+1 in sorted_links usage. !60561 +- Refactor notification recipients builder for watchers. !60572 +- Remove N+1 query from Issue::Metrics#record. !60589 +- Fix repeating SQL queries when changing labels for a resource. !60718 +- Fine tune a few queries found in GroupMembers#index. !60857 +- Fix N+1 problem in CustomEmojiFilter. !60910 +- Create partial indexes for pending/running builds. !60942 +- Stop exposing has_downloadable_artifacts in pipelines.json. !60950 +- Improve performance of project issues API. !60981 +- Include other cols in index for pending builds. !60997 +- Remove unnecessary query from close_issue method. !61087 +- Partial index optimization for namespaces id. !61098 +- Decrease load time of project select dropdowns. !61117 +- Apply rate-limiting to webhook executions. !61151 +- Update grape-path-helpers to v1.6.3. !61196 +- Improve the performance of Release LIST v4 API endpoint by short-interval caching. !61223 +- Ensure iid is set before skipping ci pipeline. !61231 +- Stop exposing artifacts in pipelines.json. !61253 +- Ensure project iid is set before saving pipeline from web terminal. !61311 +- Sync traversal path of namespaces. !61329 +- Enable notification settings recipient refactor by default. !61443 +- Tie-breaker in Deployment Finder should respect the original sort direction. !61444 +- Improve memory consumption of issuable APIs. !61561 +- Fix environment filter of Deployments Finder. !61564 +- Optimize merge request permission check for references. !61591 +- Introduced granular control to Monaco tag. !61690 +- Apply rate-limit cache to branches endpoint. !61723 +- Enforce updated_at ordering in Deployment API for performance optimization. !61870 +- Resolve Remove `subscribed` from GraphQL boards list query. !61881 + +### Added (114 changes, 16 of them are from the community) + +- Commit author for suggestions is note author. !39940 +- Report summarized Gitaly Apdex via usage ping. !47040 +- Allow disabling build stage for Auto Devops. !48638 (Shane Davidson @shanekdavidson) +- Allow access to registry API of the current project using the job token. !49750 (Mathieu Parent) +- Integrate with the Spamcheck anti-spam engine. !52385 +- Add generating Speedscope flamegraphs for a request. !53288 +- Add collapsible section shortcut to markdown controls. !54938 +- Add Terraform Module Registry. !55018 +- Clear group open issues count cache when bulk updating issues state. !56386 +- Add options for Slack and Mattermost label filter behavior. !56657 +- Create packages_helm_file_metadata table. !57017 (Mathieu Parent) +- Add "previously merged commits" dropdown in merge request compare dropdown. !57026 +- Add specific rate limits for Package Registry (Package API). !57029 (Jonas Wälter @wwwjon) +- Expose merge request timelogs via GraphQL. !57322 (Lee Tickett @leetickett) +- Automate deactivation of dormant users for self-managed instances. !57778 +- Add indexes for cleanup policies on container_repositories and container_expiration_policies. !58123 +- Add CI runner counts to usage ping. !58197 +- Add snoplow tracking to Releases API. !58221 +- Add ConfigureSecretDetection graphql mutation. !58230 +- Adds access token endpoints to OpenAPI. !58620 (jimcser) +- Add sorting for group and project packages type. !58657 +- Add more fields to the GraphQL blob type. !58906 +- Add commmit_pipeline_path to CreateCommit mutation. !58931 +- Add cascading namespace setting database migration helper. !58940 +- Add application setting for What's new. !59011 (Jonas Wälter @wwwjon) +- Create "projects/import-remote" to import a project using a remote object storage to fetch the exported project +. !59033 +- Add support to destroy iteration cadences in GraphQL. !59060 +- Remove feature flag from invite members banner. !59203 +- Send email to oncall rotation participants and project owners when user is removed. !59331 +- Improve errors reporting for board lists update. !59549 +- Add autocomplete to milestone description. !59564 (Jonas Wälter @wwwjon) +- Add "active" filter to deploy tokens API. !59582 (Devin Christensen) +- Implement Sidekiq queue re-routing in the application. !59604 +- Added type field into Issues API. !59648 (Raimund Hook @stingrayza) +- Expose KAS metadata through GraphQL - enabled, version and externalUrl. !59696 +- Support board issue filtering by iids in GraphQL. !59703 +- Add note about SSH key title being public information. !59726 +- Add missing data to CiJob type. !59805 +- Add link to documentation in empty pipeline test reports. !59812 +- Add table to store Security Orchestration Policy Schedules. !59842 +- Add code owners metric to DevOps adoption page. !59874 +- Search projects by topic via API. !59900 +- Remove pages_serve_with_zip_file_protocol feature flag. !59908 +- Implement variables for pipeline workflow rules. !59970 +- Add Group relations export models. !59976 +- Add Group relations export API. !59978 +- Added tracking to diff view settings. !59979 +- Remove pages_update_legacy_storage feature flag. !60005 +- Remove pages_serve_from_legacy_storage feature flag. !60010 +- Add project_id foreign key to timelogs. !60040 (Lee Tickett @leetickett) +- Lazy load artifacts on pipelines list page. !60058 +- Create database table dast_site_profiles_pipelines. !60090 +- Allow issueSetDueDate GraphQL mutation to accept null values. !60139 +- Introduce limit to number of registered runners. !60157 +- Add isuable time tracking report. !60161 (Lee Tickett @leetickett) +- Add internal API support for updating issue types on issues. !60173 +- Allow merge request search via GraphQL. !60190 (Lee Tickett @leetickett) +- Add CI template field to project GraphQL type. !60276 +- Keep latest pipeline artifact forever. !60400 +- Expose user permissions on JobType. !60427 +- Add description and roll_over columns to iterations_cadences. !60436 +- Populate timelogs.project_id. !60439 (Lee Tickett @leetickett) +- Add Ci::Build graphql mutations. !60443 +- Ensure highlighting limits are documented, configurable, and monitorable. !60445 +- Add semgrep to SAST config UI. !60460 +- Add ability to swap revisions when comparing. !60491 +- Add status_changed_at to deployments webhooks. !60518 +- Show a random predefined message while MR merging is in progress. !60521 +- Add ability to view graph by job dependency. !60522 +- Show Deploy Boards for Environments in Folders. !60525 +- Allow frontend to observe Prometheus metrics. !60633 +- Add setting to allow or disallow duplicates for generic packages. !60664 +- Add Escalation policies and rule tables. !60685 +- Add support for create, updating, and filtering issues based on issue type in REST API. !60687 +- Improve logging in e-mail receiver processing. !60692 +- Allow migrating scheduled and retried Sidekiq jobs to new queues. !60724 +- Add support for creating/modifying different issue types via GraphQL API. !60747 +- Add Maven to Package Graphql types. !60808 +- Add API to set credit card validation timestamp for user. !60828 +- Add asset links to release keyword. !60896 +- Application setting for FloC participation (disabled by default). !60933 +- Add API endpoint for deleting a package file. !60970 +- Show total group counts in admin users table. !60998 +- Package: group and project graphql types - add search. !61001 +- Add missing status type and enum to package graphql type. !61002 +- Expose blob plain data in GraphQL. !61016 +- Lazy load artifacts dropdown in pipelines merge request widget. !61055 +- Remove feature flag from upgrade link in user menu. !61057 +- Show unit report attachments in the pipeline test report. !61075 +- Add Elastic Stack cluster integration. !61077 +- Implement bulk import for all groups on the page. !61097 +- Add shared_visible_only option to project's groups API. !61118 +- Add external status check responses. !61135 +- Add more attributes to the blob GraphQL API. !61155 +- Add complete field to indicate if a pipeline/job is complete. !61209 (Cong Chen @gentcys) +- Add stuck field to CiJob. !61247 +- Add option to remove labels on issue close in the REST and GraphQL API. !61286 +- Ban user state and UI. !61292 +- Enable by default scheduled execution of batched background migrations. !61316 +- Enable by default automatic optimization of batched background migrations. !61317 +- Improve UX of the award emoji picker. !61384 +- Add semgrep to Secure-Binaries and update support docs. !61411 +- Add cron worker for cleaning up unit test tables. !61463 +- Redirect to the last visited epic board. !61474 +- Implement wildcard support for pipeline include file paths. !61507 +- Add DS_EXCLUDED_ANALYZERS var to Dependency Scanning template. !61529 +- Add fields to graphQL version type. !61567 +- Add pipeline editor drawer for introduction to CI. !61620 +- Add nuget metadata type to Package GraphQl type. !61695 +- Add repository diskPath parameter to GraphQL API. !61725 +- Upgrade Pages to v1.39.0. !61756 +- Add 3 stage pipeline template. !61762 +- Email users about SSH keys that are expired or expiring soon. !61812 +- Observe limit to hours setting in timelog report. !61849 (Lee Tickett @leetickett) + +### Other (122 changes, 38 of them are from the community) + +- Enable Content-Security-Policy header by default. !56923 +- Fix Rails/SaveBang Rubocop offenses for user related models. !57901 (Huzaifa Iftikhar @huzaifaiftikhar) +- Externalise strings in _abuse.html.haml. !57968 (nuwe1) +- Externalise Strings in /application_settings/_gitaly.html.haml. !57976 (nuwe1) +- Externalise strings in application_settings/_plantuml.html.haml. !58023 (nuwe1) +- Externalise strings in /application_settings/_prometheus.html.haml. !58030 (nuwe1) +- Externalize strings in /application_settings/_signin.html.haml. !58066 (nuwe1) +- Externalize strings in application_settings/_spam.html.haml. !58076 (nuwe1) +- Externalize strings in application_settings/_terminal.html.haml. !58081 (nuwe1) +- Eternalize strings in application_settings/_usage.html.haml. !58088 (nuwe1) +- Externalise strings in /admin/users/_form.html.haml. !58096 (nuwe1) +- Externalize strings in admin/users/_profile.html.haml. !58106 (nuwe1) +- Externalise strings in users/_projects.html.haml. !58110 (nuwe1) +- Externalise strings in users/edit.html.haml. !58117 (nuwe1) +- Externalize strings in users/projects.html.haml. !58122 (nuwe1) +- Externalize strings in /users/show.html.haml. !58126 (nuwe1) +- Externalize strings in appearances/_form.html.haml. !58135 (nuwe1) +- Externalise strings in appearances/preview_sign_in.html.haml. !58138 (nuwe1) +- Externalize strings in /background_jobs/show.html.haml. !58141 (nuwe1) +- Externalize strings in broadcast_messages/_form.html.haml. !58143 (nuwe1) +- Externalize strings in requests_profiles/index.html.haml. !58161 (nuwe1) +- Externalizes strings in runners/show.html.haml. !58166 (nuwe1) +- Externalises strings in spam_logs/index.html.haml. !58170 (nuwe1) +- Externalise strings in confirmations/new.html.haml. !58173 (nuwe1) +- Externalize strings in _confirmation_instructions_secondary.html.haml. !58216 (nuwe1) +- Externalize strings in reset_password_instructions.html.haml. !58224 (nuwe1) +- Externalise strings in reset_password_instructions.text.erb. !58226 (nuwe1) +- Externalize strings in unlock_instructions.text.erb. !58229 (nuwe1) +- Externalise strings in shared/_links.erb. !58278 (nuwe1) +- Externalize strings in milestones/_header_title.html.haml. !58300 (nuwe1) +- Externalize strings in milestones/new.html.haml. !58311 (nuwe1) +- Externalize strings in viewers/_changelog.html.haml. !58446 (nuwe1) +- Externalize strings in viewers/_contributing.html.haml. !58447 (nuwe1) +- Externalize strings in viewers/_download.html.haml. !58450 (nuwe1) +- Externalize strings in viewers/_license.html.haml. !58452 (nuwe1) +- Externalise-strings-in-viewers/_readme.html.haml. !58456 (nuwe1) +- Remove the global default branch feature flag. !59024 +- Review and revise custom issue tracker UI text. !59277 +- Add specs ensuring all metric definition key paths are present in Usage Ping structure. !59314 +- Review and revise EWM integration UI text. !59386 +- Review UI text and docs for Flowdock integration. !59388 +- Align UI of Merge Conflicts app with our design system. !59400 +- Prepare to convert PK type for ci_build_needs. !59467 +- Upgrade Bootstrap to v4.5.3. !59501 +- Review UI text and docs - Google Chat. !59518 +- Make Sentry processors for GitLab-internal error tracking compatible with new version of Sentry gem. !59565 +- Upgrades the final few bootstrap buttons. !59641 +- Remove the enabled by default feature flag for maven group level improvements. !59748 +- Initialize int8 migration for ci_job_artifacts. !59786 +- Do not require invited users to confirm their email address. !59790 +- Update GitLab Runner Helm Chart to 0.28.0. !59802 +- Update Create:Code Review metrics definitions. !59816 +- Update Metrics Definitions for Runner. !59824 +- Add group_level? and instance_level? helpers to Service model. !59838 (Amit Patel @amit.savani) +- Update UI text for confluence integration. !59839 +- Revise project access tokens UI text. !59878 +- Remove usage_data_track_quickactions feature flag. !59914 +- Update, organize, and improve analytics metrics definition files. !59926 +- Add --ee option to Usage Metric Definition generator to fill correct tier and distribution. !59942 +- Initialize conversion of ci_sources_pipelines.source_job_id to bigint. !59951 +- Review and revise YouTrack integration UI text. !59998 +- Review UI text for pipeline error messages. !60018 +- Drop Vulnerabilities without backing Finding. !60023 +- Remove feature flags from known events. !60053 +- Update KaTeX integration to v0.13.0. !60071 +- Update Bugzilla integration UI text. !60080 +- Drop Jira proxy setting columns. !60123 +- Add index to support execution time order for batched migration jobs. !60133 +- Remove gldropdown_tags feature flag. !60153 +- Update active branch icon in IDE to conform to the Pajamas design guide. !60168 (Andreas Resch @reschandreas) +- Add migration to swap partitioned web_hook_logs. !60184 +- Update UI links to docs. !60247 +- Add index to batched migration jobs status. !60248 +- Initialize int8 migration for ci_builds. !60265 +- Update GitLab Shell to v13.18.0. !60288 +- Remove not_issuable_queries feature flag. !60321 +- Remove optimized_timebox_queries feature flag. !60326 +- Initialize conversion of ci_build_trace_chunks.build_id to bigint. !60346 +- Add user availability status to status modal and settings. !60351 +- Align UI text for CI integrations with each other. !60352 +- Update 5 min app metric defintions. !60364 +- Initialize conversion of ci_builds_runner_session.build_id to bigint. !60366 +- Update instance_auto_devops_enabled metric team metadata. !60374 +- Update AWS deploy templates metrics. !60377 +- Remove graphql_release_data, graphql_milestone_stats, and graphql_releases_page feature flags. !60390 +- Remove invite_members_version_b experiment. !60426 +- Remove feature flag for pipeline status in pipeline editor. !60463 +- Review and revise project integration descriptions. !60510 +- Validate foreign key on GroupHooks. !60527 +- Bump capybara gem version. !60532 +- Remove unused :auto_create_cluster_management_project feature flag. !60550 +- Refactor Webex Teams integration settings text. !60565 +- Removed feature flag for Pipeline editor merged YAML tab. !60659 +- Invalid invite tokens should redirect to the GitLab product. !60666 +- Remove search_track_unique_users feature flag. !60706 +- Prepare devops adoption database structure for migration. !60733 +- Remove optimize_shifting_relative_positions feature flag. !60792 +- updating hover state to match other pipeline graph buttons. !60801 (Matt Saddington @mattsaddo) +- Make RecalculateProjectAuthorizations background migration no-op. !60825 +- Create database structure to support project value streams. !60925 +- Remove invalidated CI Syntax Templates Experiment. !60937 +- Update messages when user cannot directly push code to project. !61071 +- Remove feature flags related with tracking using Redis HyperLogLog for code review events. !61078 +- Merge branch 'mo-update-artifact-documentation' into 'master'. !61084 +- Update projects approval rules Usage Data metrics. !61106 +- Add issue tracker integrations help text. !61158 +- Update checkbox styles in "Group" -> "Settings" -> "General" -> "Permissions, LFS, 2FA". !61294 +- Update usage ping metrics for group configure. !61373 +- Decrease space between invite and import members buttons to align with Pajamas spacing. !61396 +- Update button styles, spacing, variants and responsive behavior for the Tags page. !61413 +- Remove sort_diffs feature flag. !61440 +- Reschedule DropInvalidVulnerabilities and track jobs. !61491 +- Geo: Remove released feature flag `geo_package_file_verification`. !61568 +- Remove update merge request related feature flags. !61569 +- Fix inconsistent cancel merge train button label. !61597 +- Updating button variant and adding tooltip for the SSH delete key button. !61626 +- Add draft column to merge_requests table. !61681 +- Lowers the z-indexing of the pipeline drawer. !61683 +- Update temporary NuGet packages to have processing status. !61724 +- Log additional package extraction errors. !61745 +- Remove issuable destroy service related FFs. !61764 +- Change wording for design management upload. !61782 + + ## 13.11.4 (2021-05-14) ### Fixed (3 changes) @@ -846,6 +1485,18 @@ entry. - Externalize strings in labels/new.html.haml. (nuwe1) +## 13.10.4 (2021-04-27) + +### Security (6 changes) + +- Prevent tokens with only read_api scope from executing mutations. +- Update mermaid to version 8.9.2. +- Do not allow deploy tokens in the dependency proxy authentication service. +- Disable keyset pagination for branches by default. +- Bump Carrierwave gem to v1.3.2. +- Restrict setting system_note_timestamp to owners. + + ## 13.10.3 (2021-04-13) ### Security (3 changes) @@ -1415,6 +2066,18 @@ entry. - Convert mattermost alert to pajamas. !56556 +## 13.9.7 (2021-04-27) + +### Security (6 changes) + +- Prevent tokens with only read_api scope from executing mutations. +- Update mermaid to version 8.9.2. +- Do not allow deploy tokens in the dependency proxy authentication service. +- Disable keyset pagination for branches by default. +- Bump Carrierwave gem to v1.3.2. +- Restrict setting system_note_timestamp to owners. + + ## 13.9.6 (2021-04-13) ### Security (2 changes) diff --git a/Dangerfile b/Dangerfile index 699be613f2..37a45674e1 100644 --- a/Dangerfile +++ b/Dangerfile @@ -2,11 +2,15 @@ require 'gitlab-dangerfiles' -Gitlab::Dangerfiles.import_plugins(danger) -danger.import_plugin('danger/plugins/*.rb') +gitlab_dangerfiles = Gitlab::Dangerfiles::Engine.new(self) +gitlab_dangerfiles.import_plugins return if helper.release_automation? +danger.import_plugin('danger/plugins/*.rb') + +gitlab_dangerfiles.import_dangerfiles + project_helper.rule_names.each do |rule| danger.import_dangerfile(path: File.join('danger', rule)) end diff --git a/GITALY_SERVER_VERSION b/GITALY_SERVER_VERSION index 33498dc40c..975d54d8fc 100644 --- a/GITALY_SERVER_VERSION +++ b/GITALY_SERVER_VERSION @@ -1 +1 @@ -13.11.5 \ No newline at end of file +13.12.3 \ No newline at end of file diff --git a/GITLAB_ELASTICSEARCH_INDEXER_VERSION b/GITLAB_ELASTICSEARCH_INDEXER_VERSION index c8e38b6140..46b81d815a 100644 --- a/GITLAB_ELASTICSEARCH_INDEXER_VERSION +++ b/GITLAB_ELASTICSEARCH_INDEXER_VERSION @@ -1 +1 @@ -2.9.0 +2.11.0 diff --git a/GITLAB_KAS_VERSION b/GITLAB_KAS_VERSION index f35ba50998..6665a53d3b 100644 --- a/GITLAB_KAS_VERSION +++ b/GITLAB_KAS_VERSION @@ -1 +1 @@ -13.11.1 +13.12.0 diff --git a/GITLAB_PAGES_VERSION b/GITLAB_PAGES_VERSION index ebeef2f2d6..5edffce6d5 100644 --- a/GITLAB_PAGES_VERSION +++ b/GITLAB_PAGES_VERSION @@ -1 +1 @@ -1.38.0 +1.39.0 diff --git a/GITLAB_SHELL_VERSION b/GITLAB_SHELL_VERSION index 15ede84747..ce0b279568 100644 --- a/GITLAB_SHELL_VERSION +++ b/GITLAB_SHELL_VERSION @@ -1 +1 @@ -13.17.0 +13.18.0 diff --git a/Gemfile b/Gemfile index 876bcfaabf..3aee2845ea 100644 --- a/Gemfile +++ b/Gemfile @@ -18,11 +18,14 @@ gem 'default_value_for', '~> 3.4.0' gem 'pg', '~> 1.1' gem 'rugged', '~> 1.1' -gem 'grape-path-helpers', '~> 1.6.1' +gem 'grape-path-helpers', '~> 1.6.3' gem 'faraday', '~> 1.0' gem 'marginalia', '~> 1.10.0' +# Authorization +gem 'declarative_policy', '~> 1.0.0' + # Authentication libraries gem 'devise', '~> 4.7.2' gem 'bcrypt', '~> 3.1', '>= 3.1.14' @@ -46,7 +49,7 @@ gem 'omniauth-shibboleth', '~> 1.3.0' gem 'omniauth-twitter', '~> 1.4' gem 'omniauth_crowd', '~> 2.4.0' gem 'omniauth-authentiq', '~> 0.3.3' -gem 'omniauth_openid_connect', '~> 0.3.5' +gem 'gitlab-omniauth-openid-connect', '~> 0.4.0', require: 'omniauth_openid_connect' gem 'omniauth-salesforce', '~> 1.0.5' gem 'omniauth-atlassian-oauth2', '~> 0.2.0' gem 'rack-oauth2', '~> 1.16.0' @@ -89,7 +92,7 @@ gem 'net-ldap', '~> 0.16.3' # API gem 'grape', '~> 1.5.2' -gem 'grape-entity', '~> 0.7.1' +gem 'grape-entity', '~> 0.9.0' gem 'rack-cors', '~> 1.0.6', require: 'rack/cors' # GraphQL API @@ -264,7 +267,7 @@ gem 'kubeclient', '~> 4.9.1' # Sanitize user input gem 'sanitize', '~> 5.2.1' -gem 'babosa', '~> 1.0.2' +gem 'babosa', '~> 1.0.4' # Sanitizes SVG input gem 'loofah', '~> 2.2' @@ -297,7 +300,7 @@ gem 'gon', '~> 6.4.0' gem 'request_store', '~> 1.5' gem 'base32', '~> 0.3.0' -gem "gitlab-license", "~> 1.4" +gem 'gitlab-license', '~> 1.5' # Protect against bruteforcing gem 'rack-attack', '~> 6.3.0' @@ -343,6 +346,7 @@ end group :development do gem 'lefthook', '~> 0.7.0', require: false + gem 'solargraph', '~> 0.40.4', require: false gem 'letter_opener_web', '~> 1.4.0' @@ -356,9 +360,9 @@ end group :development, :test do gem 'deprecation_toolkit', '~> 1.5.1', require: false gem 'bullet', '~> 6.1.3' - gem 'gitlab-pry-byebug', platform: :mri, require: ['pry-byebug', 'pry-byebug/pry_remote_ext'] + gem 'pry-byebug' gem 'pry-rails', '~> 0.3.9' - gem 'pry-remote' + gem 'pry-shell', '~> 0.4.0' gem 'awesome_print', require: false @@ -399,7 +403,7 @@ group :development, :test do end group :development, :test, :danger do - gem 'gitlab-dangerfiles', '~> 1.1.1', require: false + gem 'gitlab-dangerfiles', '~> 2.0.0', require: false end group :development, :test, :coverage do @@ -413,13 +417,12 @@ group :development, :test, :omnibus do end group :test do - gem 'json-schema', '~> 2.8.0' gem 'fuubar', '~> 2.2.0' gem 'rspec-retry', '~> 0.6.1' gem 'rspec_profiling', '~> 0.0.6' gem 'rspec-parameterized', require: false - gem 'capybara', '~> 3.34.0' + gem 'capybara', '~> 3.35.3' gem 'capybara-screenshot', '~> 1.0.22' gem 'selenium-webdriver', '~> 3.142' @@ -474,8 +477,11 @@ group :ed25519 do gem 'bcrypt_pbkdf', '~> 1.0' end +# Spamcheck GRPC protocol definitions +gem 'spamcheck', '~> 0.1.0' + # Gitaly GRPC protocol definitions -gem 'gitaly', '~> 13.11.0.pre.rc1' +gem 'gitaly', '~> 13.12.0.pre.rc1' gem 'grpc', '~> 1.30.2' @@ -488,7 +494,7 @@ gem 'flipper', '~> 0.17.1' gem 'flipper-active_record', '~> 0.17.1' gem 'flipper-active_support_cache_store', '~> 0.17.1' gem 'unleash', '~> 0.1.5' -gem 'gitlab-experiment', '~> 0.5.3' +gem 'gitlab-experiment', '~> 0.5.4' # Structured logging gem 'lograge', '~> 0.5' diff --git a/Gemfile.lock b/Gemfile.lock index 059dcbed1d..23876a9ecc 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -132,11 +132,13 @@ GEM faraday_middleware (~> 1.0.0.rc1) net-http-persistent (~> 4.0) nokogiri (~> 1.11.0.rc2) - babosa (1.0.2) + babosa (1.0.4) + backport (1.1.2) base32 (0.3.2) batch-loader (2.0.1) bcrypt (3.1.16) bcrypt_pbkdf (1.0.0) + benchmark (0.1.1) benchmark-ips (2.3.0) benchmark-memory (0.1.2) memory_profiler (~> 0.9) @@ -160,13 +162,13 @@ GEM bundler (>= 1.2.0, < 3) thor (>= 0.18, < 2) byebug (11.1.3) - capybara (3.34.0) + capybara (3.35.3) addressable mini_mime (>= 0.1.3) nokogiri (~> 1.8) rack (>= 1.6.0) rack-test (>= 0.6.3) - regexp_parser (~> 1.5) + regexp_parser (>= 1.5, < 3.0) xpath (~> 3.2) capybara-screenshot (1.0.22) capybara (>= 1.0, < 4) @@ -245,6 +247,7 @@ GEM html-pipeline declarative (0.0.20) declarative-option (0.1.0) + declarative_policy (1.0.0) default_value_for (3.4.0) activerecord (>= 3.2.0, < 7.0) deprecation_toolkit (1.5.1) @@ -306,6 +309,7 @@ GEM dry-equalizer (~> 0.3) dry-inflector (~> 0.1, >= 0.1.2) dry-logic (~> 1.0, >= 1.0.2) + e2mmap (0.1.0) ecma-re-validator (0.2.1) regexp_parser (~> 1.2) ed25519 (1.2.4) @@ -435,7 +439,7 @@ GEM rails (>= 3.2.0) git (1.7.0) rchardet (~> 1.8) - gitaly (13.11.0.pre.rc1) + gitaly (13.12.0.pre.rc1) grpc (~> 1.0) github-markup (1.7.0) gitlab (4.16.1) @@ -443,10 +447,11 @@ GEM terminal-table (~> 1.5, >= 1.5.1) gitlab-chronic (0.10.5) numerizer (~> 0.2) - gitlab-dangerfiles (1.1.1) + gitlab-dangerfiles (2.0.0) danger-gitlab - gitlab-experiment (0.5.3) + gitlab-experiment (0.5.4) activesupport (>= 3.0) + request_store (>= 1.0) scientist (~> 1.6, >= 1.6.0) gitlab-fog-azure-rm (1.0.1) azure-storage-blob (~> 2.0) @@ -470,13 +475,14 @@ GEM opentracing (~> 0.4) pg_query (~> 1.3) redis (> 3.0.0, < 5.0.0) - gitlab-license (1.4.0) + gitlab-license (1.5.0) gitlab-mail_room (0.0.9) gitlab-markup (1.7.1) gitlab-net-dns (0.9.1) - gitlab-pry-byebug (3.9.0) - byebug (~> 11.0) - pry (~> 0.13.0) + gitlab-omniauth-openid-connect (0.4.0) + addressable (~> 2.7) + omniauth (~> 1.9) + openid_connect (~> 1.2) gitlab-sidekiq-fetcher (0.5.6) sidekiq (~> 5) gitlab-styles (6.2.0) @@ -511,8 +517,8 @@ GEM google-cloud-env (1.4.0) faraday (>= 0.17.3, < 2.0) google-protobuf (3.14.0) - googleapis-common-protos-types (1.0.5) - google-protobuf (~> 3.11) + googleapis-common-protos-types (1.0.6) + google-protobuf (~> 3.14) googleauth (0.14.0) faraday (>= 0.17.3, < 2.0) jwt (>= 1.4, < 3.0) @@ -529,10 +535,10 @@ GEM mustermann-grape (~> 1.0.0) rack (>= 1.3.0) rack-accept - grape-entity (0.7.1) - activesupport (>= 4.0) + grape-entity (0.9.0) + activesupport (>= 3.0.0) multi_json (>= 1.3.2) - grape-path-helpers (1.6.1) + grape-path-helpers (1.6.3) activesupport grape (~> 1.3) rake (> 12) @@ -633,6 +639,7 @@ GEM jaeger-client (1.1.0) opentracing (~> 0.3) thrift + jaro_winkler (1.5.4) jira-ruby (2.1.4) activesupport atlassian-jwt @@ -648,8 +655,6 @@ GEM activesupport (>= 4.2) aes_key_wrap bindata - json-schema (2.8.1) - addressable (>= 2.4) json_schemer (0.2.12) ecma-re-validator (~> 0.2) hana (~> 1.3) @@ -870,12 +875,8 @@ GEM activesupport nokogiri (>= 1.4.4) omniauth (~> 1.0) - omniauth_openid_connect (0.3.5) - addressable (~> 2.5) - omniauth (~> 1.9) - openid_connect (~> 1.1) open4 (1.3.4) - openid_connect (1.1.8) + openid_connect (1.2.0) activemodel attr_required (>= 1.0.0) json-jwt (>= 1.5.0) @@ -897,6 +898,8 @@ GEM parser (3.0.0.0) ast (~> 2.4.1) parslet (1.8.2) + pastel (0.8.0) + tty-color (~> 0.5) peek (1.1.0) railties (>= 4.0.0) pg (1.2.3) @@ -921,11 +924,15 @@ GEM pry (0.13.1) coderay (~> 1.1) method_source (~> 1.0) + pry-byebug (3.9.0) + byebug (~> 11.0) + pry (~> 0.13.0) pry-rails (0.3.9) pry (>= 0.10.4) - pry-remote (0.1.8) - pry (~> 0.9) - slop (~> 3.0) + pry-shell (0.4.0) + pry (~> 0.13.0) + tty-markdown + tty-prompt public_suffix (4.0.6) puma (5.1.1) nio4r (~> 2.0) @@ -1191,9 +1198,24 @@ GEM simplecov-html (0.12.2) sixarm_ruby_unaccent (1.2.0) slack-messenger (2.3.4) - slop (3.6.0) snowplow-tracker (0.6.1) contracts (~> 0.7, <= 0.11) + solargraph (0.40.4) + backport (~> 1.1) + benchmark + bundler (>= 1.17.2) + e2mmap + jaro_winkler (~> 1.5) + kramdown (~> 2.3) + kramdown-parser-gfm (~> 1.1) + parser (~> 3.0) + reverse_markdown (>= 1.0.5, < 3) + rubocop (>= 0.52) + thor (~> 1.0) + tilt (~> 2.0) + yard (~> 0.9, >= 0.9.24) + spamcheck (0.1.0) + grpc (~> 1.0) spring (2.1.1) spring-commands-rspec (1.0.4) spring (>= 0.9.1) @@ -1215,7 +1237,12 @@ GEM state_machines-activerecord (0.8.0) activerecord (>= 5.1) state_machines-activemodel (>= 0.8.0) - swd (1.1.2) + strings (0.2.1) + strings-ansi (~> 0.2) + unicode-display_width (>= 1.5, < 3.0) + unicode_utils (~> 1.4) + strings-ansi (0.2.0) + swd (1.2.0) activesupport (>= 3) attr_required (>= 0.0.5) httpclient (>= 2.4) @@ -1261,6 +1288,23 @@ GEM truncato (0.7.11) htmlentities (~> 4.3.1) nokogiri (>= 1.7.0, <= 2.0) + tty-color (0.6.0) + tty-cursor (0.7.1) + tty-markdown (0.7.0) + kramdown (>= 1.16.2, < 3.0) + pastel (~> 0.8) + rouge (~> 3.14) + strings (~> 0.2.0) + tty-color (~> 0.5) + tty-screen (~> 0.8) + tty-prompt (0.23.1) + pastel (~> 0.8) + tty-reader (~> 0.8) + tty-reader (0.9.0) + tty-cursor (~> 0.7) + tty-screen (~> 0.8) + wisper (~> 2.0) + tty-screen (0.8.1) tzinfo (1.2.9) thread_safe (~> 0.1) u2f (0.2.1) @@ -1329,12 +1373,14 @@ GEM builder expression_parser rinku + wisper (2.0.1) with_env (1.1.0) wmi-lite (1.0.5) xml-simple (1.1.5) xpath (3.2.0) nokogiri (~> 1.8) yajl-ruby (1.4.1) + yard (0.9.26) zeitwerk (2.4.2) PLATFORMS @@ -1360,7 +1406,7 @@ DEPENDENCIES aws-sdk-cloudformation (~> 1) aws-sdk-core (~> 3) aws-sdk-s3 (~> 1) - babosa (~> 1.0.2) + babosa (~> 1.0.4) base32 (~> 0.3.0) batch-loader (~> 2.0.1) bcrypt (~> 3.1, >= 3.1.14) @@ -1373,7 +1419,7 @@ DEPENDENCIES browser (~> 4.2) bullet (~> 6.1.3) bundler-audit (~> 0.7.0.1) - capybara (~> 3.34.0) + capybara (~> 3.35.3) capybara-screenshot (~> 1.0.22) carrierwave (~> 1.3) charlock_holmes (~> 0.7.7) @@ -1385,6 +1431,7 @@ DEPENDENCIES crystalball (~> 0.7.0) database_cleaner (~> 1.7.0) deckar01-task_list (= 2.3.1) + declarative_policy (~> 1.0.0) default_value_for (~> 3.4.0) deprecation_toolkit (~> 1.5.1) derailed_benchmarks @@ -1425,19 +1472,19 @@ DEPENDENCIES gettext (~> 3.3) gettext_i18n_rails (~> 1.8.0) gettext_i18n_rails_js (~> 1.3) - gitaly (~> 13.11.0.pre.rc1) + gitaly (~> 13.12.0.pre.rc1) github-markup (~> 1.7.0) gitlab-chronic (~> 0.10.5) - gitlab-dangerfiles (~> 1.1.1) - gitlab-experiment (~> 0.5.3) + gitlab-dangerfiles (~> 2.0.0) + gitlab-experiment (~> 0.5.4) gitlab-fog-azure-rm (~> 1.0.1) gitlab-fog-google (~> 1.13) gitlab-labkit (~> 0.16.2) - gitlab-license (~> 1.4) + gitlab-license (~> 1.5) gitlab-mail_room (~> 0.0.9) gitlab-markup (~> 1.7.1) gitlab-net-dns (~> 0.9.1) - gitlab-pry-byebug + gitlab-omniauth-openid-connect (~> 0.4.0) gitlab-sidekiq-fetcher (= 0.5.6) gitlab-styles (~> 6.2.0) gitlab_chronic_duration (~> 0.10.6.2) @@ -1447,8 +1494,8 @@ DEPENDENCIES google-protobuf (~> 3.14.0) gpgme (~> 2.0.19) grape (~> 1.5.2) - grape-entity (~> 0.7.1) - grape-path-helpers (~> 1.6.1) + grape-entity (~> 0.9.0) + grape-path-helpers (~> 1.6.3) grape_logging (~> 1.7) graphiql-rails (~> 1.4.10) graphlient (~> 0.4.0) @@ -1472,7 +1519,6 @@ DEPENDENCIES jira-ruby (~> 2.1.4) js_regex (~> 3.4) json (~> 2.3.0) - json-schema (~> 2.8.0) json_schemer (~> 0.2.12) jwt (~> 2.1.0) kaminari (~> 1.0) @@ -1521,7 +1567,6 @@ DEPENDENCIES omniauth-shibboleth (~> 1.3.0) omniauth-twitter (~> 1.4) omniauth_crowd (~> 2.4.0) - omniauth_openid_connect (~> 0.3.5) org-ruby (~> 0.9.12) parallel (~> 1.19) parslet (~> 1.8) @@ -1531,8 +1576,9 @@ DEPENDENCIES png_quantizator (~> 0.2.1) premailer-rails (~> 1.10.3) prometheus-client-mmap (~> 0.12.0) + pry-byebug pry-rails (~> 0.3.9) - pry-remote + pry-shell (~> 0.4.0) puma (~> 5.1.1) puma_worker_killer (~> 0.3.1) rack (~> 2.2.3) @@ -1587,6 +1633,8 @@ DEPENDENCIES simplecov-cobertura (~> 1.3.1) slack-messenger (~> 2.3.4) snowplow-tracker (~> 0.6.1) + solargraph (~> 0.40.4) + spamcheck (~> 0.1.0) spring (~> 2.1.0) spring-commands-rspec (~> 1.0.4) sprockets (~> 3.7.0) diff --git a/README.md b/README.md index 63c9570474..103c23f152 100644 --- a/README.md +++ b/README.md @@ -88,7 +88,7 @@ For more information please see the [architecture](https://docs.gitlab.com/ee/de ## UX design -Please adhere to the [UX Guide](doc/development/ux_guide/index.md) when creating designs and implementing code. +Please adhere to the [UX Guide](https://design.gitlab.com/) when creating designs and implementing code. ## Third-party applications diff --git a/VERSION b/VERSION index 33498dc40c..975d54d8fc 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -13.11.5 \ No newline at end of file +13.12.3 \ No newline at end of file diff --git a/app/views/shared/icons/_dev_ops_report_no_data.svg b/app/assets/images/dev_ops_report_no_data.svg similarity index 100% rename from app/views/shared/icons/_dev_ops_report_no_data.svg rename to app/assets/images/dev_ops_report_no_data.svg diff --git a/app/assets/images/learn_gitlab/get_started.svg b/app/assets/images/learn_gitlab/get_started.svg new file mode 100644 index 0000000000..0e682842b1 --- /dev/null +++ b/app/assets/images/learn_gitlab/get_started.svg @@ -0,0 +1 @@ + diff --git a/app/assets/images/learn_gitlab/graduation_hat.svg b/app/assets/images/learn_gitlab/graduation_hat.svg new file mode 100644 index 0000000000..998d8d9b93 --- /dev/null +++ b/app/assets/images/learn_gitlab/graduation_hat.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/assets/images/learn_gitlab/rectangle.svg b/app/assets/images/learn_gitlab/rectangle.svg new file mode 100644 index 0000000000..51667e7715 --- /dev/null +++ b/app/assets/images/learn_gitlab/rectangle.svg @@ -0,0 +1 @@ + diff --git a/app/assets/javascripts/actioncable_link.js b/app/assets/javascripts/actioncable_link.js new file mode 100644 index 0000000000..895a34ba15 --- /dev/null +++ b/app/assets/javascripts/actioncable_link.js @@ -0,0 +1,40 @@ +import { ApolloLink, Observable } from 'apollo-link'; +import { print } from 'graphql'; +import cable from '~/actioncable_consumer'; +import { uuids } from '~/lib/utils/uuids'; + +export default class ActionCableLink extends ApolloLink { + // eslint-disable-next-line class-methods-use-this + request(operation) { + return new Observable((observer) => { + const subscription = cable.subscriptions.create( + { + channel: 'GraphqlChannel', + query: operation.query ? print(operation.query) : null, + variables: operation.variables, + operationName: operation.operationName, + nonce: uuids()[0], + }, + { + received(data) { + if (data.errors) { + observer.error(data.errors); + } else if (data.result) { + observer.next(data.result); + } + + if (!data.more) { + observer.complete(); + } + }, + }, + ); + + return { + unsubscribe() { + subscription.unsubscribe(); + }, + }; + }); + } +} diff --git a/app/assets/javascripts/admin/users/components/actions/delete.vue b/app/assets/javascripts/admin/users/components/actions/delete.vue index 725d3dbf38..6f4f272154 100644 --- a/app/assets/javascripts/admin/users/components/actions/delete.vue +++ b/app/assets/javascripts/admin/users/components/actions/delete.vue @@ -14,12 +14,22 @@ export default { type: Object, required: true, }, + oncallSchedules: { + type: Array, + required: false, + default: () => [], + }, }, }; diff --git a/app/assets/javascripts/admin/users/components/actions/delete_with_contributions.vue b/app/assets/javascripts/admin/users/components/actions/delete_with_contributions.vue index 0ae15bfbeb..82b09c04ab 100644 --- a/app/assets/javascripts/admin/users/components/actions/delete_with_contributions.vue +++ b/app/assets/javascripts/admin/users/components/actions/delete_with_contributions.vue @@ -14,12 +14,22 @@ export default { type: Object, required: true, }, + oncallSchedules: { + type: Array, + required: false, + default: () => [], + }, }, }; diff --git a/app/assets/javascripts/admin/users/components/actions/shared/shared_delete_action.vue b/app/assets/javascripts/admin/users/components/actions/shared/shared_delete_action.vue index 9107d9ccdd..b3b68442e8 100644 --- a/app/assets/javascripts/admin/users/components/actions/shared/shared_delete_action.vue +++ b/app/assets/javascripts/admin/users/components/actions/shared/shared_delete_action.vue @@ -18,6 +18,10 @@ export default { type: String, required: true, }, + oncallSchedules: { + type: Array, + required: true, + }, }, computed: { modalAttributes() { @@ -26,6 +30,7 @@ export default { 'data-delete-user-url': this.paths.delete, 'data-gl-modal-action': this.modalType, 'data-username': this.username, + 'data-oncall-schedules': JSON.stringify(this.oncallSchedules), }; }, }, diff --git a/app/assets/javascripts/admin/users/components/actions/unblock.vue b/app/assets/javascripts/admin/users/components/actions/unblock.vue index f2b501caf0..d4c0f900c9 100644 --- a/app/assets/javascripts/admin/users/components/actions/unblock.vue +++ b/app/assets/javascripts/admin/users/components/actions/unblock.vue @@ -23,9 +23,7 @@ export default { 'data-method': 'put', 'data-modal-attributes': JSON.stringify({ title: sprintf(s__('AdminUsers|Unblock user %{username}?'), { username: this.username }), - message: s__( - 'AdminUsers|You can always unblock their account, their data will remain intact.', - ), + message: s__('AdminUsers|You can always block their account again if needed.'), okVariant: 'confirm', okTitle: s__('AdminUsers|Unblock'), }), diff --git a/app/assets/javascripts/admin/users/components/usage_ping_disabled.vue b/app/assets/javascripts/admin/users/components/usage_ping_disabled.vue deleted file mode 100644 index 5da3849501..0000000000 --- a/app/assets/javascripts/admin/users/components/usage_ping_disabled.vue +++ /dev/null @@ -1,48 +0,0 @@ - - diff --git a/app/assets/javascripts/admin/users/components/user_actions.vue b/app/assets/javascripts/admin/users/components/user_actions.vue index e92c97b54a..b782526e6b 100644 --- a/app/assets/javascripts/admin/users/components/user_actions.vue +++ b/app/assets/javascripts/admin/users/components/user_actions.vue @@ -70,14 +70,14 @@ export default {