Fix pipeline status change from pending to running
This commit is contained in:
parent
99928aca75
commit
478990bb3e
3 changed files with 53 additions and 1 deletions
|
@ -187,6 +187,7 @@ module Ci
|
|||
|
||||
def process!
|
||||
Ci::ProcessPipelineService.new(project, user).execute(self)
|
||||
|
||||
reload_status!
|
||||
end
|
||||
|
||||
|
@ -197,7 +198,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
|
||||
|
|
|
@ -257,6 +257,51 @@ describe Ci::Pipeline, models: true do
|
|||
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
|
||||
|
||||
describe '#execute_hooks' do
|
||||
let!(:hook) do
|
||||
create(:project_hook, project: project, pipeline_events: enabled)
|
||||
|
|
Loading…
Reference in a new issue