diff options
author | Grzegorz Bizon <grzesiek.bizon@gmail.com> | 2017-02-13 15:14:40 +0100 |
---|---|---|
committer | Grzegorz Bizon <grzesiek.bizon@gmail.com> | 2017-02-13 15:14:40 +0100 |
commit | 19ef4083f373dd5fdc6b4c59325a4cb14179e699 (patch) | |
tree | 281a0820d22651199b8e7aba6792d13fd3b98178 /app/services/ci/retry_pipeline_service.rb | |
parent | 1be454e71272f1a6489883e9d4b27c40c6277591 (diff) | |
download | gitlab-ce-19ef4083f373dd5fdc6b4c59325a4cb14179e699.tar.gz |
Add a separate CI/CD pipeline retry service class
Diffstat (limited to 'app/services/ci/retry_pipeline_service.rb')
-rw-r--r-- | app/services/ci/retry_pipeline_service.rb | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/app/services/ci/retry_pipeline_service.rb b/app/services/ci/retry_pipeline_service.rb new file mode 100644 index 00000000000..f873acc9964 --- /dev/null +++ b/app/services/ci/retry_pipeline_service.rb @@ -0,0 +1,22 @@ +module Ci + class RetryPipelineService + include Gitlab::Allowable + + def initialize(pipeline, user) + @pipeline = pipeline + @user = user + end + + def execute + unless can?(@user, :update_pipeline, @pipeline) + raise Gitlab::Access::AccessDeniedError + end + + @pipeline.stages.each do |stage| + stage.builds.failed_or_canceled.find_each do |build| + Ci::Build.retry(build, @user) + end + end + end + end +end |