summaryrefslogtreecommitdiff
path: root/app/services/ci/retry_build_service.rb
diff options
context:
space:
mode:
Diffstat (limited to 'app/services/ci/retry_build_service.rb')
-rw-r--r--app/services/ci/retry_build_service.rb61
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