Verify the pipeline status after executing events on builds
This commit is contained in:
parent
4c29c25497
commit
d983c5bd46
|
@ -185,6 +185,7 @@ module Ci
|
|||
|
||||
def process!
|
||||
Ci::ProcessPipelineService.new(project, user).execute(self)
|
||||
|
||||
reload_status!
|
||||
end
|
||||
|
||||
|
@ -195,7 +196,7 @@ module Ci
|
|||
end
|
||||
|
||||
def reload_status!
|
||||
statuses.reload
|
||||
reload
|
||||
self.status =
|
||||
if yaml_errors.blank?
|
||||
statuses.latest.status || 'skipped'
|
||||
|
|
|
@ -76,6 +76,12 @@ class CommitStatus < ActiveRecord::Base
|
|||
|
||||
commit_status.pipeline.process! if commit_status.pipeline
|
||||
end
|
||||
|
||||
around_transition any => [:pending, :running] do |commit_status, block|
|
||||
block.call
|
||||
|
||||
commit_status.pipeline.reload_status! if commit_status.pipeline
|
||||
end
|
||||
end
|
||||
|
||||
delegate :sha, :short_sha, to: :pipeline
|
||||
|
|
|
@ -254,4 +254,49 @@ describe Ci::Pipeline, models: true do
|
|||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe '#status' do
|
||||
let!(:build) { create(:ci_build, :created, pipeline: pipeline, name: 'test') }
|
||||
|
||||
subject { pipeline.reload.status }
|
||||
|
||||
context 'on queuing' do
|
||||
before { build.queue }
|
||||
|
||||
it { is_expected.to eq('pending') }
|
||||
end
|
||||
|
||||
context 'on run' do
|
||||
before do
|
||||
build.queue
|
||||
build.run
|
||||
end
|
||||
|
||||
it { is_expected.to eq('running') }
|
||||
end
|
||||
|
||||
context 'on drop' do
|
||||
before do
|
||||
build.drop
|
||||
end
|
||||
|
||||
it { is_expected.to eq('failed') }
|
||||
end
|
||||
|
||||
context 'on success' do
|
||||
before do
|
||||
build.success
|
||||
end
|
||||
|
||||
it { is_expected.to eq('success') }
|
||||
end
|
||||
|
||||
context 'on cancel' do
|
||||
before do
|
||||
build.cancel
|
||||
end
|
||||
|
||||
it { is_expected.to eq('canceled') }
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in New Issue