diff options
author | Grzegorz Bizon <grzesiek.bizon@gmail.com> | 2017-02-14 10:38:17 +0100 |
---|---|---|
committer | Grzegorz Bizon <grzesiek.bizon@gmail.com> | 2017-02-14 11:27:14 +0100 |
commit | c0db4400f4d838e496090a6cd52a65bf2cd2051c (patch) | |
tree | 86b2e5997ebef757b49d568395fe447933b56d81 /app/services/ci/retry_pipeline_service.rb | |
parent | 21401a39b8d7ef42f71595803a0a82f11f375e71 (diff) | |
download | gitlab-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.rb | 30 |
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 |