Add latest changes from gitlab-org/gitlab@master

This commit is contained in:
GitLab Bot
2025-05-19 09:18:41 +00:00
parent e21e6310fc
commit 34eaa0d993
14 changed files with 173 additions and 9 deletions

View File

@ -755,4 +755,4 @@ gem 'paper_trail', '~> 16.0', feature_category: :shared
gem "i18n_data", "~> 0.13.1", feature_category: :system_access
gem "gitlab-cloud-connector", "~> 1.11", require: 'gitlab/cloud_connector', feature_category: :cloud_connector
gem "gitlab-cloud-connector", "~> 1.13", require: 'gitlab/cloud_connector', feature_category: :cloud_connector

View File

@ -219,7 +219,7 @@
{"name":"gitaly","version":"17.8.4","platform":"ruby","checksum":"196d9735a83f8a7d396baa216b979eb0c801622d8b7573f90010338d5b0c7b4f"},
{"name":"gitlab","version":"4.19.0","platform":"ruby","checksum":"3f645e3e195dbc24f0834fbf83e8ccfb2056d8e9712b01a640aad418a6949679"},
{"name":"gitlab-chronic","version":"0.10.6","platform":"ruby","checksum":"a244d11a1396d2aac6ae9b2f326adf1605ec1ad20c29f06e8b672047d415a9ac"},
{"name":"gitlab-cloud-connector","version":"1.12.0","platform":"ruby","checksum":"b1eb7b0f5cb6633929681904d92771b387ec126b02319cd6cb62dd04bd5750af"},
{"name":"gitlab-cloud-connector","version":"1.13.0","platform":"ruby","checksum":"c2b0bcd1bc775208825a119ad0c8b8e2f6eac6c762e9514f8026d63ace9086e8"},
{"name":"gitlab-crystalball","version":"0.8.0","platform":"ruby","checksum":"e99dd0e3abe3416e91340004d45866ece6357f7e12702174ffc5a097763c2bc1"},
{"name":"gitlab-dangerfiles","version":"4.9.1","platform":"ruby","checksum":"296b19d8aca5e4da8d391234914a1c4dfedc29700ddbcd9c554b6ffaa7fdf1b2"},
{"name":"gitlab-experiment","version":"0.9.1","platform":"ruby","checksum":"f230ee742154805a755d5f2539dc44d93cdff08c5bbbb7656018d61f93d01f48"},

View File

@ -746,7 +746,7 @@ GEM
terminal-table (>= 1.5.1)
gitlab-chronic (0.10.6)
numerizer (~> 0.2)
gitlab-cloud-connector (1.12.0)
gitlab-cloud-connector (1.13.0)
activesupport (~> 7.0)
jwt (~> 2.9.3)
gitlab-crystalball (0.8.0)
@ -2159,7 +2159,7 @@ DEPENDENCIES
gitlab-active-context!
gitlab-backup-cli!
gitlab-chronic (~> 0.10.5)
gitlab-cloud-connector (~> 1.11)
gitlab-cloud-connector (~> 1.13)
gitlab-crystalball (~> 0.8.0)
gitlab-dangerfiles (~> 4.9.0)
gitlab-duo-workflow-service-client (~> 0.1)!

View File

@ -219,7 +219,7 @@
{"name":"gitaly","version":"17.8.4","platform":"ruby","checksum":"196d9735a83f8a7d396baa216b979eb0c801622d8b7573f90010338d5b0c7b4f"},
{"name":"gitlab","version":"4.19.0","platform":"ruby","checksum":"3f645e3e195dbc24f0834fbf83e8ccfb2056d8e9712b01a640aad418a6949679"},
{"name":"gitlab-chronic","version":"0.10.6","platform":"ruby","checksum":"a244d11a1396d2aac6ae9b2f326adf1605ec1ad20c29f06e8b672047d415a9ac"},
{"name":"gitlab-cloud-connector","version":"1.12.0","platform":"ruby","checksum":"b1eb7b0f5cb6633929681904d92771b387ec126b02319cd6cb62dd04bd5750af"},
{"name":"gitlab-cloud-connector","version":"1.13.0","platform":"ruby","checksum":"c2b0bcd1bc775208825a119ad0c8b8e2f6eac6c762e9514f8026d63ace9086e8"},
{"name":"gitlab-crystalball","version":"0.8.0","platform":"ruby","checksum":"e99dd0e3abe3416e91340004d45866ece6357f7e12702174ffc5a097763c2bc1"},
{"name":"gitlab-dangerfiles","version":"4.9.1","platform":"ruby","checksum":"296b19d8aca5e4da8d391234914a1c4dfedc29700ddbcd9c554b6ffaa7fdf1b2"},
{"name":"gitlab-experiment","version":"0.9.1","platform":"ruby","checksum":"f230ee742154805a755d5f2539dc44d93cdff08c5bbbb7656018d61f93d01f48"},

View File

@ -746,7 +746,7 @@ GEM
terminal-table (>= 1.5.1)
gitlab-chronic (0.10.6)
numerizer (~> 0.2)
gitlab-cloud-connector (1.12.0)
gitlab-cloud-connector (1.13.0)
activesupport (~> 7.0)
jwt (~> 2.9.3)
gitlab-crystalball (0.8.0)
@ -2159,7 +2159,7 @@ DEPENDENCIES
gitlab-active-context!
gitlab-backup-cli!
gitlab-chronic (~> 0.10.5)
gitlab-cloud-connector (~> 1.11)
gitlab-cloud-connector (~> 1.13)
gitlab-crystalball (~> 0.8.0)
gitlab-dangerfiles (~> 4.9.0)
gitlab-duo-workflow-service-client (~> 0.1)!

View File

@ -50,6 +50,13 @@ module Resolvers
required: false,
description: 'Date when the group was marked for deletion.'
argument :active, GraphQL::Types::Boolean,
required: false,
default_value: nil,
description: 'When `nil` (default value), returns all groups. ' \
'When `true`, returns only groups that are not pending deletion. ' \
'When `false`, only returns groups that are pending deletion.'
private
def resolve_groups(parent_path: nil, **args)

View File

@ -8,6 +8,8 @@ module Types
implements ::Types::Namespaces::GroupInterface
connection_type_class Types::CountableConnectionType
authorize :read_group
expose_permissions Types::PermissionTypes::Group

View File

@ -0,0 +1,10 @@
# frozen_string_literal: true
class DropResourceLabelEventsReferenceHtml < Gitlab::Database::Migration[2.3]
milestone '18.1'
def change
remove_column :resource_label_events, :reference_html, :text
remove_column :resource_label_events, :cached_markdown_version, :integer
end
end

View File

@ -0,0 +1 @@
c6922683ddd72f3983c90f979e2ae114ee204d873576dc7efe666c426e55c654

View File

@ -22079,9 +22079,7 @@ CREATE TABLE resource_label_events (
label_id bigint,
user_id bigint,
created_at timestamp with time zone NOT NULL,
cached_markdown_version integer,
reference text,
reference_html text,
imported_from smallint DEFAULT 0 NOT NULL
);

View File

@ -747,6 +747,7 @@ four standard [pagination arguments](#pagination-arguments):
| Name | Type | Description |
| ---- | ---- | ----------- |
| <a id="querygroupsactive"></a>`active` | [`Boolean`](#boolean) | When `nil` (default value), returns all groups. When `true`, returns only groups that are not pending deletion. When `false`, only returns groups that are pending deletion. |
| <a id="querygroupsallavailable"></a>`allAvailable` | [`Boolean`](#boolean) | When `true`, returns all accessible groups. When `false`, returns only groups where the user is a member. Unauthenticated requests always return all public groups. The `owned_only` argument takes precedence. |
| <a id="querygroupsids"></a>`ids` | [`[ID!]`](#id) | Filter groups by IDs. |
| <a id="querygroupsmarkedfordeletionon"></a>`markedForDeletionOn` | [`Date`](#date) | Date when the group was marked for deletion. |
@ -2165,6 +2166,34 @@ Input type: `AiFeatureSettingUpdateInput`
| <a id="mutationaifeaturesettingupdateclientmutationid"></a>`clientMutationId` | [`String`](#string) | A unique identifier for the client performing the mutation. |
| <a id="mutationaifeaturesettingupdateerrors"></a>`errors` | [`[String!]!`](#string) | Errors encountered during the mutation. |
### `Mutation.aiModelSelectionNamespaceUpdate`
Updates or creates settings for AI features for a namespace.
{{< details >}}
**Introduced** in GitLab 18.1.
**Status**: Experiment.
{{< /details >}}
Input type: `AiModelSelectionNamespaceUpdateInput`
#### Arguments
| Name | Type | Description |
| ---- | ---- | ----------- |
| <a id="mutationaimodelselectionnamespaceupdateclientmutationid"></a>`clientMutationId` | [`String`](#string) | A unique identifier for the client performing the mutation. |
| <a id="mutationaimodelselectionnamespaceupdatefeatures"></a>`features` | [`[AiModelSelectionFeatures!]!`](#aimodelselectionfeatures) | Array of AI features being configured (for single or batch update). |
| <a id="mutationaimodelselectionnamespaceupdategroupid"></a>`groupId` | [`GroupID!`](#groupid) | Group for the model selection. |
| <a id="mutationaimodelselectionnamespaceupdateofferedmodelref"></a>`offeredModelRef` | [`String!`](#string) | Identifier of the selected model for the feature. |
#### Fields
| Name | Type | Description |
| ---- | ---- | ----------- |
| <a id="mutationaimodelselectionnamespaceupdateaifeaturesettings"></a>`aiFeatureSettings` {{< icon name="warning-solid" >}} | [`[AiModelSelectionNamespaceFeatureSetting!]!`](#aimodelselectionnamespacefeaturesetting) | **Deprecated:** **Status**: Experiment. Introduced in GitLab 18.1. |
| <a id="mutationaimodelselectionnamespaceupdateclientmutationid"></a>`clientMutationId` | [`String`](#string) | A unique identifier for the client performing the mutation. |
| <a id="mutationaimodelselectionnamespaceupdateerrors"></a>`errors` | [`[String!]!`](#string) | Errors encountered during the mutation. |
### `Mutation.aiSelfHostedModelConnectionCheck`
Checks if the AI Gateway can establish a connection with the given model configuration.
@ -16389,6 +16418,7 @@ The connection type for [`Group`](#group).
| Name | Type | Description |
| ---- | ---- | ----------- |
| <a id="groupconnectioncount"></a>`count` | [`Int!`](#int) | Total count of collection. |
| <a id="groupconnectionedges"></a>`edges` | [`[GroupEdge]`](#groupedge) | A list of edges. |
| <a id="groupconnectionnodes"></a>`nodes` | [`[Group]`](#group) | A list of nodes. |
| <a id="groupconnectionpageinfo"></a>`pageInfo` | [`PageInfo!`](#pageinfo) | Information to aid in pagination. |
@ -21211,6 +21241,33 @@ Returns [`codeSuggestionMetrics`](#codesuggestionmetrics).
| ---- | ---- | ----------- |
| <a id="aimetricscodesuggestionslanguages"></a>`languages` | [`[String!]`](#string) | Filter code suggestion metrics by one or more languages. |
### `AiModelSelectionNamespaceFeatureSetting`
Model Selection feature setting for namespaces.
#### Fields
| Name | Type | Description |
| ---- | ---- | ----------- |
| <a id="aimodelselectionnamespacefeaturesettingdefaultmodel"></a>`defaultModel` | [`AiModelSelectionOfferedModel`](#aimodelselectionofferedmodel) | LLMs Compatible with the feature. |
| <a id="aimodelselectionnamespacefeaturesettingfeature"></a>`feature` | [`String!`](#string) | Identifier for the AI feature. |
| <a id="aimodelselectionnamespacefeaturesettingmainfeature"></a>`mainFeature` | [`String`](#string) | Displayed name of the main feature. |
| <a id="aimodelselectionnamespacefeaturesettingnamespace"></a>`namespace` | [`Group!`](#group) | Namespace that the feature setting is set for. |
| <a id="aimodelselectionnamespacefeaturesettingselectablemodels"></a>`selectableModels` | [`[AiModelSelectionOfferedModel!]!`](#aimodelselectionofferedmodel) | LLMs Compatible with the feature. |
| <a id="aimodelselectionnamespacefeaturesettingselectedmodel"></a>`selectedModel` | [`AiModelSelectionOfferedModel`](#aimodelselectionofferedmodel) | Identifier of the current model selected. |
| <a id="aimodelselectionnamespacefeaturesettingtitle"></a>`title` | [`String`](#string) | Displayed AI feature name. |
### `AiModelSelectionOfferedModel`
Model offered for Model Selection.
#### Fields
| Name | Type | Description |
| ---- | ---- | ----------- |
| <a id="aimodelselectionofferedmodelname"></a>`name` | [`String!`](#string) | Humanized name for the offered model, e.g "Chat GPT 4o". |
| <a id="aimodelselectionofferedmodelref"></a>`ref` | [`String!`](#string) | Identifier for the offered model. |
### `AiSelfHostedModel`
Self-hosted LLM servers.
@ -33973,6 +34030,7 @@ four standard [pagination arguments](#pagination-arguments):
| Name | Type | Description |
| ---- | ---- | ----------- |
| <a id="organizationgroupsactive"></a>`active` | [`Boolean`](#boolean) | When `nil` (default value), returns all groups. When `true`, returns only groups that are not pending deletion. When `false`, only returns groups that are pending deletion. |
| <a id="organizationgroupsallavailable"></a>`allAvailable` | [`Boolean`](#boolean) | When `true`, returns all accessible groups. When `false`, returns only groups where the user is a member. Unauthenticated requests always return all public groups. The `owned_only` argument takes precedence. |
| <a id="organizationgroupsids"></a>`ids` | [`[ID!]`](#id) | Filter groups by IDs. |
| <a id="organizationgroupsmarkedfordeletionon"></a>`markedForDeletionOn` | [`Date`](#date) | Date when the group was marked for deletion. |
@ -42758,6 +42816,26 @@ Types of messages returned from AI features.
| ----- | ----------- |
| <a id="aimessagetypetool"></a>`TOOL` | Tool selection message. |
### `AiModelSelectionFeatures`
AI features that can be configured through the Model Selection feature settings.
| Value | Description |
| ----- | ----------- |
| <a id="aimodelselectionfeaturescode_completions"></a>`CODE_COMPLETIONS` | Code completion feature setting. |
| <a id="aimodelselectionfeaturescode_generations"></a>`CODE_GENERATIONS` | Code generation feature setting. |
| <a id="aimodelselectionfeaturesduo_chat"></a>`DUO_CHAT` | Duo Chat feature setting. |
| <a id="aimodelselectionfeaturesduo_chat_explain_code"></a>`DUO_CHAT_EXPLAIN_CODE` | Duo chat explain code feature setting. |
| <a id="aimodelselectionfeaturesduo_chat_explain_vulnerability"></a>`DUO_CHAT_EXPLAIN_VULNERABILITY` | Duo chat explain vulnerability feature setting. |
| <a id="aimodelselectionfeaturesduo_chat_fix_code"></a>`DUO_CHAT_FIX_CODE` | Duo chat fix code feature setting. |
| <a id="aimodelselectionfeaturesduo_chat_refactor_code"></a>`DUO_CHAT_REFACTOR_CODE` | Duo chat refactor code feature setting. |
| <a id="aimodelselectionfeaturesduo_chat_troubleshoot_job"></a>`DUO_CHAT_TROUBLESHOOT_JOB` | Duo chat troubleshoot job feature setting. |
| <a id="aimodelselectionfeaturesduo_chat_write_tests"></a>`DUO_CHAT_WRITE_TESTS` | Duo chat write test feature setting. |
| <a id="aimodelselectionfeaturesgenerate_commit_message"></a>`GENERATE_COMMIT_MESSAGE` | Generate commit message feature setting. |
| <a id="aimodelselectionfeaturesresolve_vulnerability"></a>`RESOLVE_VULNERABILITY` | Resolve vulnerability feature setting. |
| <a id="aimodelselectionfeaturessummarize_new_merge_request"></a>`SUMMARIZE_NEW_MERGE_REQUEST` | Summarize new merge request feature setting. |
| <a id="aimodelselectionfeaturessummarize_review"></a>`SUMMARIZE_REVIEW` | Summarize review feature setting. |
### `AiSelfHostedModelReleaseState`
GitLab release state of the model.

View File

@ -99,6 +99,11 @@ Amazon Q can analyze your merge request and suggest improvements to your code.
It can find things like security issues, quality issues, inefficiencies,
and other errors.
[You can have Amazon Q review automatically](setup.md#enter-the-arn-in-gitlab-and-enable-amazon-q)
when you open or reopen a merge request, or you can manually start a review.
To manually start:
1. Open your merge request.
1. On the **Overview** tab, in a comment, type `/q review`.
1. Select **Comment**.

View File

@ -39466,6 +39466,9 @@ msgstr ""
msgid "Model registry"
msgstr ""
msgid "Model selection is only available for top-level namespaces."
msgstr ""
msgid "Model version not found"
msgstr ""

View File

@ -16,6 +16,7 @@ RSpec.describe 'searching groups', :with_license, feature_category: :groups_and_
nodes {
#{all_graphql_fields_for('Group', excluded: %w[runners ciQueueingHistory])}
}
count
FIELDS
end
@ -31,6 +32,12 @@ RSpec.describe 'searching groups', :with_license, feature_category: :groups_and_
subject { post_graphql(query, current_user: user) }
it 'is countable' do
subject
expect(graphql_data_at(:groups, :count)).to eq(1)
end
describe "Query groups(search)" do
let(:groups) { graphql_data_at(:groups, :nodes) }
let(:names) { groups.map { |group| group["name"] } } # rubocop: disable Rails/Pluck
@ -96,6 +103,59 @@ RSpec.describe 'searching groups', :with_license, feature_category: :groups_and_
end
end
describe 'active argument' do
let_it_be(:group_pending_deletion) { create(:group_with_deletion_schedule, owners: user) }
context 'when active argument is nil' do
it 'returns all groups' do
subject
expect(graphql_data_at(:groups,
:nodes)).to match_array([a_graphql_entity_for(public_group), a_graphql_entity_for(group_pending_deletion)])
end
end
context 'when active argument is true' do
let(:query) do
<<~QUERY
query {
groups(active: true) {
nodes {
id
}
}
}
QUERY
end
it 'returns only groups that are not pending deletion' do
subject
expect(graphql_data_at(:groups, :nodes)).to match_array([a_graphql_entity_for(public_group)])
end
end
context 'when active argument is false' do
let(:query) do
<<~QUERY
query {
groups(active: false) {
nodes {
id
}
}
}
QUERY
end
it 'returns only groups that are pending deletion' do
subject
expect(graphql_data_at(:groups, :nodes)).to match_array([a_graphql_entity_for(group_pending_deletion)])
end
end
end
describe 'group sorting' do
let_it_be(:public_group2) { create(:group, :public, name: 'Group C') }
let_it_be(:public_group3) { create(:group, :public, name: 'Group D') }