Merge branch 'prevent-running-mr-pipelines-when-target-updated' into 'master'
Create pipelines for merge requests **only** when source branch is updated See merge request gitlab-org/gitlab-ce!26921
This commit is contained in:
commit
1fce09ed0d
3 changed files with 40 additions and 9 deletions
|
@ -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 a new issue