summaryrefslogtreecommitdiff
path: root/app/services/ci/retry_pipeline_service.rb
blob: f873acc9964c364ba9afebe2b8ce465f322e1bf6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
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