summaryrefslogtreecommitdiff
path: root/app/services/ci/retry_pipeline_service.rb
diff options
context:
space:
mode:
authorGrzegorz Bizon <grzesiek.bizon@gmail.com>2017-02-22 09:06:58 +0100
committerGrzegorz Bizon <grzesiek.bizon@gmail.com>2017-02-22 09:06:58 +0100
commit1965482f12688f4f26342b91eca888567d0dac04 (patch)
tree53f4a0865e42bfd1cb188346723eb148db67738b /app/services/ci/retry_pipeline_service.rb
parentd16eed3b096bb01efda90dfea47ac549a9d2ffbc (diff)
downloadgitlab-ce-1965482f12688f4f26342b91eca888567d0dac04.tar.gz
Reprocess jobs in stages once when retrying pipeline
Diffstat (limited to 'app/services/ci/retry_pipeline_service.rb')
-rw-r--r--app/services/ci/retry_pipeline_service.rb15
1 files changed, 10 insertions, 5 deletions
diff --git a/app/services/ci/retry_pipeline_service.rb b/app/services/ci/retry_pipeline_service.rb
index 7fcbac6399a..ca19b828e1c 100644
--- a/app/services/ci/retry_pipeline_service.rb
+++ b/app/services/ci/retry_pipeline_service.rb
@@ -5,13 +5,18 @@ module Ci
raise Gitlab::Access::AccessDeniedError
end
- pipeline.builds.failed_or_canceled.find_each do |build|
- next unless build.retryable?
+ pipeline.builds.failed_or_canceled.tap do |builds|
+ stage_idx = builds.order('stage_idx ASC')
+ .pluck('DISTINCT stage_idx').first
- pipeline.mark_as_processable_after_stage(build.stage_idx)
+ pipeline.mark_as_processable_after_stage(stage_idx)
- Ci::RetryBuildService.new(project, current_user)
- .reprocess(build)
+ builds.find_each do |build|
+ next unless build.retryable?
+
+ Ci::RetryBuildService.new(project, current_user)
+ .reprocess(build)
+ end
end
MergeRequests::AddTodoWhenBuildFailsService