Commit 46b78677 authored by Fabio Pitino's avatar Fabio Pitino

Don't create duplicate downstream pipelines

parent 46afb71c
...@@ -62,6 +62,10 @@ module Ci ...@@ -62,6 +62,10 @@ module Ci
end end
end end
def has_downstream_pipeline?
sourced_pipelines.exists?
end
def downstream_pipeline_params def downstream_pipeline_params
return child_params if triggers_child_pipeline? return child_params if triggers_child_pipeline?
return cross_project_params if downstream_project.present? return cross_project_params if downstream_project.present?
......
...@@ -7,6 +7,7 @@ module Ci ...@@ -7,6 +7,7 @@ module Ci
def execute(bridge) def execute(bridge)
@bridge = bridge @bridge = bridge
return if bridge.has_downstream_pipeline?
pipeline_params = @bridge.downstream_pipeline_params pipeline_params = @bridge.downstream_pipeline_params
target_ref = pipeline_params.dig(:target_revision, :ref) target_ref = pipeline_params.dig(:target_revision, :ref)
......
...@@ -116,6 +116,22 @@ describe Ci::CreateCrossProjectPipelineService, '#execute' do ...@@ -116,6 +116,22 @@ describe Ci::CreateCrossProjectPipelineService, '#execute' do
expect(bridge.reload).to be_success expect(bridge.reload).to be_success
end end
context 'when bridge job has already any downstream pipelines' do
before do
bridge.sourced_pipelines.create!(
source_pipeline: bridge.pipeline,
source_project: bridge.project,
project: bridge.project,
pipeline: create(:ci_pipeline, project: bridge.project)
)
end
it 'does nothing' do
expect(Ci::CreatePipelineService).not_to receive(:new)
expect(service.execute(bridge)).to be_nil
end
end
context 'when target ref is not specified' do context 'when target ref is not specified' do
let(:trigger) do let(:trigger) do
{ trigger: { project: downstream_project.full_path } } { trigger: { project: downstream_project.full_path } }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment