class Burner::Pipeline

The root package. A Pipeline contains the job configurations along with the steps. The steps reference jobs and tell you the order of the jobs to run. If steps is nil then all jobs will execute in their declared order.

Attributes

steps[R]

Public Class Methods

new(jobs: [], steps: nil) click to toggle source
# File lib/burner/pipeline.rb, line 24
def initialize(jobs: [], steps: nil)
  @steps = JobSet
           .new(jobs)
           .jobs(steps)
           .map { |job| Step.new(job) }
end

Public Instance Methods

execute(output: Output.new, payload: Payload.new) click to toggle source

The main entry-point for kicking off a pipeline.

# File lib/burner/pipeline.rb, line 32
def execute(output: Output.new, payload: Payload.new)
  output.write("Pipeline started with #{steps.length} step(s)")

  output_params(payload.params, output)
  output.ruler

  time_in_seconds = Benchmark.measure do
    steps.each do |step|
      step.perform(output, payload)

      if payload.halt_pipeline?
        output.detail('Payload was halted, ending pipeline.')
        break
      end
    end
  end.real.round(3)

  output.ruler
  output.write("Pipeline ended, took #{time_in_seconds} second(s) to complete")

  payload
end

Private Instance Methods

output_params(params, output) click to toggle source
# File lib/burner/pipeline.rb, line 57
def output_params(params, output)
  if params.any?
    output.write('Parameters:')
  else
    output.write('No parameters passed in.')
  end

  params.each { |key, value| output.detail("#{key}: #{value}") }
end