From da3cdd05d4f6159d6ac5762af45808dd1be7fe1d Mon Sep 17 00:00:00 2001 From: Marius Bobin Date: Thu, 11 Sep 2025 11:37:15 +0300 Subject: [PATCH 1/2] Add override FF for deleting old pipelines --- .../ci/destroy_old_pipelines_worker.rb | 3 ++- ..._skip_old_protected_pipelines_override.yml | 10 ++++++++ .../ci/destroy_old_pipelines_worker_spec.rb | 25 ++++++++++++++++--- 3 files changed, 33 insertions(+), 5 deletions(-) create mode 100644 config/feature_flags/wip/ci_skip_old_protected_pipelines_override.yml diff --git a/app/workers/ci/destroy_old_pipelines_worker.rb b/app/workers/ci/destroy_old_pipelines_worker.rb index 8023fe462b1759..5aaa25903a99a8 100644 --- a/app/workers/ci/destroy_old_pipelines_worker.rb +++ b/app/workers/ci/destroy_old_pipelines_worker.rb @@ -55,7 +55,8 @@ def queue_key end def skip_protected_pipelines?(project) - Feature.enabled?(:ci_skip_old_protected_pipelines, project.root_namespace, type: :wip) + Feature.enabled?(:ci_skip_old_protected_pipelines, project.root_namespace, type: :wip) && + Feature.disabled?(:ci_skip_old_protected_pipelines_override, project, type: :wip) end def skip_locked_pipelines?(project) diff --git a/config/feature_flags/wip/ci_skip_old_protected_pipelines_override.yml b/config/feature_flags/wip/ci_skip_old_protected_pipelines_override.yml new file mode 100644 index 00000000000000..5153efada23b87 --- /dev/null +++ b/config/feature_flags/wip/ci_skip_old_protected_pipelines_override.yml @@ -0,0 +1,10 @@ +--- +name: ci_skip_old_protected_pipelines_override +description: +feature_issue_url: +introduced_by_url: +rollout_issue_url: +milestone: '18.4' +group: group::ci platform +type: wip +default_enabled: false diff --git a/spec/workers/ci/destroy_old_pipelines_worker_spec.rb b/spec/workers/ci/destroy_old_pipelines_worker_spec.rb index c2ff0e8b47646f..cb1c1858d5d633 100644 --- a/spec/workers/ci/destroy_old_pipelines_worker_spec.rb +++ b/spec/workers/ci/destroy_old_pipelines_worker_spec.rb @@ -46,12 +46,29 @@ context 'when protected pipelines are configured' do let_it_be(:old_protected_pipeline) do - create(:ci_pipeline, project: project, created_at: 1.month.ago, protected: true) + create(:ci_pipeline, project: project, created_at: 1.month.ago, protected: true, locked: :unlocked) end - it 'keeps protected pipelines' do - expect { perform }.to change { project.all_pipelines.count }.by(-2) - expect(old_protected_pipeline.reload).to be_present + context 'when the override FF is disabled' do + before do + stub_feature_flags(ci_skip_old_protected_pipelines_override: false) + end + + it 'keeps protected pipelines' do + expect { perform }.to change { project.all_pipelines.count }.by(-2) + expect(old_protected_pipeline.reload).to be_present + end + end + + context 'when overriding the protected pipelines FF' do + before do + stub_feature_flags(ci_skip_old_protected_pipelines_override: true) + end + + it 'deletes protected pipelines' do + expect { perform }.to change { project.all_pipelines.count }.by(-3) + expect { old_protected_pipeline.reload }.to raise_error ActiveRecord::RecordNotFound + end end end -- GitLab From 504e6979066d5851f0b4f06809086888daeaf624 Mon Sep 17 00:00:00 2001 From: Marius Bobin Date: Thu, 11 Sep 2025 11:44:38 +0300 Subject: [PATCH 2/2] Apply 1 suggestion(s) to 1 file(s) Co-authored-by: DANGER_GITLAB_API_TOKEN --- .../wip/ci_skip_old_protected_pipelines_override.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/feature_flags/wip/ci_skip_old_protected_pipelines_override.yml b/config/feature_flags/wip/ci_skip_old_protected_pipelines_override.yml index 5153efada23b87..f07bbb30a9aa1d 100644 --- a/config/feature_flags/wip/ci_skip_old_protected_pipelines_override.yml +++ b/config/feature_flags/wip/ci_skip_old_protected_pipelines_override.yml @@ -2,7 +2,7 @@ name: ci_skip_old_protected_pipelines_override description: feature_issue_url: -introduced_by_url: +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/204657 rollout_issue_url: milestone: '18.4' group: group::ci platform -- GitLab