Add latest changes from gitlab-org/gitlab@master

This commit is contained in:
GitLab Bot 2025-06-25 15:10:05 +00:00
parent 2b2854cf44
commit 8f9ac1e65a
126 changed files with 1137 additions and 728 deletions

View File

@ -271,7 +271,6 @@ export default {
'ee/app/assets/javascripts/dependencies/components/dependency_project_count.vue',
'ee/app/assets/javascripts/environments_dashboard/components/dashboard/dashboard.vue',
'ee/app/assets/javascripts/environments_dashboard/components/dashboard/environment.vue',
'ee/app/assets/javascripts/external_issues_show/components/note.vue',
'ee/app/assets/javascripts/geo_sites/components/header/geo_site_last_updated.vue',
'ee/app/assets/javascripts/oncall_schedules/components/add_edit_schedule_form.vue',
'ee/app/assets/javascripts/oncall_schedules/components/oncall_schedule.vue',

View File

@ -11,8 +11,11 @@ Capybara/VisibilityMatcher:
- 'ee/spec/views/registrations/welcome/show.html.haml_spec.rb'
- 'spec/features/dashboard/merge_requests_spec.rb'
- 'spec/features/groups/group_settings_spec.rb'
- 'spec/features/issuables/task_lists_spec.rb'
- 'spec/features/issues/design_management/user_views_designs_with_svg_xss_spec.rb'
- 'spec/features/issues/new/user_creates_issue_spec.rb'
- 'spec/features/issues/user_creates_branch_and_merge_request_spec.rb'
- 'spec/features/issues/user_creates_issue_spec.rb'
- 'spec/features/issues/user_uploads_file_to_note_spec.rb'
- 'spec/features/merge_request/user_posts_notes_spec.rb'
- 'spec/features/merge_request/user_resolves_diff_notes_and_discussions_resolve_spec.rb'
- 'spec/features/merge_request/user_resolves_outdated_diff_discussions_spec.rb'
@ -24,7 +27,6 @@ Capybara/VisibilityMatcher:
- 'spec/features/projects/commit/comments/user_adds_comment_spec.rb'
- 'spec/features/projects/commits/multi_view_diff_spec.rb'
- 'spec/features/projects/commits/user_browses_commits_spec.rb'
- 'spec/features/projects/issues/design_management/user_views_designs_with_svg_xss_spec.rb'
- 'spec/features/projects/jobs_spec.rb'
- 'spec/features/projects/network_graph_spec.rb'
- 'spec/features/projects/settings/lfs_settings_spec.rb'
@ -35,8 +37,6 @@ Capybara/VisibilityMatcher:
- 'spec/features/projects/user_sees_user_popover_spec.rb'
- 'spec/features/search/user_searches_for_commits_spec.rb'
- 'spec/features/snippets/notes_on_personal_snippets_spec.rb'
- 'spec/features/task_lists_spec.rb'
- 'spec/features/uploads/user_uploads_file_to_note_spec.rb'
- 'spec/features/users/email_verification_on_login_spec.rb'
- 'spec/features/users/overview_spec.rb'
- 'spec/features/users/user_browses_projects_on_user_page_spec.rb'

View File

@ -15,7 +15,7 @@ FactoryBot/ExcessiveCreateList:
- 'spec/controllers/projects/hooks_controller_spec.rb'
- 'spec/docs_screenshots/container_registry_docs.rb'
- 'spec/features/boards/boards_spec.rb'
- 'spec/features/issues/csv_spec.rb'
- 'spec/features/issues/list/csv_spec.rb'
- 'spec/features/issues/user_edits_issue_spec.rb'
- 'spec/features/issues/user_scrolls_to_deeplinked_note_spec.rb'
- 'spec/features/projects/container_registry_spec.rb'

View File

@ -1,6 +0,0 @@
---
# Cop supports --autocorrect.
InternalAffairs/ProcessedSourceBufferName:
Details: grace period
Exclude:
- 'rubocop/cop/rspec/top_level_describe_path.rb'

View File

@ -85,8 +85,8 @@ Layout/ArrayAlignment:
- 'spec/controllers/projects/pipeline_schedules_controller_spec.rb'
- 'spec/factories/ci/builds.rb'
- 'spec/features/issuables/sorting_list_spec.rb'
- 'spec/features/issues/user_uploads_file_to_note_spec.rb'
- 'spec/features/oauth_login_spec.rb'
- 'spec/features/uploads/user_uploads_file_to_note_spec.rb'
- 'spec/finders/ci/pipelines_finder_spec.rb'
- 'spec/finders/ci/runners_finder_spec.rb'
- 'spec/finders/groups_finder_spec.rb'

View File

@ -94,13 +94,13 @@ Layout/LineContinuationSpacing:
- 'rubocop/cop/redis_queue_usage.rb'
- 'spec/controllers/concerns/controller_with_cross_project_access_check_spec.rb'
- 'spec/features/issues/create_issue_for_single_discussion_in_merge_request_spec.rb'
- 'spec/features/issues/viewing_issues_with_external_authorization_enabled_spec.rb'
- 'spec/features/projects/files/user_browses_files_spec.rb'
- 'spec/features/projects/files/user_creates_directory_spec.rb'
- 'spec/features/projects/files/user_creates_files_spec.rb'
- 'spec/features/projects/files/user_deletes_files_spec.rb'
- 'spec/features/projects/files/user_edits_files_spec.rb'
- 'spec/features/projects/files/user_replaces_files_spec.rb'
- 'spec/features/projects/issues/viewing_issues_with_external_authorization_enabled_spec.rb'
- 'spec/features/users/email_verification_on_login_spec.rb'
- 'spec/features/users/login_spec.rb'
- 'spec/finders/groups/projects_requiring_authorizations_refresh/on_direct_membership_finder_spec.rb'

View File

@ -435,6 +435,7 @@ Layout/LineEndStringConcatenationIndentation:
- 'spec/features/groups/show_spec.rb'
- 'spec/features/invites_spec.rb'
- 'spec/features/issues/create_issue_for_single_discussion_in_merge_request_spec.rb'
- 'spec/features/issues/viewing_issues_with_external_authorization_enabled_spec.rb'
- 'spec/features/merge_request/user_sees_merge_widget_spec.rb'
- 'spec/features/projects/files/user_browses_files_spec.rb'
- 'spec/features/projects/files/user_creates_directory_spec.rb'
@ -442,7 +443,6 @@ Layout/LineEndStringConcatenationIndentation:
- 'spec/features/projects/files/user_deletes_files_spec.rb'
- 'spec/features/projects/files/user_edits_files_spec.rb'
- 'spec/features/projects/files/user_replaces_files_spec.rb'
- 'spec/features/projects/issues/viewing_issues_with_external_authorization_enabled_spec.rb'
- 'spec/features/projects/jobs_spec.rb'
- 'spec/features/projects/members/import_project_members_spec.rb'
- 'spec/features/projects/pipelines/pipeline_spec.rb'

View File

@ -970,7 +970,7 @@ Layout/LineLength:
- 'ee/spec/features/groups/security/compliance_dashboards_spec.rb'
- 'ee/spec/features/groups/settings/domain_verification_spec.rb'
- 'ee/spec/features/integrations/jira/jira_issues_list_spec.rb'
- 'ee/spec/features/issues/filtered_search/filter_issues_weight_spec.rb'
- 'ee/spec/features/issues/list/filtered_search/filter_issues_weight_spec.rb'
- 'ee/spec/features/labels_hierarchy_spec.rb'
- 'ee/spec/features/merge_request/user_approves_spec.rb'
- 'ee/spec/features/merge_request/user_approves_with_password_spec.rb'
@ -2467,7 +2467,6 @@ Layout/LineLength:
- 'spec/factories/notes.rb'
- 'spec/factories/projects.rb'
- 'spec/factories/usage_data.rb'
- 'spec/features/action_cable_logging_spec.rb'
- 'spec/features/admin/admin_abuse_reports_spec.rb'
- 'spec/features/admin/admin_mode/login_spec.rb'
- 'spec/features/admin/admin_sees_background_migrations_spec.rb'
@ -2515,26 +2514,31 @@ Layout/LineLength:
- 'spec/features/groups_spec.rb'
- 'spec/features/ide/static_object_external_storage_csp_spec.rb'
- 'spec/features/issuables/issuable_list_spec.rb'
- 'spec/features/issuables/issuable_templates_spec.rb'
- 'spec/features/issuables/markdown_references/internal_references_spec.rb'
- 'spec/features/issuables/markdown_references/jira_spec.rb'
- 'spec/features/issuables/task_lists_spec.rb'
- 'spec/features/issues/action_cable_logging_spec.rb'
- 'spec/features/issues/create_issue_for_discussions_in_merge_request_spec.rb'
- 'spec/features/issues/create_issue_for_single_discussion_in_merge_request_spec.rb'
- 'spec/features/issues/csv_spec.rb'
- 'spec/features/issues/filtered_search/filter_issues_spec.rb'
- 'spec/features/issues/filtered_search/recent_searches_spec.rb'
- 'spec/features/issues/form_spec.rb'
- 'spec/features/issues/design_management/user_uploads_designs_spec.rb'
- 'spec/features/issues/gfm_autocomplete_spec.rb'
- 'spec/features/issues/issue_detail_spec.rb'
- 'spec/features/issues/labels_hierarchy_spec.rb'
- 'spec/features/issues/list/csv_spec.rb'
- 'spec/features/issues/list/filtered_search/filter_issues_spec.rb'
- 'spec/features/issues/list/filtered_search/recent_searches_spec.rb'
- 'spec/features/issues/new/form_spec.rb'
- 'spec/features/issues/new/spam_akismet_issue_creation_spec.rb'
- 'spec/features/issues/new/user_creates_issue_spec.rb'
- 'spec/features/issues/note_polling_spec.rb'
- 'spec/features/issues/notes_on_issues_spec.rb'
- 'spec/features/issues/service_desk_spec.rb'
- 'spec/features/issues/spam_akismet_issue_creation_spec.rb'
- 'spec/features/issues/user_creates_branch_and_merge_request_spec.rb'
- 'spec/features/issues/user_creates_issue_spec.rb'
- 'spec/features/issues/user_edits_issue_spec.rb'
- 'spec/features/issues/user_interacts_with_awards_spec.rb'
- 'spec/features/issues/user_views_issue_spec.rb'
- 'spec/features/labels_hierarchy_spec.rb'
- 'spec/features/issues/viewing_issues_with_external_authorization_enabled_spec.rb'
- 'spec/features/markdown/copy_as_gfm_spec.rb'
- 'spec/features/markdown/gitlab_flavored_markdown_spec.rb'
- 'spec/features/merge_request/batch_comments_spec.rb'
@ -2604,9 +2608,6 @@ Layout/LineLength:
- 'spec/features/projects/integrations/user_activates_issue_tracker_spec.rb'
- 'spec/features/projects/integrations/user_activates_jira_spec.rb'
- 'spec/features/projects/integrations/user_uses_inherited_settings_spec.rb'
- 'spec/features/projects/issuable_templates_spec.rb'
- 'spec/features/projects/issues/design_management/user_uploads_designs_spec.rb'
- 'spec/features/projects/issues/viewing_issues_with_external_authorization_enabled_spec.rb'
- 'spec/features/projects/jobs/permissions_spec.rb'
- 'spec/features/projects/jobs_spec.rb'
- 'spec/features/projects/labels/user_edits_labels_spec.rb'
@ -2643,7 +2644,6 @@ Layout/LineLength:
- 'spec/features/security/project/snippet/internal_access_spec.rb'
- 'spec/features/security/project/snippet/public_access_spec.rb'
- 'spec/features/signed_commits_spec.rb'
- 'spec/features/task_lists_spec.rb'
- 'spec/features/unsubscribe_links_spec.rb'
- 'spec/features/user_settings/active_sessions_spec.rb'
- 'spec/features/users/login_spec.rb'

View File

@ -43,8 +43,8 @@ Naming/HeredocDelimiterNaming:
- 'rubocop/cop/gitlab/predicate_memoization.rb'
- 'spec/controllers/projects/pipelines_controller_spec.rb'
- 'spec/deprecation_toolkit_env.rb'
- 'spec/features/issuables/task_lists_spec.rb'
- 'spec/features/projects/commit/user_comments_on_commit_spec.rb'
- 'spec/features/task_lists_spec.rb'
- 'spec/initializers/100_patch_omniauth_oauth2_spec.rb'
- 'spec/initializers/rack_multipart_patch_spec.rb'
- 'spec/initializers/validate_database_config_spec.rb'

View File

@ -46,7 +46,7 @@ Rails/Date:
- 'ee/spec/features/groups/discovers/hand_raise_lead_spec.rb'
- 'ee/spec/features/groups/group_roadmap_spec.rb'
- 'ee/spec/features/groups/iterations/user_views_iteration_spec.rb'
- 'ee/spec/features/issues/filtered_search/filter_issues_by_iteration_spec.rb'
- 'ee/spec/features/issues/list/filtered_search/filter_issues_by_iteration_spec.rb'
- 'ee/spec/features/learn_gitlab_spec.rb'
- 'ee/spec/features/projects/audit_events_spec.rb'
- 'ee/spec/features/projects/milestones/milestone_spec.rb'
@ -128,7 +128,7 @@ Rails/Date:
- 'spec/features/groups/members/sort_members_spec.rb'
- 'spec/features/groups/milestone_spec.rb'
- 'spec/features/issues/issue_sidebar_spec.rb'
- 'spec/features/issues/user_creates_issue_spec.rb'
- 'spec/features/issues/new/user_creates_issue_spec.rb'
- 'spec/features/issues/user_edits_issue_spec.rb'
- 'spec/features/milestones/user_edits_milestone_spec.rb'
- 'spec/features/projects/members/sorting_spec.rb'

View File

@ -70,12 +70,13 @@ Rails/FilePath:
- 'spec/features/groups/group_settings_spec.rb'
- 'spec/features/groups/import_export/import_file_spec.rb'
- 'spec/features/help_pages_spec.rb'
- 'spec/features/issues/user_creates_issue_spec.rb'
- 'spec/features/issues/design_management/user_uploads_designs_spec.rb'
- 'spec/features/issues/design_management/user_views_designs_with_svg_xss_spec.rb'
- 'spec/features/issues/new/user_creates_issue_spec.rb'
- 'spec/features/issues/user_uploads_file_to_note_spec.rb'
- 'spec/features/profiles/user_edit_profile_spec.rb'
- 'spec/features/projects/files/user_replaces_files_spec.rb'
- 'spec/features/projects/import_export/import_file_spec.rb'
- 'spec/features/projects/issues/design_management/user_uploads_designs_spec.rb'
- 'spec/features/projects/issues/design_management/user_views_designs_with_svg_xss_spec.rb'
- 'spec/features/projects/settings/repository_settings_spec.rb'
- 'spec/features/projects/settings/user_changes_avatar_spec.rb'
- 'spec/features/projects/snippets/create_snippet_spec.rb'
@ -83,7 +84,6 @@ Rails/FilePath:
- 'spec/features/snippets/user_edits_snippet_spec.rb'
- 'spec/features/uploads/user_uploads_avatar_to_group_spec.rb'
- 'spec/features/uploads/user_uploads_avatar_to_profile_spec.rb'
- 'spec/features/uploads/user_uploads_file_to_note_spec.rb'
- 'spec/helpers/blob_helper_spec.rb'
- 'spec/helpers/startupjs_helper_spec.rb'
- 'spec/lib/gitlab/database/schema_migrations/context_spec.rb'

View File

@ -123,7 +123,7 @@ Rails/Pluck:
- 'spec/controllers/projects/releases_controller_spec.rb'
- 'spec/controllers/projects/starrers_controller_spec.rb'
- 'spec/db/schema_spec.rb'
- 'spec/features/issues/csv_spec.rb'
- 'spec/features/issues/list/csv_spec.rb'
- 'spec/finders/license_template_finder_spec.rb'
- 'spec/graphql/resolvers/ci/test_suite_resolver_spec.rb'
- 'spec/graphql/resolvers/concerns/looks_ahead_spec.rb'

View File

@ -2,6 +2,7 @@
# Cop supports --autocorrect.
RSpec/AnyInstanceOf:
Exclude:
- 'ee/spec/features/issues/new/form_spec.rb'
- 'ee/spec/features/projects/new_project_spec.rb'
- 'ee/spec/features/security/project/internal_access_spec.rb'
- 'ee/spec/features/security/project/private_access_spec.rb'

View File

@ -11,7 +11,7 @@ RSpec/AvoidConditionalStatements:
- 'ee/spec/features/groups/iterations/user_views_iteration_spec.rb'
- 'ee/spec/features/groups/navbar_spec.rb'
- 'ee/spec/features/incidents/incident_details_spec.rb'
- 'ee/spec/features/issues/user_sees_empty_state_spec.rb'
- 'ee/spec/features/issues/list/user_sees_empty_state_spec.rb'
- 'ee/spec/features/labels_hierarchy_spec.rb'
- 'ee/spec/features/projects/merge_requests/user_approves_merge_request_spec.rb'
- 'ee/spec/features/projects/settings/issues_settings_spec.rb'
@ -29,10 +29,10 @@ RSpec/AvoidConditionalStatements:
- 'spec/features/issuables/issuable_list_spec.rb'
- 'spec/features/issuables/markdown_references/jira_spec.rb'
- 'spec/features/issues/create_issue_for_discussions_in_merge_request_spec.rb'
- 'spec/features/issues/user_bulk_edits_issues_labels_spec.rb'
- 'spec/features/issues/labels_hierarchy_spec.rb'
- 'spec/features/issues/list/user_bulk_edits_issues_labels_spec.rb'
- 'spec/features/issues/user_creates_branch_and_merge_request_spec.rb'
- 'spec/features/issues/user_interacts_with_awards_spec.rb'
- 'spec/features/labels_hierarchy_spec.rb'
- 'spec/features/markdown/keyboard_shortcuts_spec.rb'
- 'spec/features/merge_request/batch_comments_spec.rb'
- 'spec/features/merge_request/user_posts_diff_notes_spec.rb'

View File

@ -24,7 +24,7 @@ RSpec/BeEq:
- 'ee/spec/features/admin/admin_emails_spec.rb'
- 'ee/spec/features/admin/users/users_spec.rb'
- 'ee/spec/features/groups/settings/reporting_spec.rb'
- 'ee/spec/features/issues/user_bulk_edits_issues_spec.rb'
- 'ee/spec/features/issues/list/user_bulk_edits_issues_spec.rb'
- 'ee/spec/features/projects/new_project_spec.rb'
- 'ee/spec/features/projects/quality/test_case_show_spec.rb'
- 'ee/spec/features/projects/settings/ee/repository_mirrors_settings_spec.rb'

View File

@ -90,14 +90,15 @@ RSpec/BeforeAllRoleAssignment:
- 'ee/spec/features/groups_spec.rb'
- 'ee/spec/features/incidents/user_uses_quick_actions_spec.rb'
- 'ee/spec/features/issues/epic_in_issue_sidebar_spec.rb'
- 'ee/spec/features/issues/filtered_search/filter_issues_by_health_spec.rb'
- 'ee/spec/features/issues/filtered_search/filter_issues_epic_spec.rb'
- 'ee/spec/features/issues/filtered_search/filter_issues_weight_spec.rb'
- 'ee/spec/features/issues/gfm_autocomplete_ee_spec.rb'
- 'ee/spec/features/issues/issue_sidebar_spec.rb'
- 'ee/spec/features/issues/list/filtered_search/filter_issues_by_health_spec.rb'
- 'ee/spec/features/issues/list/filtered_search/filter_issues_epic_spec.rb'
- 'ee/spec/features/issues/list/filtered_search/filter_issues_weight_spec.rb'
- 'ee/spec/features/issues/list/user_bulk_edits_issues_spec.rb'
- 'ee/spec/features/issues/list/user_sees_empty_state_spec.rb'
- 'ee/spec/features/issues/new/user_creates_issue_spec.rb'
- 'ee/spec/features/issues/related_issues_spec.rb'
- 'ee/spec/features/issues/user_bulk_edits_issues_spec.rb'
- 'ee/spec/features/issues/user_sees_empty_state_spec.rb'
- 'ee/spec/features/issues/user_uses_quick_actions_spec.rb'
- 'ee/spec/features/merge_request/user_creates_merge_request_spec.rb'
- 'ee/spec/features/merge_request/user_edits_approval_rules_mr_spec.rb'
@ -110,7 +111,6 @@ RSpec/BeforeAllRoleAssignment:
- 'ee/spec/features/oncall_schedules/user_creates_schedule_spec.rb'
- 'ee/spec/features/projects/analytics/cycle_analytics_spec.rb'
- 'ee/spec/features/projects/audit_events_spec.rb'
- 'ee/spec/features/projects/issues/user_creates_issue_spec.rb'
- 'ee/spec/features/projects/iterations/iteration_cadences_list_spec.rb'
- 'ee/spec/features/projects/members/manage_members_spec.rb'
- 'ee/spec/features/projects/navbar_spec.rb'
@ -706,23 +706,24 @@ RSpec/BeforeAllRoleAssignment:
- 'spec/features/incidents/user_uses_quick_actions_spec.rb'
- 'spec/features/integrations_settings_spec.rb'
- 'spec/features/invites_spec.rb'
- 'spec/features/issues/filtered_search/dropdown_assignee_spec.rb'
- 'spec/features/issues/filtered_search/dropdown_author_spec.rb'
- 'spec/features/issues/filtered_search/dropdown_base_spec.rb'
- 'spec/features/issues/filtered_search/dropdown_emoji_spec.rb'
- 'spec/features/issues/filtered_search/dropdown_hint_spec.rb'
- 'spec/features/issues/filtered_search/dropdown_label_spec.rb'
- 'spec/features/issues/filtered_search/dropdown_milestone_spec.rb'
- 'spec/features/issues/filtered_search/dropdown_release_spec.rb'
- 'spec/features/issues/filtered_search/search_bar_spec.rb'
- 'spec/features/issues/email_participants_spec.rb'
- 'spec/features/issues/incident_issue_spec.rb'
- 'spec/features/issues/issue_detail_spec.rb'
- 'spec/features/issues/issue_header_spec.rb'
- 'spec/features/issues/issue_sidebar_spec.rb'
- 'spec/features/issues/issue_state_spec.rb'
- 'spec/features/issues/list/filtered_search/dropdown_assignee_spec.rb'
- 'spec/features/issues/list/filtered_search/dropdown_author_spec.rb'
- 'spec/features/issues/list/filtered_search/dropdown_base_spec.rb'
- 'spec/features/issues/list/filtered_search/dropdown_emoji_spec.rb'
- 'spec/features/issues/list/filtered_search/dropdown_hint_spec.rb'
- 'spec/features/issues/list/filtered_search/dropdown_label_spec.rb'
- 'spec/features/issues/list/filtered_search/dropdown_milestone_spec.rb'
- 'spec/features/issues/list/filtered_search/dropdown_release_spec.rb'
- 'spec/features/issues/list/filtered_search/search_bar_spec.rb'
- 'spec/features/issues/list/user_creates_issue_by_email_spec.rb'
- 'spec/features/issues/new/user_creates_issue_spec.rb'
- 'spec/features/issues/user_comments_on_issue_spec.rb'
- 'spec/features/issues/user_creates_issue_by_email_spec.rb'
- 'spec/features/issues/user_creates_issue_spec.rb'
- 'spec/features/issues/user_edits_issue_spec.rb'
- 'spec/features/issues/user_resets_their_incoming_email_token_spec.rb'
- 'spec/features/markdown/keyboard_shortcuts_spec.rb'
@ -753,7 +754,6 @@ RSpec/BeforeAllRoleAssignment:
- 'spec/features/projects/feature_flag_user_lists/user_edits_feature_flag_user_list_spec.rb'
- 'spec/features/projects/feature_flag_user_lists/user_sees_feature_flag_user_list_details_spec.rb'
- 'spec/features/projects/infrastructure_registry_spec.rb'
- 'spec/features/projects/issues/email_participants_spec.rb'
- 'spec/features/projects/jobs/permissions_spec.rb'
- 'spec/features/projects/labels/user_creates_labels_spec.rb'
- 'spec/features/projects/labels/user_edits_labels_spec.rb'

View File

@ -100,10 +100,10 @@ RSpec/ContextWording:
- 'ee/spec/features/groups/security/compliance_dashboards_spec.rb'
- 'ee/spec/features/groups_spec.rb'
- 'ee/spec/features/issues/epic_in_issue_sidebar_spec.rb'
- 'ee/spec/features/issues/filtered_search/filter_issues_by_iteration_spec.rb'
- 'ee/spec/features/issues/form_spec.rb'
- 'ee/spec/features/issues/gfm_autocomplete_ee_spec.rb'
- 'ee/spec/features/issues/user_bulk_edits_issues_spec.rb'
- 'ee/spec/features/issues/list/filtered_search/filter_issues_by_iteration_spec.rb'
- 'ee/spec/features/issues/list/user_bulk_edits_issues_spec.rb'
- 'ee/spec/features/issues/new/form_spec.rb'
- 'ee/spec/features/labels_hierarchy_spec.rb'
- 'ee/spec/features/markdown/markdown_spec.rb'
- 'ee/spec/features/merge_request/merge_request_widget_blocking_mrs_spec.rb'
@ -972,34 +972,38 @@ RSpec/ContextWording:
- 'spec/features/ics/project_issues_spec.rb'
- 'spec/features/ide/static_object_external_storage_csp_spec.rb'
- 'spec/features/incidents/user_creates_new_incident_spec.rb'
- 'spec/features/issuables/issuable_templates_spec.rb'
- 'spec/features/issuables/markdown_references/internal_references_spec.rb'
- 'spec/features/issuables/sorting_list_spec.rb'
- 'spec/features/issuables/user_sees_sidebar_spec.rb'
- 'spec/features/issues/create_issue_for_discussions_in_merge_request_spec.rb'
- 'spec/features/issues/create_issue_for_single_discussion_in_merge_request_spec.rb'
- 'spec/features/issues/filtered_search/dropdown_assignee_spec.rb'
- 'spec/features/issues/filtered_search/filter_issues_spec.rb'
- 'spec/features/issues/form_spec.rb'
- 'spec/features/issues/design_management/user_links_to_designs_in_issue_spec.rb'
- 'spec/features/issues/design_management/user_views_designs_spec.rb'
- 'spec/features/issues/gfm_autocomplete_spec.rb'
- 'spec/features/issues/issue_detail_spec.rb'
- 'spec/features/issues/issue_header_spec.rb'
- 'spec/features/issues/keyboard_shortcut_spec.rb'
- 'spec/features/issues/labels_hierarchy_spec.rb'
- 'spec/features/issues/list/filtered_search/dropdown_assignee_spec.rb'
- 'spec/features/issues/list/filtered_search/filter_issues_spec.rb'
- 'spec/features/issues/list/user_bulk_edits_issues_labels_spec.rb'
- 'spec/features/issues/list/user_bulk_edits_issues_spec.rb'
- 'spec/features/issues/list/user_views_issues_spec.rb'
- 'spec/features/issues/move_spec.rb'
- 'spec/features/issues/new/form_spec.rb'
- 'spec/features/issues/new/spam_akismet_issue_creation_spec.rb'
- 'spec/features/issues/new/user_creates_issue_spec.rb'
- 'spec/features/issues/note_polling_spec.rb'
- 'spec/features/issues/notes_on_issues_spec.rb'
- 'spec/features/issues/related_issues_spec.rb'
- 'spec/features/issues/service_desk_spec.rb'
- 'spec/features/issues/spam_akismet_issue_creation_spec.rb'
- 'spec/features/issues/user_bulk_edits_issues_labels_spec.rb'
- 'spec/features/issues/user_bulk_edits_issues_spec.rb'
- 'spec/features/issues/user_creates_confidential_merge_request_spec.rb'
- 'spec/features/issues/user_creates_issue_spec.rb'
- 'spec/features/issues/user_edits_issue_spec.rb'
- 'spec/features/issues/user_interacts_with_awards_spec.rb'
- 'spec/features/issues/user_toggles_subscription_spec.rb'
- 'spec/features/issues/user_uploads_file_to_note_spec.rb'
- 'spec/features/issues/user_uses_quick_actions_spec.rb'
- 'spec/features/issues/user_views_issues_spec.rb'
- 'spec/features/labels_hierarchy_spec.rb'
- 'spec/features/markdown/copy_as_gfm_spec.rb'
- 'spec/features/markdown/keyboard_shortcuts_spec.rb'
- 'spec/features/markdown/markdown_spec.rb'
@ -1064,9 +1068,6 @@ RSpec/ContextWording:
- 'spec/features/projects/infrastructure_registry_spec.rb'
- 'spec/features/projects/integrations/disable_triggers_spec.rb'
- 'spec/features/projects/integrations/user_activates_mattermost_slash_command_spec.rb'
- 'spec/features/projects/issuable_templates_spec.rb'
- 'spec/features/projects/issues/design_management/user_links_to_designs_in_issue_spec.rb'
- 'spec/features/projects/issues/design_management/user_views_designs_spec.rb'
- 'spec/features/projects/jobs/user_browses_job_spec.rb'
- 'spec/features/projects/jobs/user_browses_jobs_spec.rb'
- 'spec/features/projects/jobs_spec.rb'
@ -1115,7 +1116,6 @@ RSpec/ContextWording:
- 'spec/features/tags/developer_creates_tag_spec.rb'
- 'spec/features/tags/developer_deletes_tag_spec.rb'
- 'spec/features/tags/maintainer_deletes_protected_tag_spec.rb'
- 'spec/features/uploads/user_uploads_file_to_note_spec.rb'
- 'spec/features/user_can_display_performance_bar_spec.rb'
- 'spec/features/user_opens_link_to_comment_spec.rb'
- 'spec/features/users/login_spec.rb'

View File

@ -24,7 +24,7 @@ RSpec/Dialect:
- 'spec/benchmarks/banzai_benchmark.rb'
- 'spec/controllers/projects/pipelines_controller_spec.rb'
- 'spec/factories/projects/ci_feature_usages.rb'
- 'spec/features/issues/user_bulk_edits_issues_labels_spec.rb'
- 'spec/features/issues/list/user_bulk_edits_issues_labels_spec.rb'
- 'spec/features/projects/labels/subscription_spec.rb'
- 'spec/features/projects/labels/update_prioritization_spec.rb'
- 'spec/lib/feature_spec.rb'

View File

@ -233,7 +233,7 @@ RSpec/ExampleWithoutDescription:
- 'spec/features/commits_spec.rb'
- 'spec/features/explore/groups_spec.rb'
- 'spec/features/groups/settings/group_badges_spec.rb'
- 'spec/features/issues/user_bulk_edits_issues_labels_spec.rb'
- 'spec/features/issues/list/user_bulk_edits_issues_labels_spec.rb'
- 'spec/features/merge_request/user_sees_versions_spec.rb'
- 'spec/features/projects/jobs_spec.rb'
- 'spec/features/projects/settings/project_badges_spec.rb'

View File

@ -26,7 +26,7 @@ RSpec/ExampleWording:
- 'qa/spec/specs/helpers/context_selector_spec.rb'
- 'spec/controllers/projects/milestones_controller_spec.rb'
- 'spec/features/groups/merge_requests_spec.rb'
- 'spec/features/issues/user_creates_issue_spec.rb'
- 'spec/features/issues/new/user_creates_issue_spec.rb'
- 'spec/features/issues/user_edits_issue_spec.rb'
- 'spec/features/profiles/user_edit_profile_spec.rb'
- 'spec/finders/user_group_notification_settings_finder_spec.rb'

View File

@ -98,13 +98,13 @@ RSpec/ExpectInHook:
- 'spec/features/file_uploads/maven_package_spec.rb'
- 'spec/features/groups/container_registry_spec.rb'
- 'spec/features/groups/group_settings_spec.rb'
- 'spec/features/issuables/issuable_templates_spec.rb'
- 'spec/features/markdown/markdown_spec.rb'
- 'spec/features/merge_request/user_sees_versions_spec.rb'
- 'spec/features/oauth_login_spec.rb'
- 'spec/features/projects/container_registry_spec.rb'
- 'spec/features/projects/feature_flags/user_deletes_feature_flag_spec.rb'
- 'spec/features/projects/files/user_creates_files_spec.rb'
- 'spec/features/projects/issuable_templates_spec.rb'
- 'spec/features/projects/show/user_sees_git_instructions_spec.rb'
- 'spec/features/projects/show/user_sees_setup_shortcut_buttons_spec.rb'
- 'spec/features/protected_branches_spec.rb'

View File

@ -1168,8 +1168,8 @@ RSpec/FeatureCategory:
- 'spec/docs_screenshots/container_registry_docs.rb'
- 'spec/docs_screenshots/wiki_docs.rb'
- 'spec/features/admin/dashboard_spec.rb'
- 'spec/features/issues/viewing_issues_with_external_authorization_enabled_spec.rb'
- 'spec/features/projects/feature_flags/user_creates_feature_flag_spec.rb'
- 'spec/features/projects/issues/viewing_issues_with_external_authorization_enabled_spec.rb'
- 'spec/features/projects/members/anonymous_user_sees_members_spec.rb'
- 'spec/features/reportable_note/commit_spec.rb'
- 'spec/features/user_sorts_things_spec.rb'

View File

@ -39,7 +39,7 @@ RSpec/InstanceVariable:
- 'spec/controllers/passwords_controller_spec.rb'
- 'spec/controllers/profiles/avatars_controller_spec.rb'
- 'spec/controllers/sessions_controller_spec.rb'
- 'spec/features/issues/user_filters_issues_spec.rb'
- 'spec/features/issues/list/user_filters_issues_spec.rb'
- 'spec/features/markdown/copy_as_gfm_spec.rb'
- 'spec/features/markdown/gitlab_flavored_markdown_spec.rb'
- 'spec/features/markdown/keyboard_shortcuts_spec.rb'

View File

@ -15,7 +15,7 @@ RSpec/RepeatedExampleGroupBody:
- 'spec/controllers/groups/registry/repositories_controller_spec.rb'
- 'spec/controllers/projects/graphs_controller_spec.rb'
- 'spec/controllers/projects/registry/repositories_controller_spec.rb'
- 'spec/features/issues/spam_akismet_issue_creation_spec.rb'
- 'spec/features/issues/new/spam_akismet_issue_creation_spec.rb'
- 'spec/features/merge_request/user_sees_closing_issues_message_spec.rb'
- 'spec/features/projects/commit/cherry_pick_spec.rb'
- 'spec/features/security/project/private_access_spec.rb'

View File

@ -65,7 +65,7 @@ RSpec/ScatteredLet:
- 'spec/controllers/projects/jobs_controller_spec.rb'
- 'spec/features/boards/user_visits_board_spec.rb'
- 'spec/features/groups/dependency_proxy_for_containers_spec.rb'
- 'spec/features/issues/user_filters_issues_spec.rb'
- 'spec/features/issues/list/user_filters_issues_spec.rb'
- 'spec/finders/concerns/finder_with_cross_project_access_spec.rb'
- 'spec/finders/group_projects_finder_spec.rb'
- 'spec/finders/groups/user_groups_finder_spec.rb'

View File

@ -183,7 +183,7 @@ Style/FormatString:
- 'spec/factories/lfs_objects.rb'
- 'spec/features/admin/admin_users_spec.rb'
- 'spec/features/groups/import_export/connect_instance_spec.rb'
- 'spec/features/issues/form_spec.rb'
- 'spec/features/issues/new/form_spec.rb'
- 'spec/graphql/resolvers/projects/jira_projects_resolver_spec.rb'
- 'spec/helpers/profiles_helper_spec.rb'
- 'spec/lib/api/entities/release_spec.rb'

View File

@ -2,6 +2,16 @@
documentation](doc/development/changelog.md) for instructions on adding your own
entry.
## 18.1.1 (2025-06-24)
### Security (5 changes)
- [Fix guest permissions for incident hierarchy updates](https://gitlab.com/gitlab-org/security/gitlab/-/commit/f3cd30dec5fc9123ce7afecc5f94d74b4083f7cf) ([merge request](https://gitlab.com/gitlab-org/security/gitlab/-/merge_requests/5078))
- [Fix the validation logic for IDP Certificate Fingerprint](https://gitlab.com/gitlab-org/security/gitlab/-/commit/f53497ee0ff29b45f4a3698a7085d036891afbe2) ([merge request](https://gitlab.com/gitlab-org/security/gitlab/-/merge_requests/5081))
- [Checking if framework and project have same namespace](https://gitlab.com/gitlab-org/security/gitlab/-/commit/e328730a2b5373b3b400d734b1d6ac3cdb436b19) ([merge request](https://gitlab.com/gitlab-org/security/gitlab/-/merge_requests/5075))
- [Fix incorrect role grant after a user access_request](https://gitlab.com/gitlab-org/security/gitlab/-/commit/cb1b44753248959f3738c502570148cd6ad43059) ([merge request](https://gitlab.com/gitlab-org/security/gitlab/-/merge_requests/5077))
- [Prevent anonymous users from creating uploads](https://gitlab.com/gitlab-org/security/gitlab/-/commit/6e8cee2e35a2f61c610b95569b76ac74d546455a) ([merge request](https://gitlab.com/gitlab-org/security/gitlab/-/merge_requests/5076))
## 18.1.0 (2025-06-18)
### Added (182 changes)
@ -912,6 +922,25 @@ entry.
- [Change users_preferences.organization_groups_projects_display defaults](https://gitlab.com/gitlab-org/gitlab/-/commit/c0bed48fc7a755413edf1090c86a33a798771d37) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/190331))
- [Quarantine a flaky test](https://gitlab.com/gitlab-org/gitlab/-/commit/06fdc6c5fb9a7490c5fe8e6b1eb3a8b0f065f950) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/189248))
## 18.0.3 (2025-06-24)
### Fixed (1 change)
- [Support markdown anchors and multi-line in permalink](https://gitlab.com/gitlab-org/security/gitlab/-/commit/1aca27fe15724ca4a6bff73f65fa3155b202b32c)
### Changed (2 changes)
- [Revert "Merge branch 'backport-bugfix-restrict-LFS-download--18-0' into '18-0-stable-ee'"](https://gitlab.com/gitlab-org/security/gitlab/-/commit/f0cc5baad16efa00a8278c4d4234385c2039182c)
- [Restrict LFS file download to project-bound objects](https://gitlab.com/gitlab-org/security/gitlab/-/commit/c5676a6947bb17a155a0c9b3b2c45d7105e2e2e2)
### Security (5 changes)
- [Fix guest permissions for incident hierarchy updates](https://gitlab.com/gitlab-org/security/gitlab/-/commit/393fa90059048c02b2c23d9ce05714380d42422c) ([merge request](https://gitlab.com/gitlab-org/security/gitlab/-/merge_requests/5079))
- [Fix the validation logic for IDP Certificate Fingerprint](https://gitlab.com/gitlab-org/security/gitlab/-/commit/4db4074ab27350a14d21850ca2c316d40af10954) ([merge request](https://gitlab.com/gitlab-org/security/gitlab/-/merge_requests/5082))
- [Checking if framework and project have same namespace](https://gitlab.com/gitlab-org/security/gitlab/-/commit/37ee6b859cb83fb2565e8ad0a46b131b7cd12358) ([merge request](https://gitlab.com/gitlab-org/security/gitlab/-/merge_requests/5066))
- [Fix incorrect role grant after a user access_request](https://gitlab.com/gitlab-org/security/gitlab/-/commit/26d16766ba6535c99938736f27d7cf6aba3f9ff0) ([merge request](https://gitlab.com/gitlab-org/security/gitlab/-/merge_requests/5054))
- [Prevent anonymous users from creating uploads](https://gitlab.com/gitlab-org/security/gitlab/-/commit/9f6b810f819bb80ef3f0643cafe7e6d442f804b7) ([merge request](https://gitlab.com/gitlab-org/security/gitlab/-/merge_requests/5063))
## 18.0.2 (2025-06-11)
### Fixed (5 changes)
@ -1787,6 +1816,21 @@ entry.
- [Finalize migration BackfillContainerRepositoryStatesProjectId](https://gitlab.com/gitlab-org/gitlab/-/commit/78f333c76a39d0a85938318b3be49905c19074e6) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/185869))
- [Finalize migration BackfillPackagesRpmMetadataProjectId](https://gitlab.com/gitlab-org/gitlab/-/commit/d066d88be1fff7cfcf64017124af797e085a4b4f) ([merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/184553))
## 17.11.5 (2025-06-24)
### Changed (2 changes)
- [Revert "Merge branch 'backport-bugfix-restrict-LFS-download--17-11' into '17-11-stable-ee'"](https://gitlab.com/gitlab-org/security/gitlab/-/commit/78ea1e4f6d7b628fb092a67f93706a69f86266d6)
- [Restrict LFS file download to project-bound objects](https://gitlab.com/gitlab-org/security/gitlab/-/commit/b0243e257c03c029c260e7c767ddf00a60cb0992)
### Security (5 changes)
- [Fix guest permissions for incident hierarchy updates](https://gitlab.com/gitlab-org/security/gitlab/-/commit/eab51ce5967c0bbf102d71331c8eb8f0d7df80e0) ([merge request](https://gitlab.com/gitlab-org/security/gitlab/-/merge_requests/5080))
- [Fix the validation logic for IDP Certificate Fingerprint](https://gitlab.com/gitlab-org/security/gitlab/-/commit/4abfb6d8f7ae7cbc42d86c98a6b1b11bca29e7ce) ([merge request](https://gitlab.com/gitlab-org/security/gitlab/-/merge_requests/5083))
- [Checking if framework and project have same namespace](https://gitlab.com/gitlab-org/security/gitlab/-/commit/2947a696bb9db9aaeee4598daa60bfb389c4073a) ([merge request](https://gitlab.com/gitlab-org/security/gitlab/-/merge_requests/5067))
- [Fix incorrect role grant after a user access_request](https://gitlab.com/gitlab-org/security/gitlab/-/commit/de70d6b13d8c0f359c25a3c9aead4850732e7ee6) ([merge request](https://gitlab.com/gitlab-org/security/gitlab/-/merge_requests/5056))
- [Prevent anonymous users from creating uploads](https://gitlab.com/gitlab-org/security/gitlab/-/commit/c96e37a82f781967214e76f8f348039e2bf46398) ([merge request](https://gitlab.com/gitlab-org/security/gitlab/-/merge_requests/5064))
## 17.11.4 (2025-06-11)
### Fixed (2 changes)

View File

@ -1 +1 @@
3de4744135aca47419474d244258a5e285dad834
458cfa195c1acba9a3b6e71960a202b493b59141

View File

@ -1 +1 @@
a5ee6c94ca31d1c3a84e9a1e6fad88fec35465e3
d875b4c6753493e61ea11002395a4c15873c346b

View File

@ -265,12 +265,13 @@ export default {
:current-page="currentPage"
:sort-compare="sortingChanged"
show-empty
stacked="sm"
stacked="lg"
:busy="busy"
>
<template #cell(name)="{ item: { name } }">
<span class="gl-font-normal">{{ name }}</span>
</template>
<template #cell(createdAt)="{ item: { createdAt } }">
<user-date :date="createdAt" />
</template>

View File

@ -57,6 +57,7 @@ export const FIELDS = [
key: 'lastUsedIps',
label: __('Last Used IPs'),
sortable: false,
tdClass: 'gl-break-all gl-min-w-20',
},
{
key: 'expiresAt',

View File

@ -6,6 +6,7 @@ import { s__ } from '~/locale';
import { createAlert } from '~/alert';
import { reportToSentry } from '~/ci/utils';
import CrudComponent from '~/vue_shared/components/crud_component.vue';
import HelpPageLink from '~/vue_shared/components/help_page_link/help_page_link.vue';
import { DEFAULT_DEBOUNCE_AND_THROTTLE_MS } from '~/lib/utils/constants';
import InputsTableSkeletonLoader from './pipeline_inputs_table/inputs_table_skeleton_loader.vue';
import PipelineInputsTable from './pipeline_inputs_table/pipeline_inputs_table.vue';
@ -23,6 +24,7 @@ export default {
GlCollapsibleListbox,
GlButton,
PipelineInputsPreviewDrawer,
HelpPageLink,
},
inject: ['projectPath'],
props: {
@ -112,6 +114,9 @@ export default {
hasInputs() {
return Boolean(this.inputs.length);
},
hasSelectedInputs() {
return Boolean(this.selectedInputNames.length);
},
inputsToEmit() {
return this.emitModifiedOnly ? this.modifiedInputs : this.inputs;
},
@ -163,7 +168,7 @@ export default {
return this.searchFilteredInputs;
}
if (this.selectedInputNames.length === 0) {
if (!this.hasSelectedInputs) {
return this.inputsList;
}
@ -288,12 +293,11 @@ export default {
"
:title="s__('Pipelines|Inputs')"
>
<template #actions>
<template v-if="hasInputs" #actions>
<gl-button
category="secondary"
variant="confirm"
size="small"
:disabled="!hasInputs"
@click="showPreviewDrawer = true"
>
{{ s__('Pipelines|Preview inputs') }}
@ -307,7 +311,6 @@ export default {
:search-placeholder="s__('Pipelines|Search input name')"
:show-select-all-button-label="__('Select all')"
:reset-button-label="__('Clear')"
:disabled="!hasInputs"
searchable
multiple
placement="bottom-end"
@ -317,18 +320,24 @@ export default {
@select-all="selectAll"
@search="handleSearch"
/>
</template>
<inputs-table-skeleton-loader v-if="isLoading" />
<template v-else>
<pipeline-inputs-table
v-if="selectedInputNames.length"
:inputs="inputs"
@update="handleInputsUpdated"
/>
<pipeline-inputs-preview-drawer
:open="showPreviewDrawer"
:inputs="inputs"
@close="showPreviewDrawer = false"
/>
</template>
<inputs-table-skeleton-loader v-if="isLoading" />
<pipeline-inputs-table
v-else-if="hasSelectedInputs"
:inputs="inputs"
@update="handleInputsUpdated"
/>
<template v-if="!hasSelectedInputs && !isLoading" #empty>
<div
v-else-if="hasInputs"
class="gl-flex gl-flex-col gl-items-center gl-justify-center gl-p-4 gl-text-subtle"
v-if="hasInputs"
class="gl-flex gl-flex-col gl-items-center gl-justify-center gl-p-2"
data-testid="empty-selection-state"
>
<img
@ -338,15 +347,13 @@ export default {
/>
{{ emptySelectionText }}
</div>
<div v-else class="gl-flex gl-justify-center gl-text-subtle">
<div v-else class="gl-text-center" data-testid="no-inputs-empty-state">
{{ s__('Pipelines|There are no inputs for this configuration.') }}
<help-page-link href="ci/inputs/_index.md">
{{ s__('Pipelines|How do I use inputs?') }}
</help-page-link>
</div>
</template>
<pipeline-inputs-preview-drawer
:open="showPreviewDrawer"
:inputs="inputs"
@close="showPreviewDrawer = false"
/>
</crud-component>
</template>

View File

@ -2,11 +2,13 @@
import { computed } from 'vue';
import { GlButton, GlCollapsibleListbox, GlTooltipDirective } from '@gitlab/ui';
import emptyTodosAllDoneSvg from '@gitlab/svgs/dist/illustrations/status/status-success-sm.svg';
import emptyTodosFilteredSvg from '@gitlab/svgs/dist/illustrations/search-sm.svg';
import { s__ } from '~/locale';
import {
TABS_INDICES,
TODO_ACTION_TYPE_BUILD_FAILED,
TODO_ACTION_TYPE_DIRECTLY_ADDRESSED,
TODO_ACTION_TYPE_ASSIGNED,
TODO_ACTION_TYPE_MENTIONED,
TODO_ACTION_TYPE_REVIEW_REQUESTED,
TODO_ACTION_TYPE_UNMERGEABLE,
@ -22,6 +24,10 @@ const FILTER_OPTIONS = [
value: null,
text: s__('Todos|All'),
},
{
value: TODO_ACTION_TYPE_ASSIGNED,
text: s__('Todos|Assigned'),
},
{
value: `${TODO_ACTION_TYPE_MENTIONED};${TODO_ACTION_TYPE_DIRECTLY_ADDRESSED}`,
text: s__('Todos|Mentioned'),
@ -85,6 +91,7 @@ export default {
},
},
emptyTodosAllDoneSvg,
emptyTodosFilteredSvg,
FILTER_OPTIONS,
};
</script>
@ -126,6 +133,7 @@ export default {
v-else-if="!$apollo.queries.todos.loading && !todos.length && filter"
class="gl-flex gl-items-center gl-gap-5 gl-bg-subtle gl-p-4"
>
<img class="gl-h-11" aria-hidden="true" :src="$options.emptyTodosFilteredSvg" />
<span>{{ __('Sorry, your filter produced no results') }}</span>
</div>
<div v-else>

View File

@ -10,11 +10,11 @@ import {
export const getRoleDropdownItems = roleDropdownItems;
export const getMemberRole = initialSelectedRole;
// The API to update members uses different property names for the access level, depending on if it's a user or a group.
// Users use 'access_level', groups use 'group_access'.
// The API to update members uses different property names for the access level, depending on each member's namespace
const ACCESS_LEVEL_PROPERTY_NAME = {
[MEMBERS_TAB_TYPES.user]: MEMBER_ACCESS_LEVEL_PROPERTY_NAME,
[MEMBERS_TAB_TYPES.group]: GROUP_LINK_ACCESS_LEVEL_PROPERTY_NAME,
[MEMBERS_TAB_TYPES.accessRequest]: MEMBER_ACCESS_LEVEL_PROPERTY_NAME,
};
export const callRoleUpdateApi = async (member, role) => {

View File

@ -14,6 +14,7 @@ import initTopicsTokenSelector from '~/projects/settings/topics';
import { initProjectSelects } from '~/vue_shared/components/entity_select/init_project_selects';
import initPruneObjectsButton from '~/projects/prune_objects_button';
import initProjectPermissionsSettings from '../shared/permissions';
import initGitlabDuoSettings from '../shared/permissions/gitlab_duo_settings';
import initProjectLoadingSpinner from '../shared/save_project_loader';
initFilePickers();
@ -29,6 +30,7 @@ initServiceDesk();
initProjectLoadingSpinner();
initProjectPermissionsSettings();
initGitlabDuoSettings();
initTransferProjectForm();
dirtySubmitFactory(document.querySelectorAll('.js-general-settings-form, .js-mr-settings-form'));

View File

@ -0,0 +1,162 @@
<script>
import { GlCard, GlToggle, GlButton } from '@gitlab/ui';
import CascadingLockIcon from '~/namespaces/cascading_settings/components/cascading_lock_icon.vue';
import glFeatureFlagMixin from '~/vue_shared/mixins/gl_feature_flags_mixin';
import { __, s__ } from '~/locale';
import { duoHelpPath, amazonQHelpPath } from '../constants';
import ProjectSettingRow from './project_setting_row.vue';
export default {
i18n: {
saveChanges: __('Save changes'),
},
name: 'GitlabDuoSettings',
components: {
GlCard,
GlToggle,
GlButton,
ProjectSettingRow,
CascadingLockIcon,
},
mixins: [glFeatureFlagMixin()],
props: {
cascadingSettingsData: {
type: Object,
required: false,
default: () => ({}),
},
duoFeaturesEnabled: {
type: Boolean,
required: false,
default: false,
},
amazonQAvailable: {
type: Boolean,
required: false,
default: false,
},
amazonQAutoReviewEnabled: {
type: Boolean,
required: false,
default: false,
},
duoFeaturesLocked: {
type: Boolean,
required: false,
default: false,
},
licensedAiFeaturesAvailable: {
type: Boolean,
required: false,
default: false,
},
},
data() {
return {
autoReviewEnabled: this.amazonQAutoReviewEnabled,
duoEnabled: this.duoFeaturesEnabled,
};
},
computed: {
duoEnabledSetting() {
if (this.amazonQAvailable) {
return {
label: s__('ProjectSettings|Amazon Q'),
helpText: s__('ProjectSettings|This project can use Amazon Q.'),
helpPath: amazonQHelpPath,
};
}
if (this.licensedAiFeaturesAvailable) {
return {
label: s__('ProjectSettings|GitLab Duo'),
helpText: s__('ProjectSettings|Use AI-native features in this project.'),
helpPath: duoHelpPath,
};
}
return null;
},
showCascadingButton() {
return (
this.duoFeaturesLocked &&
this.cascadingSettingsData &&
Object.keys(this.cascadingSettingsData).length
);
},
},
watch: {
duoFeaturesEnabled(isEnabled) {
if (this.amazonQAvailable) {
this.autoReviewEnabled = isEnabled;
} else {
this.autoReviewEnabled = false;
}
},
},
};
</script>
<template>
<gl-card
class="project-visibility-setting"
body-class="gl-flex gl-flex-col gl-gap-6"
data-testid="gitlab-duo-settings-card"
>
<project-setting-row
v-if="duoEnabledSetting"
data-testid="duo-settings"
:label="duoEnabledSetting.label"
:help-text="duoEnabledSetting.helpText"
:help-path="duoEnabledSetting.helpPath"
:locked="duoFeaturesLocked"
>
<template #label-icon>
<cascading-lock-icon
v-if="showCascadingButton"
data-testid="duo-cascading-lock-icon"
:is-locked-by-group-ancestor="cascadingSettingsData.lockedByAncestor"
:is-locked-by-application-settings="cascadingSettingsData.lockedByApplicationSetting"
:ancestor-namespace="cascadingSettingsData.ancestorNamespace"
class="gl-ml-1"
/>
</template>
<gl-toggle
v-model="duoEnabled"
class="gl-mt-2"
:disabled="duoFeaturesLocked"
:label="duoEnabledSetting.label"
label-position="hidden"
name="project[project_setting_attributes][duo_features_enabled]"
data-testid="duo_features_enabled_toggle"
/>
<div
v-if="amazonQAvailable"
class="project-feature-setting-group gl-flex gl-flex-col gl-gap-5 gl-pl-5 md:gl-pl-7"
>
<project-setting-row
:label="s__('AI|Enable Auto Review')"
class="gl-mt-5"
:help-text="
s__('AI|When a merge request is created, automatically starts an Amazon Q review')
"
>
<gl-toggle
v-model="autoReviewEnabled"
class="gl-mt-2"
:disabled="duoFeaturesLocked || !duoEnabled"
:label="s__('AI|Auto Review')"
label-position="hidden"
name="project[amazon_q_auto_review_enabled]"
data-testid="amazon_q_auto_review_enabled"
/>
</project-setting-row>
</div>
</project-setting-row>
<template #footer>
<gl-button variant="confirm" type="submit" data-testid="gitlab-duo-save-button">
{{ $options.i18n.saveChanges }}
</gl-button>
</template>
</gl-card>
</template>

View File

@ -18,7 +18,6 @@ import {
VISIBILITY_LEVEL_INTERNAL_INTEGER,
VISIBILITY_LEVEL_PUBLIC_INTEGER,
} from '~/visibility_level/constants';
import CascadingLockIcon from '~/namespaces/cascading_settings/components/cascading_lock_icon.vue';
import {
visibilityLevelDescriptions,
featureAccessLevelMembers,
@ -28,8 +27,6 @@ import {
featureAccessLevelDescriptions,
modelExperimentsHelpPath,
modelRegistryHelpPath,
duoHelpPath,
amazonQHelpPath,
pipelineExecutionPoliciesHelpPath,
extendedPratExpiryWebhooksExecuteHelpPath,
} from '../constants';
@ -126,7 +123,6 @@ export default {
CiCatalogSettings,
ProjectFeatureSetting,
ProjectSettingRow,
CascadingLockIcon,
GlButton,
GlCard,
GlSprintf,
@ -142,7 +138,6 @@ export default {
),
},
mixins: [settingsMixin, glFeatureFlagMixin()],
inject: ['cascadingSettingsData'],
props: {
requestCveAvailable: {
type: Boolean,
@ -207,26 +202,6 @@ export default {
required: false,
default: false,
},
licensedAiFeaturesAvailable: {
type: Boolean,
required: false,
default: false,
},
amazonQAvailable: {
type: Boolean,
required: false,
default: false,
},
amazonQAutoReviewEnabled: {
type: Boolean,
required: false,
default: false,
},
duoFeaturesLocked: {
type: Boolean,
required: false,
default: false,
},
visibilityHelpPath: {
type: String,
required: false,
@ -367,8 +342,6 @@ export default {
showDiffPreviewInEmail: true,
extendedPratExpiryWebhooksExecute: false,
cveIdRequestEnabled: true,
duoFeaturesEnabled: false,
autoReviewEnabled: this.amazonQAutoReviewEnabled,
sppRepositoryPipelineAccess: false,
featureAccessLevelEveryone,
featureAccessLevelMembers,
@ -473,41 +446,11 @@ export default {
this.showDiffPreviewInEmail = newValue;
},
},
showCascadingButton() {
return (
this.duoFeaturesLocked &&
this.cascadingSettingsData &&
Object.keys(this.cascadingSettingsData).length
);
},
wasProjectInitiallyPrivate() {
return this.currentSettings.visibilityLevel === VISIBILITY_LEVEL_PRIVATE_INTEGER;
},
duoEnabledSetting() {
if (this.amazonQAvailable) {
return {
label: s__('ProjectSettings|Amazon Q'),
helpText: s__('ProjectSettings|This project can use Amazon Q.'),
helpPath: amazonQHelpPath,
};
}
if (this.licensedAiFeaturesAvailable) {
return {
label: s__('ProjectSettings|GitLab Duo'),
helpText: s__('ProjectSettings|Use AI-native features in this project.'),
helpPath: duoHelpPath,
};
}
return null;
},
},
watch: {
duoFeaturesEnabled(isEnabled) {
if (this.amazonQAvailable) {
this.autoReviewEnabled = isEnabled;
}
},
visibilityLevel(value, oldValue) {
if (value === VISIBILITY_LEVEL_PRIVATE_INTEGER) {
if (
@ -1088,56 +1031,6 @@ export default {
name="project[project_feature_attributes][releases_access_level]"
/>
</project-setting-row>
<project-setting-row
v-if="duoEnabledSetting"
data-testid="duo-settings"
:label="duoEnabledSetting.label"
:help-text="duoEnabledSetting.helpText"
:help-path="duoEnabledSetting.helpPath"
:locked="duoFeaturesLocked"
>
<template #label-icon>
<cascading-lock-icon
v-if="showCascadingButton"
data-testid="duo-cascading-lock-icon"
:is-locked-by-group-ancestor="cascadingSettingsData.lockedByAncestor"
:is-locked-by-application-settings="cascadingSettingsData.lockedByApplicationSetting"
:ancestor-namespace="cascadingSettingsData.ancestorNamespace"
class="gl-ml-1"
/>
</template>
<gl-toggle
v-model="duoFeaturesEnabled"
class="gl-mt-2"
:disabled="duoFeaturesLocked"
:label="duoEnabledSetting.label"
label-position="hidden"
name="project[project_setting_attributes][duo_features_enabled]"
data-testid="duo_features_enabled_toggle"
/>
<div
v-if="amazonQAvailable"
class="project-feature-setting-group gl-flex gl-flex-col gl-gap-5 gl-pl-5 md:gl-pl-7"
>
<project-setting-row
:label="s__('AI|Enable Auto Review')"
class="gl-mt-5"
:help-text="
s__('AI|When a merge request is created, automatically starts an Amazon Q review')
"
>
<gl-toggle
v-model="autoReviewEnabled"
class="gl-mt-2"
:disabled="duoFeaturesLocked || !duoFeaturesEnabled"
:label="s__('AI|Auto Review')"
label-position="hidden"
name="project[amazon_q_auto_review_enabled]"
data-testid="amazon_q_auto_review_enabled"
/>
</project-setting-row>
</div>
</project-setting-row>
<project-setting-row v-if="canDisableEmails" ref="email-settings">
<label class="js-emails-enabled">

View File

@ -0,0 +1,29 @@
import Vue from 'vue';
import GitlabDuoSettings from './components/gitlab_duo_settings.vue';
export default function initGitlabDuoSettings() {
const mountPoint = document.querySelector('.js-gitlab-duo-settings-form');
const componentPropsEl = document.querySelector('.js-gitlab-duo-settings-form-data');
if (!mountPoint) {
return null;
}
const componentProps = JSON.parse(componentPropsEl.innerHTML);
const { targetFormId } = mountPoint.dataset;
return new Vue({
el: mountPoint,
name: 'GitlabDuoSettingsRoot',
render: (createElement) =>
createElement(GitlabDuoSettings, {
props: componentProps,
on: {
confirm: () => {
if (targetFormId) document.getElementById(targetFormId)?.submit();
},
},
}),
});
}

View File

@ -244,7 +244,7 @@ export default {
<template v-if="isSubmodule">
@ <gl-link :href="submoduleTreeUrl" class="commit-sha">{{ shortSha }}</gl-link>
</template>
<!-- The z-index of the lock must be higher than tree-item-link::before in files.scss -->
<!-- The z-index of the lock must be the same (or higher) as tree-item-link::before in files.scss -->
<gl-icon
v-if="hasLockLabel"
v-gl-tooltip

View File

@ -35,9 +35,12 @@ $crud-header-min-height: px-to-rem(49px);
border-right-style: none;
}
> [data-label]::before {
text-align: left;
}
> th {
border-top-width: $gl-border-size-1;
border-bottom-width: 0;
}
&::after {

View File

@ -988,20 +988,6 @@ module ProjectsHelper
end
def project_permissions_data(project, target_form_id = nil)
data = visibility_confirm_modal_data(project, target_form_id)
cascading_settings_data = project_cascading_namespace_settings_tooltip_data(
:duo_features_enabled,
project,
method(:edit_group_path)
).to_json
data.merge!(
{
cascading_settings_data: cascading_settings_data
}
)
end
def visibility_confirm_modal_data(project, target_form_id = nil)
{
target_form_id: target_form_id,
button_testid: 'reduce-project-visibility-button',
@ -1014,6 +1000,16 @@ module ProjectsHelper
}
end
def gitlab_duo_settings_data(project)
{
cascadingSettingsData: project_cascading_namespace_settings_tooltip_data(
:duo_features_enabled,
project,
method(:edit_group_path)
)
}
end
def delete_inactive_projects?
strong_memoize(:delete_inactive_projects_setting) do
::Gitlab::CurrentSettings.delete_inactive_projects?

View File

@ -3628,6 +3628,11 @@ class Project < ApplicationRecord
end
strong_memoize_attr :job_token_policies_enabled?
# Overridden for EE
def licensed_ai_features_available?
false
end
private
def with_redis(&block)

View File

@ -35,6 +35,8 @@ class WorkItemPolicy < IssuePolicy
rule { is_incident & ~can?(:reporter_access) }.policy do
prevent :update_work_item
prevent :admin_work_item
prevent :admin_work_item_link
prevent :admin_parent_link
end
rule { is_incident & ~can?(:owner_access) }.policy do

View File

@ -5,13 +5,7 @@ module MergeRequests
include RemovesRefs
def execute(merge_request, commit = nil)
if Feature.enabled?(:destroy_fork_network_on_archive, project)
unless params[:skip_authorization].present? || can?(current_user, :update_merge_request, merge_request)
return merge_request
end
else
return merge_request unless can?(current_user, :update_merge_request, merge_request)
end
return merge_request unless authorized_to_close?(merge_request)
# If we close MergeRequest we want to ignore validation
# so we can close broken one (Ex. fork project removed)
@ -55,6 +49,10 @@ module MergeRequests
def trigger_merge_request_merge_status_updated(merge_request)
GraphqlTriggers.merge_request_merge_status_updated(merge_request)
end
def authorized_to_close?(merge_request)
params[:skip_authorization].present? || can?(current_user, :update_merge_request, merge_request)
end
end
end

View File

@ -3,6 +3,8 @@
module MergeRequests
module Mergeability
class CheckCiStatusService < CheckBaseService
include Gitlab::Utils::StrongMemoize
identifier :ci_must_pass
description 'Checks whether CI has passed'
@ -12,6 +14,8 @@ module MergeRequests
if mergeable_ci_state?
success
elsif pipeline_pending?
checking
else
failure
end
@ -29,11 +33,15 @@ module MergeRequests
def mergeable_ci_state?
return true unless pipeline_must_succeed?
return false unless merge_request.diff_head_pipeline
return false unless head_pipeline
return false if merge_request.pipeline_creating?
return true if can_skip_diff_head_pipeline?
merge_request.diff_head_pipeline.success?
head_pipeline.success?
end
def pipeline_pending?
merge_request.pipeline_creating? || head_pipeline&.active?
end
def pipeline_must_succeed?
@ -44,8 +52,13 @@ module MergeRequests
def can_skip_diff_head_pipeline?
merge_request.project.allow_merge_on_skipped_pipeline?(inherit_group_setting: true) &&
merge_request.diff_head_pipeline.skipped?
head_pipeline.skipped?
end
def head_pipeline
merge_request.diff_head_pipeline
end
strong_memoize_attr :head_pipeline
end
end
end

View File

@ -17,7 +17,7 @@ module MergeRequests
if check_results.success?
# If everything else is mergeable, but CI is not, the frontend expects two potential states to be returned
# See discussion: gitlab.com/gitlab-org/gitlab/-/merge_requests/96778#note_1093063523
if check_ci_results.failed?
if check_ci_results.checking? || check_ci_results.failed?
ci_check_failed_check
else
:mergeable

View File

@ -37,11 +37,7 @@ module Projects
update_project!
after_update
if Feature.enabled?(:destroy_fork_network_on_archive, project) &&
project.previous_changes[:archived] == [false, true]
UnlinkForkService.new(project, current_user).execute
end
UnlinkForkService.new(project, current_user).execute if archiving_project?
success
rescue ActiveRecord::ActiveRecordError
@ -60,6 +56,10 @@ module Projects
private
def archiving_project?
project.previous_changes[:archived] == [false, true]
end
def update_project!
if Feature.disabled?(:replicate_deletion_schedule_operations, project)
return project.update!(params.except(*non_assignable_project_params))

View File

@ -2,10 +2,40 @@
class CertificateFingerprintValidator < ActiveModel::EachValidator
FINGERPRINT_PATTERN = /\A([a-zA-Z0-9]{2}[\s\-:]?){16,}\z/
SHA1_FINGERPRINT_PATTERN = /\A(?:(?:[A-Fa-f0-9]{2}[\s:]){19}[A-Fa-f0-9]{2}|[A-Fa-f0-9]{40})\z/
SHA256_FINGERPRINT_PATTERN = /\A(?:(?:[A-Fa-f0-9]{2}[\s:]){31}[A-Fa-f0-9]{2}|[A-Fa-f0-9]{64})\z/
MIN_LENGTH = 40
MAX_LENGTH = 95
def validate_each(record, attribute, value)
# We introduce the new validation logic only for new records and updates that will change the attribute
# in order to limit the impact on existing invalid records.
if record.new_record? || record.will_save_change_to_attribute?(attribute)
validate_sha1_or_sha256_pattern(record, attribute, value)
else
validate_length_and_pattern(record, attribute, value)
end
end
private
def validate_sha1_or_sha256_pattern(record, attribute, value)
unless within_length_limits?(value) && matches_sha1_or_sha256_pattern?(value)
record.errors.add(attribute, "must be 40 or 64 hex characters (with optional colons between pairs)")
end
end
def validate_length_and_pattern(record, attribute, value)
unless value.try(:match, FINGERPRINT_PATTERN)
record.errors.add(attribute, "must be a hash containing only letters, numbers, spaces, : and -")
end
end
def within_length_limits?(value)
value.try(:length) && value.length >= MIN_LENGTH && value.length <= MAX_LENGTH
end
def matches_sha1_or_sha256_pattern?(value)
value.try(:match, SHA1_FINGERPRINT_PATTERN) || value.try(:match, SHA256_FINGERPRINT_PATTERN)
end
end

View File

@ -2,6 +2,7 @@
- page_title _("General")
- add_page_specific_style 'page_bundles/projects_edit'
- reduce_visibility_form_id = 'reduce-visibility-form'
- duo_settings_form_id = 'duo-settings-form'
- @force_desktop_expanded_sidebar = true
- project_docs_path = help_page_path('user/project/working_with_projects.md')
- project_docs_link_start = '<a href="%{url}" target="_blank">'.html_safe % { url: project_docs_path }
@ -40,6 +41,18 @@
- c.with_body do
= render 'shared/badges/badge_settings'
- if @project.licensed_ai_features_available?
= render ::Layouts::SettingsBlockComponent.new(s_('ProjectSettings|GitLab Duo'),
id: 'js-gitlab-duo-settings',
testid: 'gitlab-duo-settings-content',
expanded: expanded_by_default?) do |c|
- c.with_description do
= s_('ProjectSettings|Configure GitLab Duo features for this project.')
- c.with_body do
= form_for @project, html: { multipart: true, class: "duo-settings-form", id: duo_settings_form_id }, authenticity_token: true do |f|
%template.js-gitlab-duo-settings-form-data{ type: "application/json" }= gitlab_duo_settings_data(@project).to_json.html_safe
.js-gitlab-duo-settings-form{ data: { targetFormId: duo_settings_form_id } }
- if can?(current_user, :admin_project, @project)
= render_if_exists 'projects/settings/default_issue_template'

View File

@ -10,16 +10,24 @@
= gl_badge_tag topic[:title], { href: explore_project_topic_path }, { itemprop: 'keywords' }
- if project.has_extra_topics?
- popover_target_id = "more-topics-popover-#{project.id}"
- title = _('More topics')
- content = capture do
%span.gl-inline-flex.gl-flex-wrap.gl-gap-2
- project.topics_not_shown.each do |topic|
- explore_project_topic_path = topic_explore_projects_cleaned_path(topic_name: topic[:name])
- if topic[:title].length > max_project_topic_length
= gl_badge_tag truncate(topic[:title], length: max_project_topic_length), { href: explore_project_topic_path }, { class: 'has-tooltip', data: { container: "body" }, title: topic[:title], itemprop: 'keywords' }
- else
= gl_badge_tag topic[:title], { href: explore_project_topic_path, itemprop: 'keywords' }
%span.js-vue-popover{ data: { container: "body", toggle: 'popover', triggers: 'click', html: 'true', title: title, content: content } }
= render Pajamas::ButtonComponent.new(category: :tertiary, size: :small, button_options: { id: popover_target_id, class: 'text-nowrap !gl-text-subtle' }) do
= _("+ %{count} more") % { count: project.count_of_extra_topics_not_shown }
- hidden_topics = project.topics_not_shown
- hidden_topics_count = project.count_of_extra_topics_not_shown
%span.gl-inline-flex.gl-flex-wrap.gl-items-center.gl-gap-2.js-toggle-container
= render Pajamas::ButtonComponent.new(category: :tertiary, size: :small, button_options: { class: 'text-nowrap !gl-text-subtle js-toggle-button js-toggle-content', title: nil, 'aria-label': _("Show %{count} more") % { count: hidden_topics_count } }) do
%span.js-toggle-text.gl-text-sm
= _("+ %{count} more") % { count: hidden_topics_count }
- hidden_topics.each do |topic|
- explore_project_topic_path = topic_explore_projects_cleaned_path(topic_name: topic[:name])
- if topic[:title].length > max_project_topic_length
= gl_badge_tag truncate(topic[:title], length: max_project_topic_length),
{ href: explore_project_topic_path },
{ class: "has-tooltip js-toggle-content gl-hidden",
data: { container: "body" },
title: topic[:title],
itemprop: 'keywords' }
- else
= gl_badge_tag topic[:title],
{ href: explore_project_topic_path, itemprop: 'keywords' },
{ class: "js-toggle-content gl-hidden" }

View File

@ -1,9 +0,0 @@
---
name: destroy_fork_network_on_archive
feature_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/518708
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/189438
rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/538925
milestone: '18.0'
type: beta
group: group::source code
default_enabled: true

View File

@ -29,6 +29,8 @@
- 1
- - admin_emails
- 1
- - ai_knowledge_graph_indexing_task
- 1
- - ai_repository_xray_scan_dependencies
- 1
- - analytics_code_review_metrics

View File

@ -0,0 +1,16 @@
# frozen_string_literal: true
class RemoveSoftwareLicenseConstraintFromSoftwareLicensePolicies < Gitlab::Database::Migration[2.3]
milestone '18.2'
disable_ddl_transaction!
def up
remove_multi_column_not_null_constraint(:software_license_policies,
:software_license_id,
:custom_software_license_id)
end
def down
# no-op
end
end

View File

@ -0,0 +1,19 @@
# frozen_string_literal: true
class ChangeKnowledgeGraphReplicaNamespaceIndex < Gitlab::Database::Migration[2.3]
milestone '18.2'
INDEX_NAME = 'index_p_knowledge_graph_replicas_on_namespace_id'
# rubocop:disable Migration/AddIndex, Migration/RemoveIndex -- these are on empty tables
def up
# index with the same name is re-created, but without "unique: true"
remove_index :p_knowledge_graph_replicas, name: INDEX_NAME
add_index :p_knowledge_graph_replicas, :namespace_id, name: INDEX_NAME
end
def down
# on rollback we intentionally keep not-unique index, there can be some not-unique records
end
# rubocop:enable Migration/AddIndex, Migration/RemoveIndex
end

View File

@ -0,0 +1 @@
27c5af0e265115463f7b68cb0f6d7ddd44339143124dd6fec5e1fe006cb2bb61

View File

@ -0,0 +1 @@
7e0313c9330bd538f16b70726f327cb0e1b2a681f89767c976dba3d632473463

View File

@ -23515,8 +23515,7 @@ CREATE TABLE software_license_policies (
custom_software_license_id bigint,
approval_policy_rule_id bigint,
software_license_spdx_identifier text,
CONSTRAINT check_986c4e5c59 CHECK ((char_length(software_license_spdx_identifier) <= 255)),
CONSTRAINT check_9ba23ae4c3 CHECK ((num_nonnulls(custom_software_license_id, software_license_id) > 0))
CONSTRAINT check_986c4e5c59 CHECK ((char_length(software_license_spdx_identifier) <= 255))
);
CREATE SEQUENCE software_license_policies_id_seq
@ -36746,7 +36745,7 @@ CREATE UNIQUE INDEX index_p_knowledge_graph_enabled_namespaces_on_namespace_id O
CREATE INDEX index_p_knowledge_graph_enabled_namespaces_on_state ON ONLY p_knowledge_graph_enabled_namespaces USING btree (state);
CREATE UNIQUE INDEX index_p_knowledge_graph_replicas_on_namespace_id ON ONLY p_knowledge_graph_replicas USING btree (namespace_id);
CREATE INDEX index_p_knowledge_graph_replicas_on_namespace_id ON ONLY p_knowledge_graph_replicas USING btree (namespace_id);
CREATE INDEX index_p_knowledge_graph_replicas_on_state ON ONLY p_knowledge_graph_replicas USING btree (state);

View File

@ -175,6 +175,7 @@ exceptions:
- PGP
- PHP
- PID
- PIN
- PKCS
- PMD
- PNG

View File

@ -12,8 +12,8 @@ title: Users API
{{< /details >}}
Use this API to interact with user accounts on GitLab. These endpoints can help manage [your account](../user/profile/_index.md) or
[accounts for other users](../administration/administer_users.md).
Use this API to interact with user accounts on GitLab. These endpoints can help manage [your account](../user/profile/_index.md)
or [accounts for other users](../administration/administer_users.md).
## List users
@ -756,8 +756,8 @@ Prerequisites:
{{< alert type="note" >}}
`private_profile` defaults to the value of the
[Set profiles of new users to private by default](../administration/settings/account_and_limit_settings.md#set-profiles-of-new-users-to-private-by-default) setting.
`bio` defaults to `""` instead of `null`.
[Set profiles of new users to private by default](../administration/settings/account_and_limit_settings.md#set-profiles-of-new-users-to-private-by-default)
setting. `bio` defaults to `""` instead of `null`.
{{< /alert >}}
@ -772,7 +772,7 @@ Supported attributes:
| `username` | Yes | The username of the user |
| `name` | Yes | The name of the user |
| `email` | Yes | The email of the user |
| `password` | Conditionally | The password for the user. Required if `force_random_password` or `reset_password` are not defined. If either force_random_password` or `reset_password` are defined, those settings take priority. |
| `password` | Conditionally | The password for the user. Required if `force_random_password` or `reset_password` are not defined. If either `force_random_password` or `reset_password` are defined, those settings take priority. |
| `admin` | No | User is an administrator. Valid values are `true` or `false`. Defaults to false. |
| `auditor` | No | User is an auditor. Valid values are `true` or `false`. Defaults to false. [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/366404) in GitLab 15.3. Premium and Ultimate only. |
| `avatar` | No | Image file for user's avatar |
@ -844,7 +844,7 @@ Supported attributes:
| `can_create_group` | No | User can create groups - true or false |
| `color_scheme_id` | No | User's color scheme for the file viewer (for more information, see the [user preference documentation](../user/profile/preferences.md#change-the-syntax-highlighting-theme) for more information) |
| `commit_email` | No | User's commit email. Set to `_private` to use the private commit email. [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/375148) in GitLab 15.5. |
| `email` | No | The email of the user |
| `email` | No | The email of the user |
| `extern_uid` | No | External UID |
| `external` | No | Flags the user as external - true or false (default) |
| `extra_shared_runners_minutes_limit` | No | Can be set by administrators only. Additional compute minutes for this user. Premium and Ultimate only. |
@ -852,10 +852,10 @@ Supported attributes:
| `id` | Yes | ID of the user |
| `linkedin` | No | LinkedIn |
| `location` | No | User's location |
| `name` | No | The name of the user |
| `name` | No | The name of the user |
| `note` | No | Administration notes for this user |
| `organization` | No | Organization name |
| `password` | No | The password for the user |
| `password` | No | The password for the user |
| `private_profile` | No | User's profile is private - true or false. |
| `projects_limit` | No | Limit projects each user can create |
| `pronouns` | No | Pronouns |
@ -868,7 +868,7 @@ Supported attributes:
| `twitter` | No | X (formerly Twitter) account |
| `discord` | No | Discord account |
| `github` | No | GitHub username |
| `username` | No | The username of the user |
| `username` | No | The username of the user |
| `view_diffs_file_by_file` | No | Flag indicating the user sees only one file diff per page |
| `website_url` | No | Website URL |
@ -1103,7 +1103,7 @@ Supported attributes:
To upload an avatar from your file system, use the `--form` argument. This causes
cURL to post data using the header `Content-Type: multipart/form-data`. The
`file=` parameter must point to an image file on your file system and be
preceded by `@`. For example:
preceded by `@`.
Example request:
@ -1474,8 +1474,7 @@ Supported attributes:
{{< history >}}
- [Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/175040)
in GitLab 17.8.
- [Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/175040) in GitLab 17.8.
{{< /history >}}
@ -1518,8 +1517,7 @@ Example response:
{{< history >}}
- [Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/175040)
in GitLab 17.8.
- [Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/175040) in GitLab 17.8.
{{< /history >}}
@ -1561,8 +1559,7 @@ Example response:
{{< history >}}
- [Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/175040)
in GitLab 17.8.
- [Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/175040) in GitLab 17.8.
{{< /history >}}
@ -1595,9 +1592,9 @@ Example response:
Supported attributes:
| Attribute | Type | Required | Description |
|:-----------------------|:---------|:---------|:------------|
| `id` | integer | yes | ID of user account |
| Attribute | Type | Required | Description |
|:----------|:--------|:---------|:------------|
| `id` | integer | yes | ID of user account |
## Revoke a Support PIN for a user
@ -1610,8 +1607,7 @@ Supported attributes:
{{< history >}}
- [Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/187657)
in GitLab 17.11.
- [Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/187657) in GitLab 17.11.
{{< /history >}}
@ -1640,6 +1636,6 @@ If successful, returns `202 Accepted`.
Supported attributes:
| Attribute | Type | Required | Description |
|:-------------|:----------|:---------|:--------------------|
| `id` | integer | yes | ID of a user |
| Attribute | Type | Required | Description |
|:----------|:--------|:---------|:------------|
| `id` | integer | yes | ID of a user |

View File

@ -0,0 +1,34 @@
---
stage: none
group: Documentation Guidelines
info: For assistance with this Style Guide page, see https://handbook.gitlab.com/handbook/product/ux/technical-writing/#assignments-to-other-projects-and-subjects.
title: Use of AI
---
Community members can make AI-generated contributions to GitLab documentation, provided they follow the guidelines in our [DCO or our CLA terms](https://about.gitlab.com/community/contribute/dco-cla/).
GitLab team members must follow the guidelines documented in the [internal handbook](https://internal.gitlab.com/handbook/product/ai-strategy/ai-integration-effort/legal_restrictions/).
AI is a productivity multiplier and creative catalyst for the Technical Writing team at GitLab. Examples include:
- Write and refactor documentation
- Create initial drafts from outlines and screenshots.
- Generate ideas to restructure content for scannability.
- Draft tutorial content.
- Convert list items to Markdown tables.
- Rephrase and simplify language for better readability.
- Edit UI text to make it more succinct.
- Suggest alternatives and improvements to error messages.
- Restructure pages based on user feedback with specific improvement recommendations.
- Support technical tasks and automation
- Troubleshoot failed pipelines.
- Write Python scripts for data analysis and content auditing.
- Help with rebasing and Git operations.
- Troubleshoot GDK update errors.
- Create Mermaid diagrams.
- Analysis and research
- Analyze documentation sets and identify pain points and improvement areas.
- Summarize long documents.
- Generate lists of content by topic or category.
All content, AI-generated or human-created, is reviewed for accuracy and readability by a GitLab team member.

View File

@ -650,12 +650,6 @@ Remember:
The documentation under `/doc/solutions` is created, maintained, copy edited,
and merged by the Solutions Architect team.
## AI-generated content
Community members can make AI-generated contributions to GitLab documentation, provided they follow the guidelines in our [DCO or our CLA terms](https://about.gitlab.com/community/contribute/dco-cla/).
GitLab team members must follow the guidelines documented in the [internal handbook](https://internal.gitlab.com/handbook/product/ai-strategy/ai-integration-effort/legal_restrictions/).
## Related topics
- [Technical Writing assignments](https://handbook.gitlab.com/handbook/product/ux/technical-writing/#assignments)

View File

@ -0,0 +1,127 @@
---
stage: Fulfillment
group: Provision
info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://handbook.gitlab.com/handbook/product/ux/technical-writing/#assignments
description: Seat assignment, GitLab Duo subscription add-on.
title: GitLab Duo trials
---
{{< details >}}
- Tier: Premium, Ultimate
- Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
{{< /details >}}
To try GitLab Duo, you can get access for a limited time with a free trial.
During the trial period, you'll have access to the full feature set for whichever add-on you chose.
When the trial period is over, to maintain your access, you can purchase the add-on.
Trials of the GitLab Duo add-ons last 60 days.
## Start GitLab Duo Pro trial
Get a trial of GitLab Duo Pro to test the [GitLab Duo Pro features](../user/gitlab_duo/feature_summary.md)
for a limited time.
You can get a trial of GitLab Duo Pro if you have the Premium tier on GitLab.com, GitLab Self-Managed, or GitLab Dedicated.
### On GitLab.com
Prerequisites:
- You must have the Owner role for a top-level group that has an active paid Premium subscription.
To start a GitLab Duo Pro trial on GitLab.com:
1. On the left sidebar, select **Search or go to** and find your group.
1. Select **Settings > Billing**.
1. Select **Start a free GitLab Duo Pro trial**.
1. Complete the fields.
1. Select **Continue**.
1. If prompted, select the group that the trial should be applied to.
1. Select **Activate my trial**.
1. [Assign seats](subscription-add-ons.md#assign-gitlab-duo-seats) to the users who need access.
### On GitLab Self-Managed
Prerequisites:
- You must have an active paid Premium subscription.
- You must have GitLab 16.8 or later and your instance must be able to [synchronize your subscription data](manage_subscription.md#subscription-data-synchronization) with GitLab.
- GitLab Duo requires GitLab 17.2 and later for the best user experience and results. Earlier versions might continue to work, however the experience may be degraded.
To start a GitLab Duo Pro trial on GitLab Self-Managed or GitLab Dedicated:
1. Go to the [GitLab Duo Pro trial page](https://about.gitlab.com/solutions/gitlab-duo-pro/sales/?toggle=gitlab-duo-pro).
1. Complete the fields.
- To find your subscription name:
1. In the Customers Portal, on the **Subscriptions & purchases** page, find the subscription you want to apply the trial to.
1. At the top of the page, the subscription name appears in a badge.
![Subscription name](img/subscription_name_v17_0.png)
- Ensure the email address you submit for trial registration matches the email address of the [subscription contact](customers_portal.md#change-your-subscription-contact).
1. Select **Submit**.
The trial automatically synchronizes to your instance within 24 hours. After the trial has synchronized, [assign seats](subscription-add-ons.md#assign-gitlab-duo-seats) to users that you want to access GitLab Duo.
### On GitLab Dedicated
Reach out to your Sales contact if you are interested in a trial.
## Start GitLab Duo Enterprise trial
Get a trial of GitLab Duo Enterprise to test the [GitLab Duo Enterprise features](../user/gitlab_duo/feature_summary.md)
for a limited time.
You can get a trial of GitLab Duo Enterprise if:
- You have the Free tier on GitLab.com. In that case, you can try Ultimate tier with GitLab Duo Enterprise.
- You have the Premium or Ultimate tier on GitLab.com, GitLab Self-Managed, or GitLab Dedicated.
If you have the Free tier on GitLab Self-Managed, no trial is available.
### On GitLab.com
Prerequisites:
- You must have the Owner role for a top-level group that has an active paid Ultimate subscription.
To start a GitLab Duo Enterprise trial on GitLab.com:
1. On the left sidebar, select **Search or go to** and find your group.
1. Select **Settings > Billing**.
1. Select **Start a free GitLab Duo Enterprise trial**.
1. Complete the fields.
1. Select **Continue**.
1. If prompted, select the group that the trial should be applied to.
1. Select **Activate my trial**.
1. [Assign seats](subscription-add-ons.md#assign-gitlab-duo-seats) to the users who need access.
### On GitLab Self-Managed
Prerequisites:
- You must have an active paid Ultimate subscription.
- You must have GitLab 17.3 or later and your instance must be able to [synchronize your subscription data](manage_subscription.md#subscription-data-synchronization) with GitLab.
To start a GitLab Duo Enterprise trial on GitLab Self-Managed or GitLab Dedicated:
1. Go to the [GitLab Duo Enterprise trial page](https://about.gitlab.com/solutions/gitlab-duo-pro/sales/?toggle=gitlab-duo-enterprise).
1. Complete the fields.
- To find your subscription name:
1. In the Customers Portal, on the **Subscriptions & purchases** page, find the subscription you want to apply the trial to.
1. At the top of the page, the subscription name appears in a badge.
![Subscription name](img/subscription_name_v17_0.png)
- Ensure the email address you submit for trial registration matches the email address of the [subscription contact](customers_portal.md#change-your-subscription-contact).
1. Select **Submit**.
The trial automatically synchronizes to your instance within 24 hours. After the trial has synchronized, [assign seats](subscription-add-ons.md#assign-gitlab-duo-seats) to users that you want to access GitLab Duo.
### On GitLab Dedicated
Reach out to your Sales contact if you are interested in a trial.

View File

@ -278,95 +278,6 @@ Prerequisites:
1. To filter by users assigned to a GitLab Duo seat, in the **Filter users** bar, select **Assigned seat**, then select **Yes**.
1. User list is filtered to only users assigned a GitLab Duo seat.
## Start GitLab Duo Pro trial
{{< details >}}
- Tier: Premium, Ultimate
- Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
{{< /details >}}
### On GitLab.com
Prerequisites:
- You must have the Owner role for a top-level group that has an active paid Premium subscription.
1. On the left sidebar, select **Search or go to** and find your group.
1. Select **Settings > Billing**.
1. Select **Start a free GitLab Duo Pro trial**.
1. Complete the fields.
1. Select **Continue**.
1. If prompted, select the group that the trial should be applied to.
1. Select **Activate my trial**.
1. [Assign seats](#assign-gitlab-duo-seats) to the users who need access.
### On GitLab Self-Managed and GitLab Dedicated
Prerequisites:
- You must have an active paid Premium subscription.
- You must have GitLab 16.8 or later and your instance must be able to [synchronize your subscription data](manage_subscription.md#subscription-data-synchronization) with GitLab.
- GitLab Duo requires GitLab 17.2 and later for the best user experience and results. Earlier versions might continue to work, however the experience may be degraded.
1. Go to the [GitLab Duo Pro trial page](https://about.gitlab.com/solutions/gitlab-duo-pro/sales/?toggle=gitlab-duo-pro).
1. Complete the fields.
- To find your subscription name:
1. In the Customers Portal, on the **Subscriptions & purchases** page, find the subscription you want to apply the trial to.
1. At the top of the page, the subscription name appears in a badge.
![Subscription name](img/subscription_name_v17_0.png)
- Ensure the email address you submit for trial registration matches the email address of the [subscription contact](customers_portal.md#change-your-subscription-contact).
1. Select **Submit**.
The trial automatically synchronizes to your instance within 24 hours. After the trial has synchronized, [assign seats](#assign-gitlab-duo-seats) to users that you want to access GitLab Duo.
## Start GitLab Duo Enterprise trial
{{< details >}}
- Tier: Ultimate
- Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
{{< /details >}}
### On GitLab.com
Prerequisites:
- You must have the Owner role for a top-level group that has an active paid Ultimate subscription.
1. On the left sidebar, select **Search or go to** and find your group.
1. Select **Settings > Billing**.
1. Select **Start a free GitLab Duo Enterprise trial**.
1. Complete the fields.
1. Select **Continue**.
1. If prompted, select the group that the trial should be applied to.
1. Select **Activate my trial**.
1. [Assign seats](#assign-gitlab-duo-seats) to the users who need access.
### On GitLab Self-Managed and GitLab Dedicated
Prerequisites:
- You must have an active paid Ultimate subscription.
- You must have GitLab 17.3 or later and your instance must be able to [synchronize your subscription data](manage_subscription.md#subscription-data-synchronization) with GitLab.
1. Go to the [GitLab Duo Enterprise trial page](https://about.gitlab.com/solutions/gitlab-duo-pro/sales/?toggle=gitlab-duo-enterprise).
1. Complete the fields.
- To find your subscription name:
1. In the Customers Portal, on the **Subscriptions & purchases** page, find the subscription you want to apply the trial to.
1. At the top of the page, the subscription name appears in a badge.
![Subscription name](img/subscription_name_v17_0.png)
- Ensure the email you submit for trial registration matches the email of the [subscription contact](customers_portal.md#change-your-subscription-contact).
1. Select **Submit**.
The trial automatically syncs to your instance within 24 hours. After the trial has synced, [assign seats](#assign-gitlab-duo-seats) to users that you want to access GitLab Duo.
## Automatic seat removal
GitLab Duo add-on seats are removed automatically to ensure only eligible users have access. This

View File

@ -74,9 +74,9 @@ You can [exclude](../exclusions.md) selected secrets from detection by secret pu
On GitLab Dedicated and GitLab Self-Managed instances, you must:
1. [Allow secret push protection on the entire instance](#allow-the-use-of-secret-push-protection-in-your-gitlab-instance).
1. [Enable secret push protection per project](#enable-secret-push-protection-in-a-project).
On GitLab.com, you must enable secret push protection per project.
1. Enable secret push protection. You can either:
- [Enable secret push protection in a specific project](#enable-secret-push-protection-in-a-project).
- Use the API to [enable secret push protection for all projects in group](../../../../api/group_security_settings.md#update-secret_push_protection_enabled-setting). Ultimate only.
### Allow the use of secret push protection in your GitLab instance

View File

@ -374,7 +374,8 @@ In some environments, you might need to prevent users from overriding the severi
When enabled, this feature:
- Hides the **Change severity** option from the action dropdown list in the vulnerability report.
- Prevents users from manually changing severity levels, ensuring consistent vulnerability scoring based on scanner results.
- Prevents users from manually changing severity levels through the UI, ensuring consistent vulnerability scoring based on scanner results.
- Disables all API endpoints related to the modification of vulnerability severities, maintaining consistency across all access methods.
To enable the `hide_vulnerability_severity_override` flag, see [enable and disable GitLab features deployed behind feature flags](../../../administration/feature_flags/_index.md).

View File

@ -17,7 +17,7 @@ title: GitLab Duo with Amazon Q
- Introduced as [beta](../../policy/development_stages_support.md#beta) in GitLab 17.7 [with a flag](../../administration/feature_flags/_index.md) named `amazon_q_integration`. Disabled by default.
- Feature flag `amazon_q_integration` removed in GitLab 17.8.
- Generally available in GitLab 17.11.
- Generally available with additional GitLab Duo feature support in GitLab 17.11.
{{< /history >}}
@ -30,6 +30,11 @@ GitLab Duo with Amazon Q cannot be combined with other GitLab Duo add-ons.
At Re:Invent 2024, Amazon announced the GitLab Duo with Amazon Q integration.
With this integration, you can automate tasks and increase productivity.
GitLab Duo with Amazon Q:
- Can perform a variety of tasks in issues and merge requests.
- [Includes many other GitLab Duo features](../gitlab_duo/feature_summary.md).
For a click-through demo, see [the GitLab Duo with Amazon Q Product Tour](https://gitlab.navattic.com/duo-with-q).
<!-- Demo published on 2025-04-23 -->
@ -148,26 +153,10 @@ To create test coverage for selected lines:
- If the merge request includes a test file, it is updated with the suggested tests.
- If the merge request does not include a test file, Amazon Q populates a comment with the suggested tests.
## Additional supported features
In addition, these features are available on GitLab Duo with Amazon Q.
| Feature | GitLab version |
|----------------------------------------------------------------------------------------------------------------------------------------|----------------|
| [GitLab Duo Chat](../gitlab_duo_chat/_index.md) | GitLab 17.11 and later |
| [Code Suggestions](../project/repository/code_suggestions/_index.md) | GitLab 17.11 and later |
| [Code Explanation](../project/repository/code_explain.md) | GitLab 17.11 and later |
| [Test Generation](../gitlab_duo_chat/examples.md#write-tests-in-the-ide) | GitLab 17.11 and later |
| [Refactor Code](../gitlab_duo_chat/examples.md#refactor-code-in-the-ide) | GitLab 17.11 and later |
| [Fix Code](../gitlab_duo_chat/examples.md#fix-code-in-the-ide) | GitLab 17.11 and later |
| [Root Cause Analysis](../gitlab_duo_chat/examples.md#troubleshoot-failed-cicd-jobs-with-root-cause-analysis) | GitLab 17.11 and later |
| [Discussion Summary](../discussions/_index.md#summarize-issue-discussions-with-duo-chat) | GitLab 17.11 and later |
| [Vulnerability Explanation](../application_security/vulnerabilities/_index.md#explaining-a-vulnerability) | GitLab 17.11 and later |
| [Vulnerability Resolution](../application_security/vulnerabilities/_index.md#vulnerability-resolution) | GitLab 17.11 and later |
## Related topics
- [Set up GitLab Duo with Amazon Q](setup.md)
- [View the full list of GitLab Duo with Amazon Q features](../gitlab_duo/feature_summary.md).
- [GitLab Duo authentication and authorization](../gitlab_duo/security.md)
- <i class="fa fa-youtube-play youtube" aria-hidden="true"></i> [GitLab Duo with Amazon Q - From idea to merge request](https://youtu.be/jxxzNst3jpo?si=QHO8JnPgMoFIllbL) <!-- Video published on 2025-04-17 -->
- <i class="fa fa-youtube-play youtube" aria-hidden="true"></i> [GitLab Duo with Amazon Q - Code review optimization](https://youtu.be/4gFIgyFc02Q?si=S-jO2M2jcXnukuN_) <!-- Video published on 2025-05-20 -->

View File

@ -10,6 +10,8 @@ module API
filename: API::NO_SLASH_URL_PART_REGEX
)
before { authenticate_non_get! }
helpers do
def find_uploads(parent)
uploads = Banzai::UploadsFinder.new(parent: parent).execute

View File

@ -45735,6 +45735,9 @@ msgstr ""
msgid "Pipelines|Go to the pipeline editor"
msgstr ""
msgid "Pipelines|How do I use inputs?"
msgstr ""
msgid "Pipelines|If you are unsure, ask a project maintainer to review it for you."
msgstr ""
@ -47993,6 +47996,9 @@ msgstr ""
msgid "Project %{code_open}%{source_project}%{code_close} has more restricted access settings than %{code_open}%{target_project}%{code_close}. To avoid exposing private changes, make sure you're submitting changes to the correct project."
msgstr ""
msgid "Project %{project_name} and framework %{framework_name} are not from same namespace."
msgstr ""
msgid "Project %{project_name} and framework are not from same namespace."
msgstr ""
@ -48731,6 +48737,9 @@ msgstr ""
msgid "ProjectSettings|Configure %{link_start}data sources%{link_end} to be used for your dashboards."
msgstr ""
msgid "ProjectSettings|Configure GitLab Duo features for this project."
msgstr ""
msgid "ProjectSettings|Configure your infrastructure."
msgstr ""
@ -57292,6 +57301,9 @@ msgstr ""
msgid "SecurityReports|Failed updating vulnerabilities with the following IDs: %{ids}"
msgstr ""
msgid "SecurityReports|Filter results..."
msgstr ""
msgid "SecurityReports|GitLab Duo (AI)"
msgstr ""
@ -58716,6 +58728,9 @@ msgstr ""
msgid "Show %{count} closed %{itemText}"
msgstr ""
msgid "Show %{count} more"
msgstr ""
msgid "Show Pipeline ID"
msgstr ""

View File

@ -12,7 +12,7 @@ module RuboCop
MESSAGE = 'A file with a top-level `describe` must end in _spec.rb.'
def on_top_level_example_group(node)
return if acceptable_file_path?(processed_source.buffer.name)
return if acceptable_file_path?(processed_source.file_path)
add_offense(node.send_node, message: MESSAGE)
end

View File

@ -68,7 +68,6 @@ spec/frontend/clusters/components/remove_cluster_confirmation_spec.js
spec/frontend/clusters_list/components/delete_agent_button_spec.js
spec/frontend/content_editor/components/wrappers/paragraph_spec.js
spec/frontend/design_management/components/design_notes/design_reply_form_spec.js
spec/frontend/design_management/components/design_overlay_spec.js
spec/frontend/design_management/pages/design/index_spec.js
spec/frontend/design_management/pages/index_spec.js
spec/frontend/editor/components/source_editor_toolbar_spec.js

Some files were not shown because too many files have changed in this diff Show More