Add latest changes from gitlab-org/gitlab@master
This commit is contained in:
parent
2b2854cf44
commit
8f9ac1e65a
|
|
@ -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',
|
||||
|
|
|
|||
|
|
@ -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'
|
||||
|
|
|
|||
|
|
@ -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'
|
||||
|
|
|
|||
|
|
@ -1,6 +0,0 @@
|
|||
---
|
||||
# Cop supports --autocorrect.
|
||||
InternalAffairs/ProcessedSourceBufferName:
|
||||
Details: grace period
|
||||
Exclude:
|
||||
- 'rubocop/cop/rspec/top_level_describe_path.rb'
|
||||
|
|
@ -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'
|
||||
|
|
|
|||
|
|
@ -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'
|
||||
|
|
|
|||
|
|
@ -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'
|
||||
|
|
|
|||
|
|
@ -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'
|
||||
|
|
|
|||
|
|
@ -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'
|
||||
|
|
|
|||
|
|
@ -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'
|
||||
|
|
|
|||
|
|
@ -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'
|
||||
|
|
|
|||
|
|
@ -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'
|
||||
|
|
|
|||
|
|
@ -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'
|
||||
|
|
|
|||
|
|
@ -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'
|
||||
|
|
|
|||
|
|
@ -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'
|
||||
|
|
|
|||
|
|
@ -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'
|
||||
|
|
|
|||
|
|
@ -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'
|
||||
|
|
|
|||
|
|
@ -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'
|
||||
|
|
|
|||
|
|
@ -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'
|
||||
|
|
|
|||
|
|
@ -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'
|
||||
|
|
|
|||
|
|
@ -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'
|
||||
|
|
|
|||
|
|
@ -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'
|
||||
|
|
|
|||
|
|
@ -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'
|
||||
|
|
|
|||
|
|
@ -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'
|
||||
|
|
|
|||
|
|
@ -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'
|
||||
|
|
|
|||
|
|
@ -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'
|
||||
|
|
|
|||
44
CHANGELOG.md
44
CHANGELOG.md
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -1 +1 @@
|
|||
3de4744135aca47419474d244258a5e285dad834
|
||||
458cfa195c1acba9a3b6e71960a202b493b59141
|
||||
|
|
|
|||
|
|
@ -1 +1 @@
|
|||
a5ee6c94ca31d1c3a84e9a1e6fad88fec35465e3
|
||||
d875b4c6753493e61ea11002395a4c15873c346b
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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',
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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) => {
|
||||
|
|
|
|||
|
|
@ -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'));
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
@ -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">
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
},
|
||||
},
|
||||
}),
|
||||
});
|
||||
}
|
||||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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 {
|
||||
|
|
|
|||
|
|
@ -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?
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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))
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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'
|
||||
|
||||
|
|
|
|||
|
|
@ -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" }
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
@ -29,6 +29,8 @@
|
|||
- 1
|
||||
- - admin_emails
|
||||
- 1
|
||||
- - ai_knowledge_graph_indexing_task
|
||||
- 1
|
||||
- - ai_repository_xray_scan_dependencies
|
||||
- 1
|
||||
- - analytics_code_review_metrics
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -0,0 +1 @@
|
|||
27c5af0e265115463f7b68cb0f6d7ddd44339143124dd6fec5e1fe006cb2bb61
|
||||
|
|
@ -0,0 +1 @@
|
|||
7e0313c9330bd538f16b70726f327cb0e1b2a681f89767c976dba3d632473463
|
||||
|
|
@ -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);
|
||||
|
||||
|
|
|
|||
|
|
@ -175,6 +175,7 @@ exceptions:
|
|||
- PGP
|
||||
- PHP
|
||||
- PID
|
||||
- PIN
|
||||
- PKCS
|
||||
- PMD
|
||||
- PNG
|
||||
|
|
|
|||
|
|
@ -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 |
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
||||

|
||||
- 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.
|
||||
|
||||

|
||||
- 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.
|
||||
|
|
@ -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.
|
||||
|
||||

|
||||
- 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.
|
||||
|
||||

|
||||
- 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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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).
|
||||
|
||||
|
|
|
|||
|
|
@ -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 -->
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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 ""
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
Loading…
Reference in New Issue