Prevent triggering pipelines when target branch is updated
Currently, pipelines for merge requests are triggered when source or target branch is updated. However, we should create only when source branch is updated, because it runs unexpected pipelines.
This commit is contained in:
parent
dfb26f007c
commit
e0efa97c7f
|
@ -21,6 +21,7 @@ module MergeRequests
|
|||
post_merge_manually_merged
|
||||
reload_merge_requests
|
||||
outdate_suggestions
|
||||
refresh_pipelines_on_merge_requests
|
||||
reset_merge_when_pipeline_succeeds
|
||||
mark_pending_todos_done
|
||||
cache_merge_requests_closing_issues
|
||||
|
@ -107,8 +108,6 @@ module MergeRequests
|
|||
end
|
||||
|
||||
merge_request.mark_as_unchecked
|
||||
create_pipeline_for(merge_request, current_user)
|
||||
UpdateHeadPipelineForMergeRequestWorker.perform_async(merge_request.id)
|
||||
end
|
||||
|
||||
# Upcoming method calls need the refreshed version of
|
||||
|
@ -134,6 +133,13 @@ module MergeRequests
|
|||
end
|
||||
end
|
||||
|
||||
def refresh_pipelines_on_merge_requests
|
||||
merge_requests_for_source_branch.each do |merge_request|
|
||||
create_pipeline_for(merge_request, current_user)
|
||||
UpdateHeadPipelineForMergeRequestWorker.perform_async(merge_request.id)
|
||||
end
|
||||
end
|
||||
|
||||
def reset_merge_when_pipeline_succeeds
|
||||
merge_requests_for_source_branch.each(&:reset_merge_when_pipeline_succeeds)
|
||||
end
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
---
|
||||
title: Create pipelines for merge requests only when source branch is updated
|
||||
merge_request: 26921
|
||||
author:
|
||||
type: fixed
|
|
@ -146,7 +146,10 @@ describe MergeRequests::RefreshService do
|
|||
stub_ci_pipeline_yaml_file(YAML.dump(config))
|
||||
end
|
||||
|
||||
subject { service.new(@project, @user).execute(@oldrev, @newrev, 'refs/heads/master') }
|
||||
subject { service.new(project, @user).execute(@oldrev, @newrev, ref) }
|
||||
|
||||
let(:ref) { 'refs/heads/master' }
|
||||
let(:project) { @project }
|
||||
|
||||
context "when .gitlab-ci.yml has merge_requests keywords" do
|
||||
let(:config) do
|
||||
|
@ -162,14 +165,17 @@ describe MergeRequests::RefreshService do
|
|||
it 'create detached merge request pipeline with commits' do
|
||||
expect { subject }
|
||||
.to change { @merge_request.merge_request_pipelines.count }.by(1)
|
||||
.and change { @fork_merge_request.merge_request_pipelines.count }.by(1)
|
||||
.and change { @another_merge_request.merge_request_pipelines.count }.by(0)
|
||||
|
||||
expect(@merge_request.has_commits?).to be_truthy
|
||||
expect(@fork_merge_request.has_commits?).to be_truthy
|
||||
expect(@another_merge_request.has_commits?).to be_falsy
|
||||
end
|
||||
|
||||
it 'does not create detached merge request pipeline for forked project' do
|
||||
expect { subject }
|
||||
.not_to change { @fork_merge_request.merge_request_pipelines.count }
|
||||
end
|
||||
|
||||
it 'create detached merge request pipeline for non-fork merge request' do
|
||||
subject
|
||||
|
||||
|
@ -177,11 +183,25 @@ describe MergeRequests::RefreshService do
|
|||
.to be_detached_merge_request_pipeline
|
||||
end
|
||||
|
||||
it 'create legacy detached merge request pipeline for fork merge request' do
|
||||
subject
|
||||
context 'when service is hooked by target branch' do
|
||||
let(:ref) { 'refs/heads/feature' }
|
||||
|
||||
expect(@fork_merge_request.merge_request_pipelines.first)
|
||||
.to be_legacy_detached_merge_request_pipeline
|
||||
it 'does not create detached merge request pipeline' do
|
||||
expect { subject }
|
||||
.not_to change { @merge_request.merge_request_pipelines.count }
|
||||
end
|
||||
end
|
||||
|
||||
context 'when service runs on forked project' do
|
||||
let(:project) { @fork_project }
|
||||
|
||||
it 'creates legacy detached merge request pipeline for fork merge request' do
|
||||
expect { subject }
|
||||
.to change { @fork_merge_request.merge_request_pipelines.count }.by(1)
|
||||
|
||||
expect(@fork_merge_request.merge_request_pipelines.first)
|
||||
.to be_legacy_detached_merge_request_pipeline
|
||||
end
|
||||
end
|
||||
|
||||
context 'when ci_use_merge_request_ref feature flag is false' do
|
||||
|
|
Loading…
Reference in New Issue