提交 478990bb 编写于 作者: K Kamil Trzcinski

Fix pipeline status change from pending to running

上级 99928aca
......@@ -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)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册