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_build_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_build_service.rb')
-rw-r--r-- | app/services/ci/retry_build_service.rb | 61 |
1 files changed, 29 insertions, 32 deletions
diff --git a/app/services/ci/retry_build_service.rb b/app/services/ci/retry_build_service.rb index b7a9a55dd9e..e470bd6ee6a 100644 --- a/app/services/ci/retry_build_service.rb +++ b/app/services/ci/retry_build_service.rb @@ -1,47 +1,44 @@ module Ci - class RetryBuildService - include Gitlab::Allowable + class RetryBuildService < ::BaseService + def execute(build) + self.retry(build).tap do |new_build| + MergeRequests::AddTodoWhenBuildFailsService + .new(build.project, current_user) + .close(new_build) - def initialize(build, user) - @build = build - @user = user - @pipeline = build.pipeline + build.pipeline + .mark_as_processable_after_stage(build.stage_idx) + end end - def retry! - reprocess!.tap do |new_build| + def retry(build) + self.reprocess(build).tap do |new_build| new_build.enqueue! - - MergeRequests::AddTodoWhenBuildFailsService - .new(@build.project, @user) - .close(new_build) - - @pipeline.mark_as_processable_after_stage(@build.stage_idx) end end - def reprocess! - unless can?(@user, :update_build, @build) + def reprocess(build) + unless can?(current_user, :update_build, build) raise Gitlab::Access::AccessDeniedError end Ci::Build.create( - ref: @build.ref, - tag: @build.tag, - options: @build.options, - commands: @build.commands, - tag_list: @build.tag_list, - project: @build.project, - pipeline: @build.pipeline, - name: @build.name, - allow_failure: @build.allow_failure, - stage: @build.stage, - stage_idx: @build.stage_idx, - trigger_request: @build.trigger_request, - yaml_variables: @build.yaml_variables, - when: @build.when, - environment: @build.environment, - user: @user) + ref: build.ref, + tag: build.tag, + options: build.options, + commands: build.commands, + tag_list: build.tag_list, + project: build.project, + pipeline: build.pipeline, + name: build.name, + allow_failure: build.allow_failure, + stage: build.stage, + stage_idx: build.stage_idx, + trigger_request: build.trigger_request, + yaml_variables: build.yaml_variables, + when: build.when, + environment: build.environment, + user: current_user) end end end |