diff options
Diffstat (limited to 'app/services/ci/retry_build_service.rb')
-rw-r--r-- | app/services/ci/retry_build_service.rb | 35 |
1 files changed, 13 insertions, 22 deletions
diff --git a/app/services/ci/retry_build_service.rb b/app/services/ci/retry_build_service.rb index 89fe4ff9f60..7e5d5373648 100644 --- a/app/services/ci/retry_build_service.rb +++ b/app/services/ci/retry_build_service.rb @@ -25,10 +25,6 @@ module Ci Gitlab::OptimisticLocking.retry_lock(new_build, name: 'retry_build', &:enqueue) AfterRequeueJobService.new(project, current_user).execute(build) - - ::MergeRequests::AddTodoWhenBuildFailsService - .new(project: project, current_user: current_user) - .close(new_build) end end @@ -42,16 +38,25 @@ module Ci check_access!(build) new_build = clone_build(build) + + new_build.run_after_commit do + ::MergeRequests::AddTodoWhenBuildFailsService + .new(project: project) + .close(new_build) + end + + if create_deployment_in_separate_transaction? + new_build.run_after_commit do |new_build| + ::Deployments::CreateForBuildService.new.execute(new_build) + end + end + ::Ci::Pipelines::AddJobService.new(build.pipeline).execute!(new_build) do |job| BulkInsertableAssociations.with_bulk_insert do job.save! end end - if create_deployment_in_separate_transaction? - clone_deployment!(new_build, build) - end - build.reset # refresh the data to get new values of `retried` and `processed`. new_build @@ -95,20 +100,6 @@ module Ci .deployment_attributes_for(new_build, old_build.persisted_environment) end - def clone_deployment!(new_build, old_build) - return unless old_build.deployment.present? - - # We should clone the previous deployment attributes instead of initializing - # new object with `Seed::Deployment`. - # See https://gitlab.com/gitlab-org/gitlab/-/issues/347206 - deployment = ::Gitlab::Ci::Pipeline::Seed::Deployment - .new(new_build, old_build.persisted_environment).to_resource - - return unless deployment - - new_build.create_deployment!(deployment.attributes) - end - def create_deployment_in_separate_transaction? strong_memoize(:create_deployment_in_separate_transaction) do ::Feature.enabled?(:create_deployment_in_separate_transaction, project, default_enabled: :yaml) |