From fecb8ece925c48cf64969f1ecced12e4c4497706 Mon Sep 17 00:00:00 2001 From: GitLab Bot Date: Thu, 2 Nov 2023 21:10:29 +0000 Subject: Add latest changes from gitlab-org/gitlab@master --- .gitlab/ci/gitlab-com/danger-review.gitlab-ci.yml | 2 +- .gitlab/ci/rails.gitlab-ci.yml | 31 +- .gitlab/ci/rules.gitlab-ci.yml | 18 +- GITALY_SERVER_VERSION | 2 +- Gemfile | 2 +- Gemfile.checksum | 20 +- Gemfile.lock | 4 +- .../components/access_token_table_app.vue | 2 +- .../access_tokens/components/expires_at_field.vue | 2 +- .../components/new_access_token_app.vue | 4 +- .../two_factor_auth/components/recovery_codes.vue | 12 +- .../components/invite_group_trigger.vue | 7 +- .../components/invite_members_trigger.vue | 9 +- .../components/invite_modal_base.vue | 3 +- .../components/members_token_select.vue | 1 + app/assets/javascripts/invite_members/constants.js | 1 + .../pages/profiles/two_factor_auths/index.js | 2 +- .../account/components/delete_account_modal.vue | 4 +- .../super_sidebar/components/user_menu.vue | 4 +- app/assets/javascripts/terms/components/app.vue | 4 +- .../confirm_danger/confirm_danger_modal.vue | 5 +- .../form/input_copy_toggle_visibility.vue | 1 + app/controllers/concerns/issuable_actions.rb | 2 + .../projects/merge_requests_controller.rb | 11 +- .../container_repository_tags_resolver.rb | 56 ++- .../types/container_repository_details_type.rb | 3 +- app/helpers/auth_helper.rb | 12 +- app/models/container_repository.rb | 21 + app/models/users/credit_card_validation.rb | 6 + .../users/upsert_credit_card_validation_service.rb | 63 ++- app/views/devise/passwords/edit.html.haml | 6 +- app/views/devise/sessions/_new_base.html.haml | 5 +- app/views/devise/sessions/_new_ldap.html.haml | 6 +- app/views/devise/sessions/new.html.haml | 2 +- app/views/devise/sessions/two_factor.html.haml | 4 +- app/views/devise/shared/_omniauth_box.html.haml | 2 +- .../shared/_signup_omniauth_provider_list.haml | 4 +- app/views/devise/shared/_tab_single.html.haml | 2 +- app/views/devise/shared/_tabs_ldap.html.haml | 6 +- app/views/doorkeeper/authorizations/new.html.haml | 2 +- app/views/layouts/devise.html.haml | 2 +- app/views/layouts/header/_default.html.haml | 2 +- app/views/layouts/terms.html.haml | 2 +- app/views/profiles/accounts/show.html.haml | 4 +- app/views/profiles/two_factor_auths/show.html.haml | 8 +- app/views/shared/access_tokens/_form.html.haml | 4 +- app/views/shared/deploy_tokens/_form.html.haml | 16 +- .../deploy_tokens/_new_deploy_token.html.haml | 6 +- .../only_highlight_discussions_requested.yml | 8 + .../use_repository_list_tags_on_graphql.yml | 8 + doc/administration/cicd.md | 100 +++- .../reference_architectures/index.md | 27 +- .../troubleshooting/gitlab_rails_cheat_sheet.md | 4 +- doc/ci/debugging.md | 280 +++++++++++ doc/ci/jobs/index.md | 64 +++ doc/ci/jobs/job_control.md | 22 +- doc/ci/pipelines/merge_request_pipelines.md | 22 + doc/ci/pipelines/merged_results_pipelines.md | 13 - doc/ci/troubleshooting.md | 558 +-------------------- doc/ci/yaml/index.md | 2 +- doc/development/index.md | 2 +- doc/user/ai_features.md | 22 +- .../policies/scan-result-policies.md | 32 ++ .../instrumentation/browser_sdk.md | 9 + lib/container_registry/gitlab_api_client.rb | 2 +- lib/container_registry/tag.rb | 17 +- lib/gitlab/discussions_diff/file_collection.rb | 14 +- locale/gitlab.pot | 6 + qa/qa/mobile/page/main/menu.rb | 4 +- qa/qa/page/component/access_tokens.rb | 26 +- qa/qa/page/component/confirm_modal.rb | 10 +- .../page/component/members/invite_members_modal.rb | 22 +- qa/qa/page/group/settings/group_deploy_tokens.rb | 42 +- qa/qa/page/main/login.rb | 86 ++-- qa/qa/page/main/menu.rb | 14 +- qa/qa/page/main/oauth.rb | 4 +- qa/qa/page/main/terms.rb | 8 +- qa/qa/page/main/two_factor_auth.rb | 8 +- qa/qa/page/profile/accounts/show.rb | 16 +- qa/qa/page/profile/ssh_keys.rb | 6 +- qa/qa/page/profile/two_factor_auth.rb | 38 +- qa/qa/page/project/settings/deploy_tokens.rb | 46 +- scripts/duo_chat/reporter.rb | 231 +++++++++ .../projects/merge_requests_controller_spec.rb | 147 ++++-- spec/factories/projects.rb | 2 + .../projects/members/manage_groups_spec.rb | 2 +- .../__snapshots__/expires_at_field_spec.js.snap | 2 +- .../components/access_token_table_app_spec.js | 2 +- .../components/new_access_token_app_spec.js | 14 + .../components/invite_members_trigger_spec.js | 13 + .../components/invite_modal_base_spec.js | 1 + .../confirm_danger/confirm_danger_modal_spec.js | 2 +- .../container_repository_tags_resolver_spec.rb | 136 ++++- .../container_registry/gitlab_api_client_spec.rb | 2 + spec/lib/container_registry/tag_spec.rb | 83 ++- .../discussions_diff/file_collection_spec.rb | 15 +- spec/models/container_repository_spec.rb | 95 ++++ spec/models/users/credit_card_validation_spec.rb | 12 +- .../container_repository_details_spec.rb | 120 +++++ spec/requests/api/users_spec.rb | 29 +- .../upsert_credit_card_validation_service_spec.rb | 111 ++-- spec/support/helpers/crypto_helpers.rb | 7 + vite.config.js | 4 + 103 files changed, 1935 insertions(+), 1034 deletions(-) create mode 100644 config/feature_flags/development/only_highlight_discussions_requested.yml create mode 100644 config/feature_flags/development/use_repository_list_tags_on_graphql.yml create mode 100644 doc/ci/debugging.md create mode 100755 scripts/duo_chat/reporter.rb create mode 100644 spec/support/helpers/crypto_helpers.rb diff --git a/.gitlab/ci/gitlab-com/danger-review.gitlab-ci.yml b/.gitlab/ci/gitlab-com/danger-review.gitlab-ci.yml index c6fa9a9e179..cad12b8b5cb 100644 --- a/.gitlab/ci/gitlab-com/danger-review.gitlab-ci.yml +++ b/.gitlab/ci/gitlab-com/danger-review.gitlab-ci.yml @@ -1,6 +1,6 @@ include: - project: gitlab-org/quality/pipeline-common - ref: 7.8.0 + ref: 7.10.2 file: - /ci/danger-review.yml diff --git a/.gitlab/ci/rails.gitlab-ci.yml b/.gitlab/ci/rails.gitlab-ci.yml index 30dff07e3e1..4e27baf2fbe 100644 --- a/.gitlab/ci/rails.gitlab-ci.yml +++ b/.gitlab/ci/rails.gitlab-ci.yml @@ -754,13 +754,38 @@ rspec system pg14-as-if-foss clusterwide-db: rspec-ee unit gitlab-duo-chat pg14: variables: REAL_AI_REQUEST: "true" - VERTEX_AI_EMBEDDINGS: "true" + RSPEC_RETRY_RETRY_COUNT: 0 extends: - .rspec-ee-base-pg14 - - .rails:rules:ee-gitlab-duo-chat-vertex-ai + - .rails:rules:ee-gitlab-duo-chat-base + parallel: + matrix: + - DUO_RSPEC: ["lib/gitlab/llm/chain/agents/zero_shot/executor_real_requests_spec.rb", "support_specs/helpers/chat_qa_evaluation_helpers_spec.rb"] script: - !reference [.base-script, script] - - rspec_paralellized_job "--fail-fast=${RSPEC_FAIL_FAST_THRESHOLD} --tag real_ai_request" + - bundle exec rspec -Ispec -rspec_helper --failure-exit-code 0 --tag real_ai_request --color -- ee/spec/${DUO_RSPEC} + +rspec-ee unit gitlab-duo-chat-qa pg14: + variables: + REAL_AI_REQUEST: "true" + RSPEC_RETRY_RETRY_COUNT: 0 + extends: + - .rspec-ee-base-pg14 + - .rails:rules:ee-gitlab-duo-chat-base + parallel: + matrix: + - DUO_RSPEC: ["qa_epic_spec.rb", "qa_issue_spec.rb"] + script: + - !reference [.base-script, script] + - source ./scripts/utils.sh + - install_gitlab_gem + - bundle exec rspec -Ispec -rspec_helper --failure-exit-code 0 --tag real_ai_request --color -- ee/spec/lib/gitlab/llm/chain/agents/zero_shot/${DUO_RSPEC} + - ./scripts/duo_chat/reporter.rb + artifacts: + expire_in: 5d + paths: + - tmp/duo_chat/qa*.json + - "${DUO_RSPEC}.md" rspec-ee migration pg14: extends: diff --git a/.gitlab/ci/rules.gitlab-ci.yml b/.gitlab/ci/rules.gitlab-ci.yml index 336e2df80f7..4c95c3b6906 100644 --- a/.gitlab/ci/rules.gitlab-ci.yml +++ b/.gitlab/ci/rules.gitlab-ci.yml @@ -65,7 +65,7 @@ .if-merge-request-labels-run-in-ruby3_1: &if-merge-request-labels-run-in-ruby3_1 if: '$CI_MERGE_REQUEST_LABELS =~ /pipeline:run-in-ruby3_1/' -.if-merge-request-labels-run-in-non-default-ruby: &if-merge-request-labels-run-in-non-default-ruby +.if-merge-request-labels-run-in-ruby3_2: &if-merge-request-labels-run-in-ruby3_2 if: '$CI_MERGE_REQUEST_LABELS =~ /pipeline:run-in-ruby3_2/' .if-merge-request-labels-as-if-foss: &if-merge-request-labels-as-if-foss @@ -2117,20 +2117,14 @@ when: never - if: '$ANTHROPIC_API_KEY == null' when: never - - <<: *if-merge-request - changes: *ai-patterns - when: manual - allow_failure: true - -.rails:rules:ee-gitlab-duo-chat-vertex-ai: - rules: - - !reference [".rails:rules:ee-gitlab-duo-chat-base", rules] - if: '$VERTEX_AI_PROJECT == null' when: never - if: '$VERTEX_AI_CREDENTIALS == null' when: never - - if: '$VERTEX_AI_EMBEDDINGS == null' - when: never + - <<: *if-merge-request + changes: *ai-patterns + when: manual + allow_failure: true .rails:rules:as-if-foss-migration: rules: @@ -2746,7 +2740,7 @@ .setup:rules:verify-default-ruby: rules: - - <<: *if-merge-request-labels-run-in-non-default-ruby + - <<: *if-merge-request-labels-run-in-ruby3_2 .setup:rules:verify-tests-yml: rules: diff --git a/GITALY_SERVER_VERSION b/GITALY_SERVER_VERSION index 12afa173640..9f9ff6e5808 100644 --- a/GITALY_SERVER_VERSION +++ b/GITALY_SERVER_VERSION @@ -1 +1 @@ -5867f71c734a055e3af41e237ce19f992dd68120 +9bf28d2089501b82b40e2b9f6ad21cf80751f15f diff --git a/Gemfile b/Gemfile index a9d8b23ccff..a8dbdd3700f 100644 --- a/Gemfile +++ b/Gemfile @@ -537,7 +537,7 @@ gem 'kas-grpc', '~> 0.2.0' # rubocop:todo Gemfile/MissingFeatureCategory gem 'grpc', '~> 1.58.0' # rubocop:todo Gemfile/MissingFeatureCategory -gem 'google-protobuf', '~> 3.24', '>= 3.24.4' # rubocop:todo Gemfile/MissingFeatureCategory +gem 'google-protobuf', '~> 3.25' # rubocop:todo Gemfile/MissingFeatureCategory gem 'toml-rb', '~> 2.2.0' # rubocop:todo Gemfile/MissingFeatureCategory diff --git a/Gemfile.checksum b/Gemfile.checksum index 018f49074cf..b7ad54aef17 100644 --- a/Gemfile.checksum +++ b/Gemfile.checksum @@ -243,16 +243,16 @@ {"name":"google-cloud-errors","version":"1.3.0","platform":"ruby","checksum":"450b681e24c089a20721a01acc4408bb4a7b0df28c175aaab488da917480d64b"}, {"name":"google-cloud-profiler-v2","version":"0.4.0","platform":"ruby","checksum":"53fc2ab175d08f54233c644310d47798feac996220916815c4fb44c937b5d3e3"}, {"name":"google-cloud-storage","version":"1.44.0","platform":"ruby","checksum":"299a1e055c9277c8120f7c10d21d37e4d8c17c7b963350c0e0bff7e9d9a570ea"}, -{"name":"google-protobuf","version":"3.24.4","platform":"aarch64-linux","checksum":"d3e824753a9511e4c08439586069a636c23d9ca16a509f316a895353c11a1ac8"}, -{"name":"google-protobuf","version":"3.24.4","platform":"arm64-darwin","checksum":"e13b12a648668d99d8b71ffcf378bfd744885af11e983460677073b2c8e2a979"}, -{"name":"google-protobuf","version":"3.24.4","platform":"java","checksum":"657d67b5425afa0beb94e54df7d0a15da3daa45a500fc252e7550806669b47f1"}, -{"name":"google-protobuf","version":"3.24.4","platform":"ruby","checksum":"38a403ca2fd905d3ed7c20f8d2e4718af1be3eb99093d35d7021383f6e72f2ca"}, -{"name":"google-protobuf","version":"3.24.4","platform":"x64-mingw-ucrt","checksum":"fc0396dd9f45ea54d494097e0077ee8c0cc002f1c825f06ed40f4e3b4de6948c"}, -{"name":"google-protobuf","version":"3.24.4","platform":"x64-mingw32","checksum":"ba1b5cd5effa6c6a738eb2d2d0701e3d83d95b81842564b5feb9c42579722fc6"}, -{"name":"google-protobuf","version":"3.24.4","platform":"x86-linux","checksum":"f9cae6c878381da082eab1d3eceb84525c7d7413401e1a4a5ee179b66fdbebe0"}, -{"name":"google-protobuf","version":"3.24.4","platform":"x86-mingw32","checksum":"4cf31ca7d447a86200dfcb86f64ddd046c1f9c96dc537c9d74ab19e0c36a8f0b"}, -{"name":"google-protobuf","version":"3.24.4","platform":"x86_64-darwin","checksum":"44d541e980989f1aa007a3c5481ec93932b2e50cfa63c22427dd42460a5d2865"}, -{"name":"google-protobuf","version":"3.24.4","platform":"x86_64-linux","checksum":"68f65302fad9f47c88d38136fda0dec6078f3a2a79fb5bcccf62121fd8fcca50"}, +{"name":"google-protobuf","version":"3.25.0","platform":"aarch64-linux","checksum":"4455602758a60bd698a57c7210efc440523523fbe0c0c712624e57bb02c6c9d4"}, +{"name":"google-protobuf","version":"3.25.0","platform":"arm64-darwin","checksum":"c1ba0bb5504155f5bd0d11d649316ff52cef5b2a1e7ce876497815f98be3c5a6"}, +{"name":"google-protobuf","version":"3.25.0","platform":"java","checksum":"7006d8485d6c729c081a7eb8592d8c494fd8716863a7fb7ad7c76188eafc41a5"}, +{"name":"google-protobuf","version":"3.25.0","platform":"ruby","checksum":"b51632d900b633fbd6164784351bee93001dfd3f32bd18f6505fc97d64e1a1a1"}, +{"name":"google-protobuf","version":"3.25.0","platform":"x64-mingw-ucrt","checksum":"e4935e41e0f3c32fe96e496803de61d36273474ebb72ac7ee9db3a4ecb4b5cd6"}, +{"name":"google-protobuf","version":"3.25.0","platform":"x64-mingw32","checksum":"42b13346a1be8346e4d62a41ac7150f374ca5d254b3bb4bf3bc817de522ce969"}, +{"name":"google-protobuf","version":"3.25.0","platform":"x86-linux","checksum":"7f391788f013778ffae197a184481ff24265a977d1cb2270b13a5af1ba2f53d5"}, +{"name":"google-protobuf","version":"3.25.0","platform":"x86-mingw32","checksum":"2f42a5738af0a874b35b228a2df8de21a58fa265627cfd0fa57edaea160c1087"}, +{"name":"google-protobuf","version":"3.25.0","platform":"x86_64-darwin","checksum":"c3d4a144d8f4d61193ab1a4c5d52e2d40562ba13e07eeca1fca34bc59212c352"}, +{"name":"google-protobuf","version":"3.25.0","platform":"x86_64-linux","checksum":"c6a76175c921b300ee62b21d36e8a9c07f0a4967a17be0671a83c57d7bf9bd0f"}, {"name":"googleapis-common-protos","version":"1.4.0","platform":"ruby","checksum":"da2380fb5ab1563580816c74e8d684ac17512c3654c829a3ee84f6d6139de382"}, {"name":"googleapis-common-protos-types","version":"1.5.0","platform":"ruby","checksum":"5769cf7376abc86ef7f5897a4aaca1d5c5a3c49ddabeddd2c251fcf8155f858b"}, {"name":"googleauth","version":"1.3.0","platform":"ruby","checksum":"51dd7362353cf1e90a2d01e1fb94321ae3926c776d4dc4a79db65230217ffcc2"}, diff --git a/Gemfile.lock b/Gemfile.lock index 2dfb73aa234..dc7495b058b 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -766,7 +766,7 @@ GEM google-cloud-core (~> 1.6) googleauth (>= 0.16.2, < 2.a) mini_mime (~> 1.0) - google-protobuf (3.24.4) + google-protobuf (3.25.0) googleapis-common-protos (1.4.0) google-protobuf (~> 3.14) googleapis-common-protos-types (~> 1.2) @@ -1861,7 +1861,7 @@ DEPENDENCIES google-apis-serviceusage_v1 (~> 0.28.0) google-apis-sqladmin_v1beta4 (~> 0.41.0) google-cloud-storage (~> 1.44.0) - google-protobuf (~> 3.24, >= 3.24.4) + google-protobuf (~> 3.25) gpgme (~> 2.0.23) grape (~> 1.7.1) grape-entity (~> 0.10.0) diff --git a/app/assets/javascripts/access_tokens/components/access_token_table_app.vue b/app/assets/javascripts/access_tokens/components/access_token_table_app.vue index 3b71e39d69b..9a7296b6b1f 100644 --- a/app/assets/javascripts/access_tokens/components/access_token_table_app.vue +++ b/app/assets/javascripts/access_tokens/components/access_token_table_app.vue @@ -158,7 +158,7 @@ export default { :aria-label="$options.i18n.revokeButton" :data-confirm="modalMessage(name)" data-confirm-btn-variant="danger" - data-testid="revoke-button" + data-qa-selector="revoke_button" data-method="put" :href="revokePath" icon="remove" diff --git a/app/assets/javascripts/access_tokens/components/expires_at_field.vue b/app/assets/javascripts/access_tokens/components/expires_at_field.vue index 65206670a3c..38501d63d3a 100644 --- a/app/assets/javascripts/access_tokens/components/expires_at_field.vue +++ b/app/assets/javascripts/access_tokens/components/expires_at_field.vue @@ -68,7 +68,7 @@ export default { :input-name="inputAttrs.name" :input-id="inputAttrs.id" :placeholder="inputAttrs.placeholder" - data-testid="expiry-date-field" + data-qa-selector="expiry_date_field" />