Add build finished worker that creates a workflow
This commit is contained in:
parent
b8003aa012
commit
5904793ad8
|
@ -83,8 +83,7 @@ module Ci
|
|||
|
||||
after_transition any => [:success, :failed, :canceled] do |build|
|
||||
build.run_after_commit do
|
||||
BuildCoverageWorker.perform_async(id)
|
||||
BuildHooksWorker.perform_async(id)
|
||||
BuildFinishedWorker.perform_async(id)
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
@ -0,0 +1,12 @@
|
|||
class BuildFinishedWorker
|
||||
include Sidekiq::Worker
|
||||
|
||||
def perform(build_id)
|
||||
Ci::Build.find_by(id: build_id).try do |build|
|
||||
build.with_lock do
|
||||
BuildCoverageWorker.new.perform(build.id)
|
||||
BuildHooksWorker.new.perform(build.id)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
|
@ -0,0 +1,30 @@
|
|||
require 'spec_helper'
|
||||
|
||||
describe BuildFinishedWorker do
|
||||
describe '#perform' do
|
||||
context 'when build exists' do
|
||||
let(:build) { create(:ci_build) }
|
||||
|
||||
it 'calculates coverage and calls hooks' do
|
||||
expect(BuildCoverageWorker)
|
||||
.to receive(:new).ordered.and_call_original
|
||||
expect(BuildHooksWorker)
|
||||
.to receive(:new).ordered.and_call_original
|
||||
|
||||
expect_any_instance_of(BuildCoverageWorker)
|
||||
.to receive(:perform)
|
||||
expect_any_instance_of(BuildHooksWorker)
|
||||
.to receive(:perform)
|
||||
|
||||
described_class.new.perform(build.id)
|
||||
end
|
||||
end
|
||||
|
||||
context 'when build does not exist' do
|
||||
it 'does not raise exception' do
|
||||
expect { described_class.new.perform(123) }
|
||||
.not_to raise_error
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
Loading…
Reference in New Issue