Add latest changes from gitlab-org/gitlab@master

This commit is contained in:
GitLab Bot 2025-05-22 03:07:28 +00:00
parent 074caf94a9
commit 8f39099353
19 changed files with 252 additions and 56 deletions

View File

@ -1 +1 @@
21e32d23ed544799646143bc9b8e7347d728af37
883a25c9dcb385e77767f555b5a9b7a153e02f3f

View File

@ -635,7 +635,7 @@ gem 'ssh_data', '~> 1.3', feature_category: :shared
gem 'spamcheck', '~> 1.3.0', feature_category: :insider_threat
# Gitaly GRPC protocol definitions
gem 'gitaly', '~> 17.8.0', feature_category: :gitaly
gem 'gitaly', '~> 17.11.2', feature_category: :gitaly
# KAS GRPC protocol definitions
gem 'gitlab-kas-grpc', '~> 17.11.0', feature_category: :deployment_management

View File

@ -215,7 +215,7 @@
{"name":"gettext","version":"3.5.1","platform":"ruby","checksum":"03ec7f71ea7e2cf1fdcd5e08682e98b81601922fdbee890b7bc6f63b0e1a512a"},
{"name":"gettext_i18n_rails","version":"1.13.0","platform":"ruby","checksum":"d4a4739d928b6ce52a2d694d33a831dcb06c7c8e197b3172fc73dfaa20ac8ee6"},
{"name":"git","version":"1.19.1","platform":"ruby","checksum":"b0a422d9f6517353c48a330d6114de4db9e0c82dbe7202964a1d9f1fbc827d70"},
{"name":"gitaly","version":"17.8.4","platform":"ruby","checksum":"196d9735a83f8a7d396baa216b979eb0c801622d8b7573f90010338d5b0c7b4f"},
{"name":"gitaly","version":"17.11.2","platform":"ruby","checksum":"32266469296345187d16ab3cfa3da849338817987b722a46eed4309ee18f996e"},
{"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"},
@ -282,7 +282,7 @@
{"name":"google-protobuf","version":"3.25.7","platform":"x86_64-darwin","checksum":"9dd1a8fde13e2b2f399cd9df95bc72851e28a71a70211145f02ec32f0569cd1c"},
{"name":"google-protobuf","version":"3.25.7","platform":"x86_64-linux","checksum":"f4bf387f7aa782377ca3ac6ef3ff612867dfe8d061fd31f756082038f37df727"},
{"name":"googleapis-common-protos","version":"1.4.0","platform":"ruby","checksum":"da2380fb5ab1563580816c74e8d684ac17512c3654c829a3ee84f6d6139de382"},
{"name":"googleapis-common-protos-types","version":"1.19.0","platform":"ruby","checksum":"aecb76ca5326f8bcc47ab083259bbc4971d07e87f56808af7e210669d9765694"},
{"name":"googleapis-common-protos-types","version":"1.20.0","platform":"ruby","checksum":"5e374b06bcfc7e13556e7c0d87b99f1fa3d42de6396a1de3d8fc13aefb4dd07f"},
{"name":"googleauth","version":"1.8.1","platform":"ruby","checksum":"814adadaaa1221dce72a67131e3ecbd6d23491a161ec84fb15fd353b87d8c9e7"},
{"name":"gpgme","version":"2.0.24","platform":"ruby","checksum":"53eccd7042abb4fd5c78f30bc9ed075b1325e6450eab207f2f6a1e7e28ae3b64"},
{"name":"grape","version":"2.0.0","platform":"ruby","checksum":"3aeff94c17e84ccead4ff98833df691e7da0c108878cc128ca31f80c1047494a"},

View File

@ -737,7 +737,7 @@ GEM
git (1.19.1)
addressable (~> 2.8)
rchardet (~> 1.8)
gitaly (17.8.4)
gitaly (17.11.2)
grpc (~> 1.0)
gitlab (4.19.0)
httparty (~> 0.20)
@ -919,7 +919,7 @@ GEM
google-protobuf (~> 3.14)
googleapis-common-protos-types (~> 1.2)
grpc (~> 1.27)
googleapis-common-protos-types (1.19.0)
googleapis-common-protos-types (1.20.0)
google-protobuf (>= 3.18, < 5.a)
googleauth (1.8.1)
faraday (>= 0.17.3, < 3.a)
@ -2153,7 +2153,7 @@ DEPENDENCIES
gettext (~> 3.5, >= 3.5.1)
gettext_i18n_rails (~> 1.13.0)
git (~> 1.8)
gitaly (~> 17.8.0)
gitaly (~> 17.11.2)
gitlab-active-context!
gitlab-backup-cli!
gitlab-chronic (~> 0.10.5)

View File

@ -215,7 +215,7 @@
{"name":"gettext","version":"3.5.1","platform":"ruby","checksum":"03ec7f71ea7e2cf1fdcd5e08682e98b81601922fdbee890b7bc6f63b0e1a512a"},
{"name":"gettext_i18n_rails","version":"1.13.0","platform":"ruby","checksum":"d4a4739d928b6ce52a2d694d33a831dcb06c7c8e197b3172fc73dfaa20ac8ee6"},
{"name":"git","version":"1.19.1","platform":"ruby","checksum":"b0a422d9f6517353c48a330d6114de4db9e0c82dbe7202964a1d9f1fbc827d70"},
{"name":"gitaly","version":"17.8.4","platform":"ruby","checksum":"196d9735a83f8a7d396baa216b979eb0c801622d8b7573f90010338d5b0c7b4f"},
{"name":"gitaly","version":"17.11.2","platform":"ruby","checksum":"32266469296345187d16ab3cfa3da849338817987b722a46eed4309ee18f996e"},
{"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"},
@ -282,7 +282,7 @@
{"name":"google-protobuf","version":"3.25.7","platform":"x86_64-darwin","checksum":"9dd1a8fde13e2b2f399cd9df95bc72851e28a71a70211145f02ec32f0569cd1c"},
{"name":"google-protobuf","version":"3.25.7","platform":"x86_64-linux","checksum":"f4bf387f7aa782377ca3ac6ef3ff612867dfe8d061fd31f756082038f37df727"},
{"name":"googleapis-common-protos","version":"1.4.0","platform":"ruby","checksum":"da2380fb5ab1563580816c74e8d684ac17512c3654c829a3ee84f6d6139de382"},
{"name":"googleapis-common-protos-types","version":"1.19.0","platform":"ruby","checksum":"aecb76ca5326f8bcc47ab083259bbc4971d07e87f56808af7e210669d9765694"},
{"name":"googleapis-common-protos-types","version":"1.20.0","platform":"ruby","checksum":"5e374b06bcfc7e13556e7c0d87b99f1fa3d42de6396a1de3d8fc13aefb4dd07f"},
{"name":"googleauth","version":"1.8.1","platform":"ruby","checksum":"814adadaaa1221dce72a67131e3ecbd6d23491a161ec84fb15fd353b87d8c9e7"},
{"name":"gpgme","version":"2.0.24","platform":"ruby","checksum":"53eccd7042abb4fd5c78f30bc9ed075b1325e6450eab207f2f6a1e7e28ae3b64"},
{"name":"grape","version":"2.0.0","platform":"ruby","checksum":"3aeff94c17e84ccead4ff98833df691e7da0c108878cc128ca31f80c1047494a"},

View File

@ -737,7 +737,7 @@ GEM
git (1.19.1)
addressable (~> 2.8)
rchardet (~> 1.8)
gitaly (17.8.4)
gitaly (17.11.2)
grpc (~> 1.0)
gitlab (4.19.0)
httparty (~> 0.20)
@ -919,7 +919,7 @@ GEM
google-protobuf (~> 3.14)
googleapis-common-protos-types (~> 1.2)
grpc (~> 1.27)
googleapis-common-protos-types (1.19.0)
googleapis-common-protos-types (1.20.0)
google-protobuf (>= 3.18, < 5.a)
googleauth (1.8.1)
faraday (>= 0.17.3, < 3.a)
@ -2153,7 +2153,7 @@ DEPENDENCIES
gettext (~> 3.5, >= 3.5.1)
gettext_i18n_rails (~> 1.13.0)
git (~> 1.8)
gitaly (~> 17.8.0)
gitaly (~> 17.11.2)
gitlab-active-context!
gitlab-backup-cli!
gitlab-chronic (~> 0.10.5)

View File

@ -216,6 +216,7 @@ module Ci
scope :with_pipeline_source_type, ->(pipeline_source_type) { joins(:pipeline).where(pipeline: { source: pipeline_source_type }) }
scope :created_after, ->(time) { where(arel_table[:created_at].gt(time)) }
scope :created_before, ->(time) { where(arel_table[:created_at].lt(time)) }
scope :updated_after, ->(time) { where(arel_table[:updated_at].gt(time)) }
scope :for_project_ids, ->(project_ids) { where(project_id: project_ids) }

View File

@ -4,6 +4,7 @@ module Ci
class BuildName < Ci::ApplicationRecord
include PgFullTextSearchable
include Ci::Partitionable
include EachBatch
MAX_JOB_NAME_LENGTH = 255

View File

@ -9,16 +9,21 @@
label_options: { class: 'label-bold' }
- docs_link_start = "<a href='#{help_page_path('user/project/pages/custom_domains_ssl_tls_certification/_index.md', anchor: 'force-https-for-gitlab-pages-websites')}' target='_blank' rel='noopener noreferrer'>".html_safe
- link_end = '</a>'.html_safe
%p.gl-pl-6
= s_("GitLabPages|When enabled, all attempts to visit your website through HTTP are automatically redirected to HTTPS using a response with status code 301. Requires a valid certificate for all domains. %{docs_link_start}Learn more.%{link_end}").html_safe % { docs_link_start: docs_link_start, link_end: link_end }
%p.gl-text-subtle.gl-pl-6
= s_("GitLabPages|When enabled, all access to domains will use HTTPS with %{redirect_code} redirects. Requires valid certificates for all domains. %{docs_link_start}How does HTTPS redirection work?%{link_end}").html_safe % { docs_link_start: docs_link_start, link_end: link_end, redirect_code: tag.code('301') }
.form-group
= f.fields_for :project_setting do |settings|
= settings.gitlab_ui_checkbox_component :pages_unique_domain_enabled,
s_('GitLabPages|Use unique domain'),
label_options: { class: 'label-bold' }
%p.gl-pl-6
= s_("GitLabPages|When enabled, a unique domain is generated to access pages.").html_safe
- docs_link_start = "<a href='#{help_page_path('user/project/pages/custom_domains_ssl_tls_certification/_index.md', anchor: 'set-up-a-custom-domain')}' target='_blank' rel='noopener noreferrer'>".html_safe
- link_end = '</a>'.html_safe
%p.gl-text-subtle.gl-pl-6
= s_("GitLabPages|When enabled, adds a unique identifier to your domain (for example: %{domain}). When disabled, uses your namespace (username/group name) as the domain (for example: %{unique_domain}). %{docs_link_start}How do Pages URLs work?%{link_end}").html_safe % { docs_link_start: docs_link_start,
link_end: link_end,
domain: tag.code('my-website-123456.gitlab.io'),
unique_domain: tag.code('testuser.gitlab.io/my-website') }
- if Gitlab.config.pages.custom_domain_mode || Gitlab.config.pages.external_http || Gitlab.config.pages.external_https
- if @project.pages_domains.present?

View File

@ -0,0 +1,9 @@
---
name: truncate_build_names
feature_issue_url: https://gitlab.com/groups/gitlab-org/-/epics/16853
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/188496
rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/536667
milestone: '18.0'
group: group::pipeline execution
type: gitlab_com_derisk
default_enabled: false

View File

@ -1067,6 +1067,10 @@ Gitlab.ee do
Settings.cron_jobs['delete_pipl_users_worker']['cron'] ||= '0 8 * * *'
Settings.cron_jobs['delete_pipl_users_worker']['job_class'] =
'ComplianceManagement::Pipl::DeletePiplUsersWorker'
Settings.cron_jobs['cleanup_build_name_worker'] ||= {}
Settings.cron_jobs['cleanup_build_name_worker']['cron'] ||= '0 1 * * *'
Settings.cron_jobs['cleanup_build_name_worker']['job_class'] = 'Ci::CleanupBuildNameWorker'
end
Gitlab.jh do

View File

@ -62249,11 +62249,24 @@ definitions:
size:
type: integer
format: int32
description: Repository size in bytes.
references:
"$ref": "#/definitions/API_Entities_RepositoryHealth_References"
objects:
"$ref": "#/definitions/API_Entities_RepositoryHealth_Objects"
commit_graph:
"$ref": "#/definitions/API_Entities_RepositoryHealth_CommitGraph"
bitmap:
"$ref": "#/definitions/API_Entities_RepositoryHealth_Bitmap"
multi_pack_index:
"$ref": "#/definitions/API_Entities_RepositoryHealth_MultiPackIndex"
multi_pack_index_bitmap:
"$ref": "#/definitions/API_Entities_RepositoryHealth_Bitmap"
alternates:
type: object
is_object_pool:
type: boolean
last_full_repack:
"$ref": "#/definitions/API_Entities_RepositoryHealth_LastFullRepack"
updated_at:
type: string
format: date-time
@ -62265,36 +62278,87 @@ definitions:
loose_count:
type: integer
format: int32
description: Number of loose references in the repository.
packed_size:
type: integer
format: int32
description: Size in bytes of packed references in the repository.
reference_backend:
type: string
description: Type of backend used to store references. Either 'REFERENCE_BACKEND_REFTABLE'
or 'REFERENCE_BACKEND_FILES'.
API_Entities_RepositoryHealth_Objects:
type: object
properties:
size:
type: integer
format: int32
description: Size in bytes of all objects in the repository.
recent_size:
type: integer
format: int32
description: Size in bytes of all recent objects in the repository. Recent
objects are those which are reachable.
stale_size:
type: integer
format: int32
description: Size in bytes of all stale objects in the repository. Stale objects
are those which are unreachable and may be deleted during housekeeping.
keep_size:
type: integer
format: int32
description: Size in bytes of all packfiles with the .keep extension.
packfile_count:
type: integer
format: int32
reverse_index_count:
type: integer
format: int32
cruft_count:
type: integer
format: int32
keep_count:
type: integer
format: int32
loose_objects_count:
type: integer
format: int32
stale_loose_objects_count:
type: integer
format: int32
loose_objects_garbage_count:
type: integer
format: int32
API_Entities_RepositoryHealth_CommitGraph:
type: object
properties:
commit_graph_chain_length:
type: integer
format: int32
has_bloom_filters:
type: boolean
has_generation_data:
type: boolean
has_generation_data_overflow:
type: boolean
API_Entities_RepositoryHealth_Bitmap:
type: object
properties:
has_hash_cache:
type: boolean
has_lookup_table:
type: boolean
version:
type: integer
format: int32
API_Entities_RepositoryHealth_MultiPackIndex:
type: object
properties:
packfile_count:
type: integer
format: int32
version:
type: integer
format: int32
API_Entities_RepositoryHealth_LastFullRepack:
type: object
properties:
seconds:
type: integer
format: int32
nanos:
type: integer
format: int32
API_Entities_Contributor:
type: object
properties:

View File

@ -536,6 +536,7 @@ Example response, with line breaks added for readability:
- [Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182220) in GitLab 17.10. Guarded behind the
[project_repositories_health](https://gitlab.com/gitlab-org/gitlab/-/issues/521115) feature flag.
- New fields [added](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/191263) in GitLab 18.1.
{{< /history >}}
@ -562,22 +563,55 @@ Example response:
```json
{
"size": 42002816,
"size": 2619748827,
"references": {
"loose_count": 3,
"packed_size": 315703,
"loose_count": 13,
"packed_size": 333978,
"reference_backend": "REFERENCE_BACKEND_FILES"
},
"objects": {
"size": 39651458,
"recent_size": 39461265,
"stale_size": 190193,
"keep_size": 0
"size": 2180475409,
"recent_size": 2180453999,
"stale_size": 21410,
"keep_size": 0,
"packfile_count": 1,
"reverse_index_count": 1,
"cruft_count": 0,
"keep_count": 0,
"loose_objects_count": 36,
"stale_loose_objects_count": 36,
"loose_objects_garbage_count": 0
},
"updated_at": "2025-02-26T03:42:13.015Z"
"commit_graph": {
"commit_graph_chain_length": 1,
"has_bloom_filters": true,
"has_generation_data": true,
"has_generation_data_overflow": false
},
"bitmap": null,
"multi_pack_index": {
"packfile_count": 1,
"version": 1
},
"multi_pack_index_bitmap": {
"has_hash_cache": true,
"has_lookup_table": true,
"version": 1
},
"alternates": null,
"is_object_pool": false,
"last_full_repack": {
"seconds": 1745892013,
"nanos": 0
},
"updated_at": "2025-05-14T02:31:08.022Z"
}
```
For a description of each field in the response, see the
[`RepositoryInfoResponse`](https://gitlab.com/gitlab-org/gitaly/blob/fcb986a6482f82b088488db3ed7ca35adfa42fdc/proto/repository.proto#L444)
protobuf message.
## Related topics
- User documentation for [changelogs](../user/project/changelogs.md)

View File

@ -28,6 +28,10 @@ This feature is available for testing, but not ready for production use.
{{< /alert >}}
<i class="fa-youtube-play" aria-hidden="true"></i>
For a demonstration, see [Validity Checks Demo](https://www.youtube.com/watch?v=h0jR0CGNOhI).
<!-- Video published on 2025-05-20 -->
GitLab validity checks determines whether a secret, like an access token, is active.
A secret is active when:
@ -50,9 +54,9 @@ To enable validity checks for a project:
- Contact your GitLab representative and ask them to enable validity checks.
If validity checks are enabled, when the `secret_detection` CI/CD job is complete,
GitLab checks the status of detected secrets. The statuses are displayed on the
**Findings** page of the vulnerability report.
If validity checks are enabled, GitLab checks the status of detected secrets when the `secret_detection`
CI/CD job is complete. To view a secret's status, view the vulnerability details page. To update the
status of a secret, for example after revoking it, re-run the `secret_detection` CI/CD job.
### Coverage

View File

@ -2,36 +2,93 @@
module API
module Entities
# rubocop:disable Layout/LineLength -- `desc` is too long
class RepositoryHealth < Grape::Entity
class References < Grape::Entity
expose :loose_count,
documentation: { type: 'integer', desc: 'Number of loose references in the repository.' }
documentation: { type: 'integer' }
expose :packed_size,
documentation: { type: 'integer', desc: 'Size in bytes of packed references in the repository.' }
documentation: { type: 'integer' }
expose :reference_backend,
documentation: { type: 'string',
desc: "Type of backend used to store references. Either 'REFERENCE_BACKEND_REFTABLE' or 'REFERENCE_BACKEND_FILES'." }
documentation: { type: 'string' }
end
class Objects < Grape::Entity
expose :size,
documentation: { type: 'integer', desc: 'Size in bytes of all objects in the repository.' }
documentation: { type: 'integer' }
expose :recent_size,
documentation: { type: 'integer',
desc: 'Size in bytes of all recent objects in the repository. Recent objects are those which are reachable.' }
documentation: { type: 'integer' }
expose :stale_size,
documentation: { type: 'integer',
desc: 'Size in bytes of all stale objects in the repository. Stale objects are those which are unreachable and may be deleted during housekeeping.' }
documentation: { type: 'integer' }
expose :keep_size,
documentation: { type: 'integer', desc: 'Size in bytes of all packfiles with the .keep extension.' }
documentation: { type: 'integer' }
expose :packfile_count,
documentation: { type: 'integer' }
expose :reverse_index_count,
documentation: { type: 'integer' }
expose :cruft_count,
documentation: { type: 'integer' }
expose :keep_count,
documentation: { type: 'integer' }
expose :loose_objects_count,
documentation: { type: 'integer' }
expose :stale_loose_objects_count,
documentation: { type: 'integer' }
expose :loose_objects_garbage_count,
documentation: { type: 'integer' }
end
expose :size, documentation: { type: 'integer', desc: 'Repository size in bytes.' }
class CommitGraph < Grape::Entity
expose :commit_graph_chain_length,
documentation: { type: 'integer' }
expose :has_bloom_filters,
documentation: { type: 'boolean' }
expose :has_generation_data,
documentation: { type: 'boolean' }
expose :has_generation_data_overflow,
documentation: { type: 'boolean' }
end
class MultiPackIndex < Grape::Entity
expose :packfile_count,
documentation: { type: 'integer' }
expose :version,
documentation: { type: 'integer' }
end
class Bitmap < Grape::Entity
expose :has_hash_cache,
documentation: { type: 'boolean' }
expose :has_lookup_table,
documentation: { type: 'boolean' }
expose :version,
documentation: { type: 'integer' }
end
class AlternatesInfo < Grape::Entity
expose :object_directories,
documentation: { type: 'array', items: { type: 'string' } }
expose :last_modified,
documentation: { type: 'dateTime', example: '2025-02-24T09:05:50.355Z' }
end
class LastFullRepack < Grape::Entity
expose :seconds,
documentation: { type: 'integer' }
expose :nanos,
documentation: { type: 'integer' }
end
expose :size, documentation: { type: 'integer' }
expose :references, using: References
expose :objects, using: Objects
expose :commit_graph, using: CommitGraph
expose :bitmap, using: Bitmap
expose :multi_pack_index, using: MultiPackIndex
expose :multi_pack_index_bitmap, using: Bitmap
expose :alternates, documentation: { type: 'object', example: nil }
expose :is_object_pool, documentation: { type: 'boolean' }
expose :last_full_repack, using: LastFullRepack
expose :updated_at, documentation: { type: 'dateTime', example: '2025-02-24T09:05:50.355Z' }
end
# rubocop:enable Layout/LineLength
end
end

View File

@ -28453,10 +28453,10 @@ msgstr ""
msgid "GitLabPages|Waiting for the Pages Pipeline to complete…"
msgstr ""
msgid "GitLabPages|When enabled, a unique domain is generated to access pages."
msgid "GitLabPages|When enabled, adds a unique identifier to your domain (for example: %{domain}). When disabled, uses your namespace (username/group name) as the domain (for example: %{unique_domain}). %{docs_link_start}How do Pages URLs work?%{link_end}"
msgstr ""
msgid "GitLabPages|When enabled, all attempts to visit your website through HTTP are automatically redirected to HTTPS using a response with status code 301. Requires a valid certificate for all domains. %{docs_link_start}Learn more.%{link_end}"
msgid "GitLabPages|When enabled, all access to domains will use HTTPS with %{redirect_code} redirects. Requires valid certificates for all domains. %{docs_link_start}How does HTTPS redirection work?%{link_end}"
msgstr ""
msgid "GitLabPages|When enabled, all projects in the group and its subgroups become visible only to members."
@ -39553,12 +39553,18 @@ msgstr ""
msgid "ModelSelection|An error occurred while loading the AI feature settings. Please try again."
msgstr ""
msgid "ModelSelection|An error occurred while updating the feature setting. Please try again."
msgstr ""
msgid "ModelSelection|Manage GitLab Duo by configuring and assigning models to AI-native features."
msgstr ""
msgid "ModelSelection|Model Selection"
msgstr ""
msgid "ModelSelection|Successfully updated %{mainFeature} / %{title}"
msgstr ""
msgid "Modified"
msgstr ""

View File

@ -116,6 +116,14 @@ RSpec.describe Ci::Build, feature_category: :continuous_integration, factory_def
end
end
describe 'created_before' do
subject { described_class.created_before(1.day.ago) }
it 'returns the builds created before the given time' do
is_expected.to contain_exactly(old_build)
end
end
describe 'updated_after' do
subject { described_class.updated_after(1.day.ago) }

View File

@ -15,11 +15,11 @@ RSpec.describe MergeRequests::DeleteNonLatestDiffsService, :clean_gitlab_redis_s
3.times { merge_request.create_merge_request_diff }
merge_request.create_merge_head_diff
merge_request.reset
merge_request.merge_request_diffs.reload
end
it 'schedules non-latest merge request diffs removal',
quarantine: 'https://gitlab.com/gitlab-org/gitlab/-/issues/426807' do
diffs = merge_request.merge_request_diffs
it 'schedules non-latest merge request diffs removal' do
diffs = merge_request.merge_request_diffs.order(:id)
expect(diffs.count).to eq(4)
@ -37,6 +37,7 @@ RSpec.describe MergeRequests::DeleteNonLatestDiffsService, :clean_gitlab_redis_s
it 'schedules no removal if it is already cleaned' do
merge_request.merge_request_diffs.each(&:clean!)
merge_request.merge_request_diffs.reload
expect(DeleteDiffFilesWorker).not_to receive(:bulk_perform_in)
@ -45,6 +46,7 @@ RSpec.describe MergeRequests::DeleteNonLatestDiffsService, :clean_gitlab_redis_s
it 'schedules no removal if it is empty' do
merge_request.merge_request_diffs.each { |diff| diff.update!(state: :empty) }
merge_request.merge_request_diffs.reload
expect(DeleteDiffFilesWorker).not_to receive(:bulk_perform_in)
@ -57,6 +59,7 @@ RSpec.describe MergeRequests::DeleteNonLatestDiffsService, :clean_gitlab_redis_s
.merge_request_diffs
.where.not(id: merge_request.latest_merge_request_diff_id)
.destroy_all
merge_request.merge_request_diffs.reload
# rubocop: enable Cop/DestroyAll
expect(DeleteDiffFilesWorker).not_to receive(:bulk_perform_in)