summaryrefslogtreecommitdiff
path: root/app/services/ci/retry_pipeline_service.rb
diff options
context:
space:
mode:
authorGrzegorz Bizon <grzesiek.bizon@gmail.com>2017-02-14 10:38:17 +0100
committerGrzegorz Bizon <grzesiek.bizon@gmail.com>2017-02-14 11:27:14 +0100
commitc0db4400f4d838e496090a6cd52a65bf2cd2051c (patch)
tree86b2e5997ebef757b49d568395fe447933b56d81 /app/services/ci/retry_pipeline_service.rb
parent21401a39b8d7ef42f71595803a0a82f11f375e71 (diff)
downloadgitlab-ce-c0db4400f4d838e496090a6cd52a65bf2cd2051c.tar.gz
Preserve base service abstraction for retry services
Diffstat (limited to 'app/services/ci/retry_pipeline_service.rb')
-rw-r--r--app/services/ci/retry_pipeline_service.rb30
1 files changed, 16 insertions, 14 deletions
diff --git a/app/services/ci/retry_pipeline_service.rb b/app/services/ci/retry_pipeline_service.rb
index 801eaa59cd6..fd180b2c624 100644
--- a/app/services/ci/retry_pipeline_service.rb
+++ b/app/services/ci/retry_pipeline_service.rb
@@ -1,34 +1,36 @@
module Ci
- class RetryPipelineService
- include Gitlab::Allowable
-
- def initialize(pipeline, user)
+ class RetryPipelineService < ::BaseService
+ def execute(pipeline)
@pipeline = pipeline
- @user = user
- end
- def execute
- unless can?(@user, :update_pipeline, @pipeline)
+ unless can?(current_user, :update_pipeline, pipeline)
raise Gitlab::Access::AccessDeniedError
end
##
- # Reprocess builds in subsequent stages if any
- #
- # TODO, refactor.
+ # Reprocess builds in subsequent stages
#
- @pipeline.builds
+ pipeline.builds
.where('stage_idx > ?', resume_stage.index)
.failed_or_canceled.find_each do |build|
- Ci::RetryBuildService.new(build, @user).reprocess!
+ Ci::RetryBuildService
+ .new(project, current_user)
+ .reprocess(build)
end
##
# Retry builds in the first unsuccessful stage
#
resume_stage.builds.failed_or_canceled.find_each do |build|
- Ci::Build.retry(build, @user)
+ Ci::RetryBuildService
+ .new(project, current_user)
+ .retry(build)
end
+
+ ##
+ # Mark skipped builds as processable again
+ #
+ pipeline.mark_as_processable_after_stage(resume_stage.index)
end
private