Skip to content
Snippets Groups Projects

Add auto-cancel for pending pipelines on branch, if they are not HEAD

1 file
+ 7
10
Compare changes
  • Side-by-side
  • Inline
@@ -26,7+26,7 @@
it { expect(pipeline).to eq(project.pipelines.last) }
it { expect(pipeline).to have_attributes(user: user) }
it { expect(pipeline).to have_attributes(status: 'pending') }
it { expect(pipeline.builds.first).to be_kind_of(Ci::Build) }
context 'auto-cancel enabled' do
let(:pipeline_on_previous_commit) do
@@ -47,7+47,7 @@
pipeline
pipeline_on_previous_commit
expect(pipeline.reload)
.to have_attributes(status: 'pending', auto_canceled_by_id: nil)
expect(pipeline.reload).to have_attributes(status: 'pending', auto_canceled_by_id: nil)
end
it 'auto cancel pending non-HEAD pipelines' do
pending_pipeline = pipeline_on_previous_commit
pipeline_on_previous_commit
pipeline
expect(pending_pipeline.reload).to have_attributes(status: 'canceled', auto_canceled_by_id: pipeline.id)
expect(pipeline_on_previous_commit.reload).to have_attributes(status: 'canceled', auto_canceled_by_id: pipeline.id)
end
it 'does not cancel running outdated pipelines' do
running_pipeline = pipeline_on_previous_commit
running_pipeline.run
pipeline_on_previous_commit.run
execute_service
expect(running_pipeline.reload).to have_attributes(status: 'running', auto_canceled_by_id: nil)
expect(pipeline_on_previous_commit.reload).to have_attributes(status: 'running', auto_canceled_by_id: nil)
end
it 'cancel created outdated pipelines' do
created_pipeline = pipeline_on_previous_commit
created_pipeline.update(status: 'created')
pipeline_on_previous_commit.update(status: 'created')
pipeline
expect(created_pipeline.reload).to have_attributes(status: 'canceled', auto_canceled_by_id: pipeline.id)
expect(pipeline_on_previous_commit.reload).to have_attributes(status: 'canceled', auto_canceled_by_id: pipeline.id)
end
it 'does not cancel pipelines from the other branches' do
@@ -133,7+130,7 @@
it_behaves_like 'a failed pipeline'
end
end
context 'when commit contains a [ci skip] directive' do
let(:message) { "some message[ci skip]" }
Loading