Fix pipelines not always being created after a push
https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/31741 introduced a regression where not all the right parameters would be passed into `Ci::CreatePipelineService`. We fix this by breaking out the pipeline parameters and reusing a method from `Gitlab::DataBuilder::Push`. Closes https://gitlab.com/gitlab-org/gitlab-ce/issues/66196
This commit is contained in:
parent
1068483f72
commit
b46b9d5e89
4 changed files with 33 additions and 9 deletions
|
@ -56,7 +56,7 @@ module Git
|
|||
return unless params.fetch(:create_pipelines, true)
|
||||
|
||||
Ci::CreatePipelineService
|
||||
.new(project, current_user, base_params)
|
||||
.new(project, current_user, pipeline_params)
|
||||
.execute(:push, pipeline_options)
|
||||
end
|
||||
|
||||
|
@ -75,24 +75,29 @@ module Git
|
|||
ProjectCacheWorker.perform_async(project.id, file_types, [], false)
|
||||
end
|
||||
|
||||
def base_params
|
||||
def pipeline_params
|
||||
{
|
||||
oldrev: params[:oldrev],
|
||||
newrev: params[:newrev],
|
||||
before: params[:oldrev],
|
||||
after: params[:newrev],
|
||||
ref: params[:ref],
|
||||
push_options: params[:push_options] || {}
|
||||
push_options: params[:push_options] || {},
|
||||
checkout_sha: Gitlab::DataBuilder::Push.checkout_sha(
|
||||
project.repository, params[:newrev], params[:ref])
|
||||
}
|
||||
end
|
||||
|
||||
def push_data_params(commits:, with_changed_files: true)
|
||||
base_params.merge(
|
||||
{
|
||||
oldrev: params[:oldrev],
|
||||
newrev: params[:newrev],
|
||||
ref: params[:ref],
|
||||
project: project,
|
||||
user: current_user,
|
||||
commits: commits,
|
||||
message: event_message,
|
||||
commits_count: commits_count,
|
||||
with_changed_files: with_changed_files
|
||||
)
|
||||
}
|
||||
end
|
||||
|
||||
def event_push_data
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
---
|
||||
title: Fix pipelines not always being created after a push
|
||||
merge_request: 31927
|
||||
author:
|
||||
type: fixed
|
|
@ -129,8 +129,6 @@ module Gitlab
|
|||
SAMPLE_DATA
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def checkout_sha(repository, newrev, ref)
|
||||
# Checkout sha is nil when we remove branch or tag
|
||||
return if Gitlab::Git.blank_ref?(newrev)
|
||||
|
|
|
@ -76,6 +76,22 @@ describe Git::BranchPushService, services: true do
|
|||
stub_ci_pipeline_to_return_yaml_file
|
||||
end
|
||||
|
||||
it 'creates a pipeline with the right parameters' do
|
||||
expect(Ci::CreatePipelineService)
|
||||
.to receive(:new)
|
||||
.with(project,
|
||||
user,
|
||||
{
|
||||
before: oldrev,
|
||||
after: newrev,
|
||||
ref: ref,
|
||||
checkout_sha: SeedRepo::Commit::ID,
|
||||
push_options: {}
|
||||
}).and_call_original
|
||||
|
||||
subject
|
||||
end
|
||||
|
||||
it "creates a new pipeline" do
|
||||
expect { subject }.to change { Ci::Pipeline.count }
|
||||
|
||||
|
|
Loading…
Reference in a new issue