Add latest changes from gitlab-org/gitlab@master

This commit is contained in:
GitLab Bot
2025-07-02 09:12:47 +00:00
parent 59706a916d
commit 4743299a37
16 changed files with 94 additions and 19 deletions

View File

@ -162,7 +162,7 @@
{"name":"faraday","version":"2.13.1","platform":"ruby","checksum":"cc531eb5467e7d74d4517630fa96f1a7003647cbf20a9a3e067d098941217b75"},
{"name":"faraday-follow_redirects","version":"0.3.0","platform":"ruby","checksum":"d92d975635e2c7fe525dd494fcd4b9bb7f0a4a0ec0d5f4c15c729530fdb807f9"},
{"name":"faraday-http-cache","version":"2.5.0","platform":"ruby","checksum":"64b7366d66e508e1c3dd855ebb20ce9da429330e412a23d9ebbc0a7a7b227463"},
{"name":"faraday-multipart","version":"1.1.0","platform":"ruby","checksum":"856b0f1c7316a4d6c052dd2eef5c42f887d56d93a171fe8880da1af064ca0751"},
{"name":"faraday-multipart","version":"1.1.1","platform":"ruby","checksum":"77a18ff40149030fd1aef55bb4fc7a67ce46419a8a3fcd010e28c2526e8d8903"},
{"name":"faraday-net_http","version":"3.1.0","platform":"ruby","checksum":"1627be414960d0131691190ff524506ba6607402a50fb6eccda9e64ca60f859f"},
{"name":"faraday-net_http_persistent","version":"2.1.0","platform":"ruby","checksum":"b41720b13f56dae77114d9de54baef2d76d0b06ab40d695b2a98e254b56ade0b"},
{"name":"faraday-retry","version":"2.2.1","platform":"ruby","checksum":"4146fed14549c0580bf14591fca419a40717de0dd24f267a8ec2d9a728677608"},
@ -219,7 +219,7 @@
{"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.20.0","platform":"ruby","checksum":"259a703e2c635128a1d259d90f2b38edfaefd0b812332b363ed9cdca3200aa45"},
{"name":"gitlab-crystalball","version":"1.1.0","platform":"ruby","checksum":"bd314742a89cad8cb858fec41fc5282ff64ccf262cffa1d5b118f053c5c382a8"},
{"name":"gitlab-crystalball","version":"1.1.1","platform":"ruby","checksum":"0464a113b0809e0e9fa7c0100bb6634fe38465af95aa04efa49541d64250b8ed"},
{"name":"gitlab-dangerfiles","version":"4.9.2","platform":"ruby","checksum":"d5c050f685d8720f6e70191a7d1216854d860dbdea5b455f87abe7542e005798"},
{"name":"gitlab-experiment","version":"0.9.1","platform":"ruby","checksum":"f230ee742154805a755d5f2539dc44d93cdff08c5bbbb7656018d61f93d01f48"},
{"name":"gitlab-fog-azure-rm","version":"2.2.0","platform":"ruby","checksum":"31aa7c2170f57874053144e7f716ec9e15f32e71ffbd2c56753dce46e2e78ba9"},

View File

@ -629,7 +629,7 @@ GEM
faraday (>= 1, < 3)
faraday-http-cache (2.5.0)
faraday (>= 0.8)
faraday-multipart (1.1.0)
faraday-multipart (1.1.1)
multipart-post (~> 2.0)
faraday-net_http (3.1.0)
net-http
@ -747,7 +747,7 @@ GEM
gitlab-cloud-connector (1.20.0)
activesupport (~> 7.0)
jwt (~> 2.9.3)
gitlab-crystalball (1.1.0)
gitlab-crystalball (1.1.1)
git (< 4)
ostruct (< 1)
gitlab-dangerfiles (4.9.2)

View File

@ -162,7 +162,7 @@
{"name":"faraday","version":"2.13.1","platform":"ruby","checksum":"cc531eb5467e7d74d4517630fa96f1a7003647cbf20a9a3e067d098941217b75"},
{"name":"faraday-follow_redirects","version":"0.3.0","platform":"ruby","checksum":"d92d975635e2c7fe525dd494fcd4b9bb7f0a4a0ec0d5f4c15c729530fdb807f9"},
{"name":"faraday-http-cache","version":"2.5.0","platform":"ruby","checksum":"64b7366d66e508e1c3dd855ebb20ce9da429330e412a23d9ebbc0a7a7b227463"},
{"name":"faraday-multipart","version":"1.1.0","platform":"ruby","checksum":"856b0f1c7316a4d6c052dd2eef5c42f887d56d93a171fe8880da1af064ca0751"},
{"name":"faraday-multipart","version":"1.1.1","platform":"ruby","checksum":"77a18ff40149030fd1aef55bb4fc7a67ce46419a8a3fcd010e28c2526e8d8903"},
{"name":"faraday-net_http","version":"3.1.0","platform":"ruby","checksum":"1627be414960d0131691190ff524506ba6607402a50fb6eccda9e64ca60f859f"},
{"name":"faraday-net_http_persistent","version":"2.1.0","platform":"ruby","checksum":"b41720b13f56dae77114d9de54baef2d76d0b06ab40d695b2a98e254b56ade0b"},
{"name":"faraday-retry","version":"2.2.1","platform":"ruby","checksum":"4146fed14549c0580bf14591fca419a40717de0dd24f267a8ec2d9a728677608"},
@ -219,7 +219,7 @@
{"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.20.0","platform":"ruby","checksum":"259a703e2c635128a1d259d90f2b38edfaefd0b812332b363ed9cdca3200aa45"},
{"name":"gitlab-crystalball","version":"1.1.0","platform":"ruby","checksum":"bd314742a89cad8cb858fec41fc5282ff64ccf262cffa1d5b118f053c5c382a8"},
{"name":"gitlab-crystalball","version":"1.1.1","platform":"ruby","checksum":"0464a113b0809e0e9fa7c0100bb6634fe38465af95aa04efa49541d64250b8ed"},
{"name":"gitlab-dangerfiles","version":"4.9.2","platform":"ruby","checksum":"d5c050f685d8720f6e70191a7d1216854d860dbdea5b455f87abe7542e005798"},
{"name":"gitlab-experiment","version":"0.9.1","platform":"ruby","checksum":"f230ee742154805a755d5f2539dc44d93cdff08c5bbbb7656018d61f93d01f48"},
{"name":"gitlab-fog-azure-rm","version":"2.2.0","platform":"ruby","checksum":"31aa7c2170f57874053144e7f716ec9e15f32e71ffbd2c56753dce46e2e78ba9"},

View File

@ -623,7 +623,7 @@ GEM
faraday (>= 1, < 3)
faraday-http-cache (2.5.0)
faraday (>= 0.8)
faraday-multipart (1.1.0)
faraday-multipart (1.1.1)
multipart-post (~> 2.0)
faraday-net_http (3.1.0)
net-http
@ -741,7 +741,7 @@ GEM
gitlab-cloud-connector (1.20.0)
activesupport (~> 7.0)
jwt (~> 2.9.3)
gitlab-crystalball (1.1.0)
gitlab-crystalball (1.1.1)
git (< 4)
ostruct (< 1)
gitlab-dangerfiles (4.9.2)

View File

@ -21,7 +21,8 @@ module ResolvesGroups
dependency_proxy_setting: [:dependency_proxy_setting],
analyzer_statuses: [:analyzer_group_statuses],
marked_for_deletion: [:deletion_schedule],
marked_for_deletion_on: [:deletion_schedule]
marked_for_deletion_on: [:deletion_schedule],
is_self_deletion_scheduled: [:deletion_schedule]
}.freeze
def resolve_with_lookahead(...)

View File

@ -382,6 +382,12 @@ module Types
method: :self_deletion_in_progress?,
experiment: { milestone: '18.2' }
field :is_self_deletion_scheduled, GraphQL::Types::Boolean,
null: false,
description: 'Indicates if group deletion is scheduled.',
method: :self_deletion_scheduled?,
experiment: { milestone: '18.2' }
def label(title:)
BatchLoader::GraphQL.for(title).batch(key: group) do |titles, loader, args|
LabelsFinder

View File

@ -98,6 +98,9 @@ class GroupChildEntity < Grape::Entity
# For both group and project
expose :self_deletion_in_progress?, as: :is_self_deletion_in_progress
# For both group and project
expose :self_deletion_scheduled?, as: :is_self_deletion_scheduled
private
def access_group_counts?(group)

View File

@ -0,0 +1,22 @@
# frozen_string_literal: true
class FinalizeBackfillOnboardingStatusRegistrationObjective < Gitlab::Database::Migration[2.3]
milestone '18.2'
disable_ddl_transaction!
restrict_gitlab_migration gitlab_schema: :gitlab_main
def up
ensure_batched_background_migration_is_finished(
job_class_name: 'BackfillOnboardingStatusRegistrationObjective',
table_name: :user_details,
column_name: :id,
job_arguments: [],
finalize: true
)
end
def down
# no-op
end
end

View File

@ -0,0 +1 @@
5e9ea448da51802af75ba821eca156251feba56b43ba69958661e5b73de8e914

View File

@ -12191,6 +12191,31 @@ Input type: `UpdatePackagesProtectionRuleInput`
| <a id="mutationupdatepackagesprotectionruleerrors"></a>`errors` | [`[String!]!`](#string) | Errors encountered during the mutation. |
| <a id="mutationupdatepackagesprotectionrulepackageprotectionrule"></a>`packageProtectionRule` | [`PackagesProtectionRule`](#packagesprotectionrule) | Packages protection rule after mutation. |
### `Mutation.updateProjectComplianceViolation`
{{< details >}}
**Introduced** in GitLab 18.2.
**Status**: Experiment.
{{< /details >}}
Input type: `UpdateProjectComplianceViolationInput`
#### Arguments
| Name | Type | Description |
| ---- | ---- | ----------- |
| <a id="mutationupdateprojectcomplianceviolationclientmutationid"></a>`clientMutationId` | [`String`](#string) | A unique identifier for the client performing the mutation. |
| <a id="mutationupdateprojectcomplianceviolationid"></a>`id` | [`ComplianceManagementProjectsComplianceViolationID!`](#compliancemanagementprojectscomplianceviolationid) | Global ID of the project compliance violation to update. |
| <a id="mutationupdateprojectcomplianceviolationstatus"></a>`status` | [`ComplianceViolationStatus!`](#complianceviolationstatus) | New status for the project compliance violation. |
#### Fields
| Name | Type | Description |
| ---- | ---- | ----------- |
| <a id="mutationupdateprojectcomplianceviolationclientmutationid"></a>`clientMutationId` | [`String`](#string) | A unique identifier for the client performing the mutation. |
| <a id="mutationupdateprojectcomplianceviolationcomplianceviolation"></a>`complianceViolation` | [`ProjectComplianceViolation`](#projectcomplianceviolation) | Compliance violation after status update. |
| <a id="mutationupdateprojectcomplianceviolationerrors"></a>`errors` | [`[String!]!`](#string) | Errors encountered during the mutation. |
### `Mutation.updateRequirement`
Input type: `UpdateRequirementInput`
@ -28478,6 +28503,7 @@ GPG signature for a signed commit.
| <a id="groupid"></a>`id` | [`ID`](#id) | ID of the group. |
| <a id="groupislinkedtosubscription"></a>`isLinkedToSubscription` | [`Boolean`](#boolean) | Indicates if group is linked to a subscription. |
| <a id="groupisselfdeletioninprogress"></a>`isSelfDeletionInProgress` {{< icon name="warning-solid" >}} | [`Boolean!`](#boolean) | **Introduced** in GitLab 18.2. **Status**: Experiment. Indicates if group deletion is in progress. |
| <a id="groupisselfdeletionscheduled"></a>`isSelfDeletionScheduled` {{< icon name="warning-solid" >}} | [`Boolean!`](#boolean) | **Introduced** in GitLab 18.2. **Status**: Experiment. Indicates if group deletion is scheduled. |
| <a id="grouplfsenabled"></a>`lfsEnabled` | [`Boolean`](#boolean) | Indicates if Large File Storage (LFS) is enabled for namespace. |
| <a id="grouplicensedfeatures"></a>`licensedFeatures` {{< icon name="warning-solid" >}} | [`NamespaceLicensedFeatures!`](#namespacelicensedfeatures) | **Introduced** in GitLab 18.1. **Status**: Experiment. Licensed features available on the namespace. |
| <a id="grouplifecycles"></a>`lifecycles` {{< icon name="warning-solid" >}} | [`WorkItemLifecycleConnection`](#workitemlifecycleconnection) | **Introduced** in GitLab 18.1. **Status**: Experiment. Lifecycles of work items available to the namespace. |

View File

@ -15,7 +15,7 @@ Below are available schemas related to Cells and Organizations:
| ------ | ----------- |
| `gitlab_main` (deprecated) | This is being replaced with `gitlab_main_cell`, for the purpose of building the [Cells](https://handbook.gitlab.com/handbook/engineering/architecture/design-documents/cells/) architecture. |
| `gitlab_main_cell`| To be renamed to `gitlab_main_org`. Use for all tables in the `main:` database that are for an Organization. For example, `projects` and `groups` |
| `gitlab_main_cell_setting` | All tables in the `main:` database related to cell settings. For example, `application_settings`. |
| `gitlab_main_cell_setting` | All tables in the `main:` database related to cell settings. For example, `application_settings`. These cell-local tables should not have any foreign key references from/to organization tables. |
| `gitlab_main_clusterwide` (deprecated) | All tables in the `main:` database where all rows, or a subset of rows needs to be present across the cluster, in the [Cells](https://handbook.gitlab.com/handbook/engineering/architecture/design-documents/cells/) architecture. For example, `plans`. For the [Cells 1.0 architecture](https://handbook.gitlab.com/handbook/engineering/architecture/design-documents/cells/iterations/cells-1.0/), there are no real clusterwide tables as each cell will have its own database. In effect, these tables will still be stored locally in each cell. |
| `gitlab_main_cell_local` | For tables in the `main:` database that are related to features that is distinct for each cell. For example, `zoekt_nodes`, or `shards`. These cell-local tables should not have any foreign key references from/to organization tables. |
| `gitlab_ci` | Use for all tables in the `ci:` database that are for an Organization. For example, `ci_pipelines` and `ci_builds` |

View File

@ -65,7 +65,7 @@ Follow these guidelines when you document GitLab Duo features.
When documenting a GitLab Duo experiment:
- On the [top-level GitLab Duo page](../../user/gitlab_duo/feature_summary.md):
- On the [GitLab Duo feature summary page](../../user/gitlab_duo/feature_summary.md):
- Add a row to the table.
- Add the feature to an area at the top of the page, near other features that are available
during a similar stage of the software development lifecycle.
@ -80,7 +80,7 @@ When documenting a GitLab Duo experiment:
When a GitLab Duo experiment moves to beta:
- On the [top-level GitLab Duo page](../../user/gitlab_duo/feature_summary.md),
- On the [GitLab Duo feature summary page](../../user/gitlab_duo/feature_summary.md),
update the row in the table.
- Make sure you update the history and status values, including any
[add-on information](styleguide/availability_details.md#add-ons).
@ -92,8 +92,8 @@ When a GitLab Duo experiment moves to beta:
When a GitLab Duo feature becomes generally available:
- On the [top-level GitLab Duo page](../../user/gitlab_duo/feature_summary.md),
update the row in the table.
- On the [GitLab Duo feature summary page](../../user/gitlab_duo/feature_summary.md),
move the feature to the GA table.
- Make sure you update the history and status values, including any
[add-on information](styleguide/availability_details.md#add-ons).
- For features that are part of the [Early Access Program](../../policy/early_access_program/_index.md#add-a-feature-to-the-program)

View File

@ -216,6 +216,7 @@ Audit event types belong to the following product categories.
| [`update_approval_rules`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/89939) | Updating a merge approval rule | {{< icon name="check-circle" >}} Yes | GitLab [15.2](https://gitlab.com/gitlab-org/gitlab/-/issues/363092) | Project |
| [`update_compliance_framework`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/74292) | A compliance framework is updated | {{< icon name="check-circle" >}} Yes | GitLab [14.6](https://gitlab.com/gitlab-org/gitlab/-/issues/340649) | Group |
| [`update_compliance_requirement`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/169485) | A compliance framework requirement is updated. | {{< icon name="check-circle" >}} Yes | GitLab [17.7](https://gitlab.com/gitlab-org/gitlab/-/issues/470695) | Group |
| [`update_project_compliance_violation`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/195768) | Project compliance violation is updated | {{< icon name="check-circle" >}} Yes | GitLab [18.2](https://gitlab.com/gitlab-org/gitlab/-/issues/542343) | Project |
| [`update_status_check`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/84624) | An external status check is updated | {{< icon name="check-circle" >}} Yes | GitLab [15.9](https://gitlab.com/gitlab-org/gitlab/-/issues/355805) | Project |
| [`updated_compliance_requirement_control`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/177557) | Compliance requirement control updated. | {{< icon name="check-circle" >}} Yes | GitLab [17.9](https://gitlab.com/gitlab-org/gitlab/-/issues/512381) | Group |

View File

@ -4401,9 +4401,6 @@ msgstr ""
msgid "AdminSelfHostedModels|Assign a model to enable this feature"
msgstr ""
msgid "AdminSelfHostedModels|Assign a model to the %{subFeatureTitle} sub-feature before applying to all"
msgstr ""
msgid "AdminSelfHostedModels|Create self-hosted model"
msgstr ""
@ -56584,7 +56581,7 @@ msgstr ""
msgid "SecurityOrchestration|Run a %{scannerStart}%{scanner}%{scannerEnd} scan with the following options:"
msgstr ""
msgid "SecurityOrchestration|Runs comprehensive scans during release processes and when merging to main/production branches"
msgid "SecurityOrchestration|Runs comprehensive scans for `release/*` branches and when merging to main/production branches"
msgstr ""
msgid "SecurityOrchestration|Runs scans on a schedule for maintenance and continuous monitoring of protected branches"

View File

@ -310,6 +310,7 @@ RSpec.describe GitlabSchema.types['Group'], feature_category: :groups_and_projec
markedForDeletion
markedForDeletionOn
permanentDeletionDate
isSelfDeletionScheduled
}
}
)
@ -324,7 +325,8 @@ RSpec.describe GitlabSchema.types['Group'], feature_category: :groups_and_projec
{
marked_for_deletion: result.dig('data', 'group', 'markedForDeletion'),
marked_for_deletion_on: result.dig('data', 'group', 'markedForDeletionOn'),
permanent_deletion_date: result.dig('data', 'group', 'permanentDeletionDate')
permanent_deletion_date: result.dig('data', 'group', 'permanentDeletionDate'),
is_self_deletion_scheduled: result.dig('data', 'group', 'isSelfDeletionScheduled')
}
end
@ -333,6 +335,10 @@ RSpec.describe GitlabSchema.types['Group'], feature_category: :groups_and_projec
expect(group_data[:marked_for_deletion]).to be true
end
it 'is_self_deletion_scheduled returns true' do
expect(group_data[:is_self_deletion_scheduled]).to be true
end
it 'marked_for_deletion_on returns correct date' do
expect(Time.zone.parse(group_data[:marked_for_deletion_on]))
.to eq(pending_delete_group.marked_for_deletion_on.iso8601)
@ -353,6 +359,10 @@ RSpec.describe GitlabSchema.types['Group'], feature_category: :groups_and_projec
expect(group_data[:marked_for_deletion]).to be true
end
it 'is_self_deletion_scheduled returns false' do
expect(group_data[:is_self_deletion_scheduled]).to be false
end
it 'marked_for_deletion_on returns nil' do
expect(group_data[:marked_for_deletion_on]).to be_nil
end

View File

@ -147,6 +147,14 @@ RSpec.describe GroupChildEntity, feature_category: :groups_and_projects do
expect(described_class.new(group, request: request).as_json[:marked_for_deletion_on]).to eq(date)
end
it 'returns is_self_deletion_scheduled as true for top group' do
expect(described_class.new(group, request: request).as_json[:is_self_deletion_scheduled]).to eq(true)
end
it 'returns is_self_deletion_scheduled as false for subgroups' do
expect(described_class.new(subgroup, request: request).as_json[:is_self_deletion_scheduled]).to eq(false)
end
it 'returns permanent_deletion_date as the date the group will be deleted' do
expect(described_class.new(group, request: request).as_json[:permanent_deletion_date]).to eq((date + deletion_adjourned_period.days).strftime('%F'))
end