Add latest changes from gitlab-org/gitlab@15-7-stable-ee

This commit is contained in:
GitLab Bot 2023-04-14 19:33:05 +00:00
parent 7ef79412d3
commit dbe77d4ac7
2 changed files with 26 additions and 5 deletions

View File

@ -19,7 +19,7 @@ module Ci
end
# rubocop: disable CodeReuse/ActiveRecord
def clone!(job, variables: [], enqueue_if_actionable: false)
def clone!(job, variables: [], enqueue_if_actionable: false, start_pipeline: false)
# Cloning a job requires a strict type check to ensure
# the attributes being used for the clone are taken straight
# from the model and not overridden by other abstractions.
@ -32,7 +32,11 @@ module Ci
new_job.set_enqueue_immediately!
end
start_pipeline_proc = -> { start_pipeline(job, new_job) } if start_pipeline
new_job.run_after_commit do
start_pipeline_proc&.call
::Ci::CopyCrossDatabaseAssociationsService.new.execute(job, new_job)
::Deployments::CreateForBuildService.new.execute(new_job)
@ -59,15 +63,12 @@ module Ci
def check_assignable_runners!(job); end
def retry_job(job, variables: [])
clone!(job, variables: variables, enqueue_if_actionable: true).tap do |new_job|
clone!(job, variables: variables, enqueue_if_actionable: true, start_pipeline: true).tap do |new_job|
check_assignable_runners!(new_job) if new_job.is_a?(Ci::Build)
next if new_job.failed?
ResetSkippedJobsService.new(project, current_user).execute(job)
Ci::PipelineCreation::StartPipelineService.new(job.pipeline).execute
new_job.reset
end
end
@ -76,6 +77,11 @@ module Ci
raise Gitlab::Access::AccessDeniedError, '403 Forbidden'
end
end
def start_pipeline(job, new_job)
Ci::PipelineCreation::StartPipelineService.new(job.pipeline).execute
new_job.reset
end
end
end

View File

@ -292,6 +292,21 @@ RSpec.describe Ci::RetryJobService do
it_behaves_like 'retries the job'
context 'automatic retryable build' do
let!(:auto_retryable_build) do
create(:ci_build, pipeline: pipeline, ci_stage: stage, user: user, options: { retry: 1 })
end
def drop_build!
auto_retryable_build.drop_with_exit_code!('test failure', 1)
end
it 'creates a new build and enqueues BuildQueueWorker' do
expect { drop_build! }.to change { Ci::Build.count }.by(1)
.and change { BuildQueueWorker.jobs.count }.by(1)
end
end
context 'when there are subsequent jobs that are skipped' do
let!(:subsequent_build) do
create(:ci_build, :skipped, pipeline: pipeline, ci_stage: deploy_stage)