From f1284938edfc2e033baf2c26ebadf42c526f6432 Mon Sep 17 00:00:00 2001 From: GitLab Bot Date: Mon, 30 May 2022 12:08:23 +0000 Subject: [PATCH] Add latest changes from gitlab-org/gitlab@master --- .gitlab/ci/global.gitlab-ci.yml | 2 +- .gitlab/ci/review-apps/dast.gitlab-ci.yml | 158 +++------- .../usage_trends/components/usage_counts.vue | 6 +- .../source_editor_markdown_livepreview_ext.js | 27 +- .../extensions/source_editor_webide_ext.js | 28 +- app/assets/javascripts/editor/schema/ci.json | 2 +- .../ide/components/repo_editor.vue | 26 -- .../javascripts/ide/lib/editor_options.js | 1 + .../settings/repository/show/index.js | 3 + .../projects/commit/components/form_modal.vue | 2 +- .../settings/repository/branch_rules/app.vue | 16 + .../branch_rules/mount_branch_rules.js | 13 + .../fragments/release.fragment.graphql | 1 + .../release_for_editing.fragment.graphql | 1 + .../mutations/create_release.mutation.graphql | 1 + .../queries/all_releases.query.graphql | 1 + .../components/approvals/approvals.vue | 3 +- .../vue_shared/components/clone_dropdown.vue | 2 +- .../project_stats_refresh_conflicts_guard.rb | 13 + app/controllers/help_controller.rb | 26 +- app/controllers/projects/jobs_controller.rb | 2 + .../projects/pipelines_controller.rb | 2 + .../settings/repository_controller.rb | 1 + app/graphql/mutations/ci/pipeline/destroy.rb | 13 + app/graphql/resolvers/milestones_resolver.rb | 23 +- app/graphql/types/milestone_type.rb | 4 + app/graphql/types/query_type.rb | 6 +- app/graphql/types/release_type.rb | 3 + app/models/member.rb | 2 +- app/policies/project_policy.rb | 1 + .../concerns/members/bulk_create_users.rb | 7 + app/services/members/base_service.rb | 13 + app/services/members/create_service.rb | 13 + app/services/members/destroy_service.rb | 11 +- .../members/groups/bulk_creator_service.rb | 6 + .../members/projects/bulk_creator_service.rb | 6 + .../members/projects/creator_service.rb | 18 ++ app/services/members/update_service.rb | 17 + .../application_settings/_whats_new.html.haml | 11 +- .../projects/branch_rules/_show.html.haml | 12 + .../projects/merge_requests/_mr_box.html.haml | 2 +- .../creations/_new_compare.html.haml | 20 +- .../projects/pages_domains/show.html.haml | 7 +- .../settings/repository/show.html.haml | 2 + .../development/branch_rules.yml | 8 + .../counts_28d/20210520111133_total.yml | 1 + .../20210514141520_project_imports_total.yml | 1 + doc/.vale/gitlab/Uppercase.yml | 9 +- doc/administration/pages/index.md | 2 +- doc/administration/pages/source.md | 2 +- .../postgresql/database_load_balancing.md | 18 +- doc/api/graphql/reference/index.md | 8 + doc/topics/autodevops/prepare_deployment.md | 2 +- doc/user/permissions.md | 2 + .../dns_concepts.md | 14 +- .../index.md | 30 +- lib/api/ci/job_artifacts.rb | 6 + lib/api/ci/jobs.rb | 5 + lib/api/ci/pipelines.rb | 4 + ...project_stats_refresh_conflicts_helpers.rb | 15 + .../fix_merge_request_diff_commit_users.rb | 137 +------- .../graphql/authorize/authorize_resource.rb | 16 +- .../graphql/loaders/batch_model_loader.rb | 15 +- .../project_stats_refresh_conflicts_logger.rb | 9 + .../count_imported_projects_total_metric.rb | 40 +++ lib/gitlab/usage_data.rb | 2 +- locale/gitlab.pot | 12 +- qa/qa/runtime/namespace.rb | 2 +- spec/controllers/help_controller_spec.rb | 29 +- .../projects/jobs_controller_spec.rb | 114 ++++--- .../projects/pipelines_controller_spec.rb | 12 + .../project_members_controller_spec.rb | 83 ++++- .../settings/repository_settings_spec.rb | 16 + .../components/usage_counts_spec.js | 4 +- ...ce_editor_markdown_livepreview_ext_spec.js | 67 +++- .../editor/source_editor_webide_ext_spec.js | 55 ++++ .../ide/components/repo_editor_spec.js | 82 +---- .../repository/branch_rules/app_spec.js | 18 ++ .../components/approvals/approvals_spec.js | 4 +- .../__snapshots__/clone_dropdown_spec.js.snap | 2 +- spec/graphql/features/authorization_spec.rb | 51 ++- .../group_milestones_resolver_spec.rb | 10 - .../project_milestones_resolver_spec.rb | 10 - spec/graphql/types/base_field_spec.rb | 85 +++++ ...ct_stats_refresh_conflicts_helpers_spec.rb | 49 +++ ...ix_merge_request_diff_commit_users_spec.rb | 297 +----------------- .../authorize/authorize_resource_spec.rb | 32 ++ ...ect_stats_refresh_conflicts_logger_spec.rb | 23 +- ...unt_imported_projects_total_metric_spec.rb | 62 ++++ ...ix_merge_request_diff_commit_users_spec.rb | 16 - spec/models/project_group_link_spec.rb | 6 + spec/requests/api/ci/job_artifacts_spec.rb | 90 ++++-- spec/requests/api/ci/jobs_spec.rb | 112 ++++--- spec/requests/api/ci/pipelines_spec.rb | 12 + spec/requests/api/graphql/milestone_spec.rb | 136 ++++++-- .../mutations/ci/pipeline_destroy_spec.rb | 17 + .../api/graphql/project/milestones_spec.rb | 21 ++ spec/requests/api/members_spec.rb | 124 ++++++-- spec/requests/api/projects_spec.rb | 7 + spec/services/members/create_service_spec.rb | 12 + spec/services/members/destroy_service_spec.rb | 42 ++- .../groups/bulk_creator_service_spec.rb | 6 +- .../projects/bulk_creator_service_spec.rb | 6 +- spec/services/members/update_service_spec.rb | 76 ++++- spec/support/graphql/resolver_factories.rb | 4 +- spec/support/helpers/doc_url_helper.rb | 21 ++ spec/support/matchers/exceed_query_limit.rb | 7 +- .../policies/project_policy_shared_context.rb | 2 +- .../models/member_shared_examples.rb | 35 +++ .../members_notifications_shared_example.rb | 12 + ...stics_refresh_conflicts_shared_examples.rb | 21 ++ 111 files changed, 1729 insertions(+), 1055 deletions(-) create mode 100644 app/assets/javascripts/projects/settings/repository/branch_rules/app.vue create mode 100644 app/assets/javascripts/projects/settings/repository/branch_rules/mount_branch_rules.js create mode 100644 app/controllers/concerns/project_stats_refresh_conflicts_guard.rb create mode 100644 app/views/projects/branch_rules/_show.html.haml create mode 100644 config/feature_flags/development/branch_rules.yml create mode 100644 lib/api/helpers/project_stats_refresh_conflicts_helpers.rb create mode 100644 lib/gitlab/usage/metrics/instrumentations/count_imported_projects_total_metric.rb create mode 100644 spec/frontend/editor/source_editor_webide_ext_spec.js create mode 100644 spec/frontend/projects/settings/repository/branch_rules/app_spec.js create mode 100644 spec/lib/api/helpers/project_stats_refresh_conflicts_helpers_spec.rb create mode 100644 spec/lib/gitlab/usage/metrics/instrumentations/count_imported_projects_total_metric_spec.rb create mode 100644 spec/support/helpers/doc_url_helper.rb create mode 100644 spec/support/shared_examples/requests/api/project_statistics_refresh_conflicts_shared_examples.rb diff --git a/.gitlab/ci/global.gitlab-ci.yml b/.gitlab/ci/global.gitlab-ci.yml index 7e06a4a71bd..792e0ccc346 100644 --- a/.gitlab/ci/global.gitlab-ci.yml +++ b/.gitlab/ci/global.gitlab-ci.yml @@ -281,7 +281,7 @@ - name: postgres:12 command: ["postgres", "-c", "fsync=off", "-c", "synchronous_commit=off", "-c", "full_page_writes=off"] - name: redis:6.0-alpine - - name: elasticsearch:8.1.1 + - name: elasticsearch:8.2.0 variables: POSTGRES_HOST_AUTH_METHOD: trust PG_VERSION: "12" diff --git a/.gitlab/ci/review-apps/dast.gitlab-ci.yml b/.gitlab/ci/review-apps/dast.gitlab-ci.yml index df8ad4c517a..6116aae3bea 100644 --- a/.gitlab/ci/review-apps/dast.gitlab-ci.yml +++ b/.gitlab/ci/review-apps/dast.gitlab-ci.yml @@ -10,7 +10,7 @@ variables: DAST_USERNAME_FIELD: "user[login]" DAST_PASSWORD_FIELD: "user[password]" - DAST_SUBMIT_FIELD: "commit" + DAST_SUBMIT_FIELD: "name:button" DAST_FULL_SCAN_ENABLED: "true" DAST_VERSION: 2 GIT_STRATEGY: none @@ -28,7 +28,7 @@ needs: ["review-deploy"] stage: dast # Default job timeout set to 90m and dast rules needs 2h to so that it won't timeout. - timeout: 2h + timeout: 3h # Add retry because of intermittent connection problems. See https://gitlab.com/gitlab-org/gitlab/-/issues/244313 retry: 1 artifacts: @@ -42,149 +42,65 @@ # DAST scan with a subset of Release scan rules. # ZAP rule details can be found at https://www.zaproxy.org/docs/alerts/ -# 10019, 10021 Missing security headers -# 10023, 10024, 10025, 10037 Information Disclosure -# 10040 Secure Pages Include Mixed Content -# 10056 X-Debug-Token Information Leak -# Duration: 14 minutes 20 seconds - -dast:secureHeaders-csp-infoLeak: +dast:anti-clickjacking-header: extends: - .dast_conf variables: DAST_USERNAME: "user1" - DAST_ONLY_INCLUDE_RULES: "10019,10021,10023,10024,10025,10037,10040,10056" + DAST_ONLY_INCLUDE_RULES: "10020" script: - /analyze -# 90023 XML External Entity Attack -# Duration: 41 minutes 20 seconds -# 90019 Server Side Code Injection -# Duration: 34 minutes 31 seconds -dast:XXE-SrvSideInj: +dast:xss-persistant: extends: - .dast_conf variables: DAST_USERNAME: "user2" - DAST_ONLY_INCLUDE_RULES: "90023,90019" - script: - - /analyze - -# 0 Directory Browsing -# 2 Private IP Disclosure -# 3 Session ID in URL Rewrite -# 7 Remote File Inclusion -# Duration: 63 minutes 43 seconds -# 90034 Cloud Metadata Potentially Exposed -# Duration: 13 minutes 48 seconds -# 90022 Application Error Disclosure -# Duration: 12 minutes 7 seconds -dast:infoLeak-fileInc-DirBrowsing: - extends: - - .dast_conf - variables: - DAST_USERNAME: "user3" - DAST_ONLY_INCLUDE_RULES: "0,2,3,7,90034,90022" - script: - - /analyze - -# 10010 Cookie No HttpOnly Flag -# 10011 Cookie Without Secure Flag -# 10017 Cross-Domain JavaScript Source File Inclusion -# 10029 Cookie Poisoning -# 90033 Loosely Scoped Cookie -# 10054 Cookie Without SameSite Attribute -# Duration: 13 minutes 23 seconds -dast:insecureCookie: - extends: - - .dast_conf - variables: - DAST_USERNAME: "user4" - DAST_ONLY_INCLUDE_RULES: "10010,10011,10017,10029,90033,10054" - script: - - /analyze - - -# 20012 Anti-CSRF Tokens Check -# 10202 Absence of Anti-CSRF Tokens -# https://gitlab.com/gitlab-com/gl-security/appsec/appsec-team/-/issues/192 - -# Commented because of lot of FP's -# dast:csrfTokenCheck: -# extends: -# - .dast_conf -# variables: -# DAST_USERNAME: "user6" -# DAST_ONLY_INCLUDE_RULES: "20012,10202" -# script: -# - /analyze - -# 10098 Cross-Domain Misconfiguration -# 10105 Weak Authentication Method -# 40003 CRLF Injection -# 40008 Parameter Tampering -# Duration: 71 minutes 15 seconds -dast:corsMisconfig-weakauth-crlfInj: - extends: - - .dast_conf - variables: - DAST_USERNAME: "user5" - DAST_ONLY_INCLUDE_RULES: "10098,10105,40003,40008" - script: - - /analyze - -# 20019 External Redirect -# 20014 HTTP Parameter Pollution -# Duration: 46 minutes 12 seconds -dast:extRedirect-paramPollution: - extends: - - .dast_conf - variables: - DAST_USERNAME: "user6" - DAST_ONLY_INCLUDE_RULES: "20019,20014" - script: - - /analyze - -# 40022 SQL Injection - PostgreSQL -# Duration: 53 minutes 59 seconds -dast:sqlInjection: - extends: - - .dast_conf - variables: - DAST_USERNAME: "user7" - DAST_ONLY_INCLUDE_RULES: "40022" - script: - - /analyze - -# 40014 Cross Site Scripting (Persistent) -# Duration: 21 minutes 50 seconds -dast:xss-persistent: - extends: - - .dast_conf - variables: - DAST_USERNAME: "user8" DAST_ONLY_INCLUDE_RULES: "40014" script: - /analyze -# 40012 Cross Site Scripting (Reflected) -# Duration: 73 minutes 15 seconds -dast:xss-reflected: +dast:insecure-http-method: extends: - .dast_conf variables: - DAST_USERNAME: "user9" - DAST_ONLY_INCLUDE_RULES: "40012" + DAST_USERNAME: "user3" + DAST_ONLY_INCLUDE_RULES: "90028" script: - /analyze -# 40013 Session Fixation -# Duration: 44 minutes 25 seconds -dast:sessionFixation: +dast:server-side-template-inj: + extends: + - .dast_conf + variables: + DAST_USERNAME: "user4" + DAST_ONLY_INCLUDE_RULES: "90035" + script: + - /analyze + +dast:server-side-template-inj-blind: + extends: + - .dast_conf + variables: + DAST_USERNAME: "user5" + DAST_ONLY_INCLUDE_RULES: "90035" + script: + - /analyze + +dast:session-fixation: + extends: + - .dast_conf + variables: + DAST_USERNAME: "user6" + DAST_ONLY_INCLUDE_RULES: "40013" + script: + - /analyze + +dast:xss-dombased: extends: - .dast_conf variables: DAST_USERNAME: "user10" - DAST_ONLY_INCLUDE_RULES: "40013" + DAST_ONLY_INCLUDE_RULES: "40026" script: - /analyze diff --git a/app/assets/javascripts/analytics/usage_trends/components/usage_counts.vue b/app/assets/javascripts/analytics/usage_trends/components/usage_counts.vue index 63ec40d4ec6..457a52d3807 100644 --- a/app/assets/javascripts/analytics/usage_trends/components/usage_counts.vue +++ b/app/assets/javascripts/analytics/usage_trends/components/usage_counts.vue @@ -1,5 +1,5 @@ + + diff --git a/app/assets/javascripts/projects/settings/repository/branch_rules/mount_branch_rules.js b/app/assets/javascripts/projects/settings/repository/branch_rules/mount_branch_rules.js new file mode 100644 index 00000000000..abe0b93081e --- /dev/null +++ b/app/assets/javascripts/projects/settings/repository/branch_rules/mount_branch_rules.js @@ -0,0 +1,13 @@ +import Vue from 'vue'; +import BranchRulesApp from '~/projects/settings/repository/branch_rules/app.vue'; + +export default function mountBranchRules(el) { + if (!el) return null; + + return new Vue({ + el, + render(createElement) { + return createElement(BranchRulesApp); + }, + }); +} diff --git a/app/assets/javascripts/releases/graphql/fragments/release.fragment.graphql b/app/assets/javascripts/releases/graphql/fragments/release.fragment.graphql index 8a5613c75d2..e0de6d12b13 100644 --- a/app/assets/javascripts/releases/graphql/fragments/release.fragment.graphql +++ b/app/assets/javascripts/releases/graphql/fragments/release.fragment.graphql @@ -1,5 +1,6 @@ fragment Release on Release { __typename + id name tagName tagPath diff --git a/app/assets/javascripts/releases/graphql/fragments/release_for_editing.fragment.graphql b/app/assets/javascripts/releases/graphql/fragments/release_for_editing.fragment.graphql index 1823a327350..236d266a40a 100644 --- a/app/assets/javascripts/releases/graphql/fragments/release_for_editing.fragment.graphql +++ b/app/assets/javascripts/releases/graphql/fragments/release_for_editing.fragment.graphql @@ -1,4 +1,5 @@ fragment ReleaseForEditing on Release { + id name tagName description diff --git a/app/assets/javascripts/releases/graphql/mutations/create_release.mutation.graphql b/app/assets/javascripts/releases/graphql/mutations/create_release.mutation.graphql index 56bfe7c23d6..7344772adb9 100644 --- a/app/assets/javascripts/releases/graphql/mutations/create_release.mutation.graphql +++ b/app/assets/javascripts/releases/graphql/mutations/create_release.mutation.graphql @@ -1,6 +1,7 @@ mutation createRelease($input: ReleaseCreateInput!) { releaseCreate(input: $input) { release { + id links { selfUrl } diff --git a/app/assets/javascripts/releases/graphql/queries/all_releases.query.graphql b/app/assets/javascripts/releases/graphql/queries/all_releases.query.graphql index bda7ac52a47..61a06f268bd 100644 --- a/app/assets/javascripts/releases/graphql/queries/all_releases.query.graphql +++ b/app/assets/javascripts/releases/graphql/queries/all_releases.query.graphql @@ -13,6 +13,7 @@ query allReleases( __typename nodes { __typename + id name tagName tagPath diff --git a/app/assets/javascripts/vue_merge_request_widget/components/approvals/approvals.vue b/app/assets/javascripts/vue_merge_request_widget/components/approvals/approvals.vue index e7d5e4086bc..5b9845df5c7 100644 --- a/app/assets/javascripts/vue_merge_request_widget/components/approvals/approvals.vue +++ b/app/assets/javascripts/vue_merge_request_widget/components/approvals/approvals.vue @@ -110,8 +110,7 @@ export default { } else if (this.showUnapprove) { return { text: s__('mrWidget|Revoke approval'), - variant: 'warning', - category: 'secondary', + variant: 'default', action: () => this.unapprove(), }; } diff --git a/app/assets/javascripts/vue_shared/components/clone_dropdown.vue b/app/assets/javascripts/vue_shared/components/clone_dropdown.vue index f14e1992901..dd6923d9fcd 100644 --- a/app/assets/javascripts/vue_shared/components/clone_dropdown.vue +++ b/app/assets/javascripts/vue_shared/components/clone_dropdown.vue @@ -45,7 +45,7 @@ export default { };