class Rudder::DSL::Group

Concourse group. Logically groups together Concourse jobs in the UI.

DSL Usage:

{Rudder::DSL::Group}'s are the simplest element of any Concourse Pipeline, defined by only a name and a non-empty list of jobs.

@example

# Name's are typically set during initialization
group :my_awesome_group do # => Name is set to :my_awesome_group

# but the name may be changed post construction as well
group :not_the_best_name do # => Name initialized to :not_the_best_name
  name :the_best_name
end # => but is set to :the_best_name after the block is executed

@example

# Job's are always set post construction. They can be added
# individually:
group :my_awesome_group do
  job :some_prereq
  job :my_awesome_work
end # => group.jobs = [:some_prereq, :my_awesome_work]

# and they can be added in collections
group :my_awesome_group do
  jobs :a_job, :and_another, :and_one_more
end # => group.jobs = [:a_job, :and_another, :and_one_more]

Public Class Methods

new(name) click to toggle source

All {Rudder::DSL::Group}'s require

  • Name of the group

  • A list of jobs in the group

Jobs are added after initilization.

@param [String, Symbol] the non-nil name of this group @raise [ArgumentError] if name is +nil

Calls superclass method
# File lib/rudder/dsl/group.rb, line 53
def initialize(name)
  raise super.ArgumentError 'Name cannot be nil' if name.nil?

  @name = name
  @jobs = Set.new
end

Public Instance Methods

job(job_name) click to toggle source

Add a single job to the jobs list

@param job_name [String, Symbol] to add to the jobs list @return [Set<String, Symbol>] the latest list of jobs

# File lib/rudder/dsl/group.rb, line 78
def job(job_name)
  jobs job_name
end
jobs(*args) click to toggle source

Adds all the jobs to the jobs list

@param *args [*String, *Symbol] collection of jobs to add to this

{Rudder::DSL::Group}

@return [Set<String, Symbol>] the latest list of jobs

# File lib/rudder/dsl/group.rb, line 89
def jobs(*args)
  args.each { |arg| @jobs << arg }
  @jobs
end
name(name = nil) click to toggle source

Replace's this {Rudder::DSL::Group}'s name unless name is nil.

@param name [String, Symbol] the new name to use. Ignored if nil. @return [String, Symbol] the latest component name.

# File lib/rudder/dsl/group.rb, line 67
def name(name = nil)
  @name = name unless name.nil?
  @name
end
to_h() click to toggle source

@return [Hash] YAML friendly Hash representation of this resource

@raise [RuntimeError] if name is nil or jobs is empty

# File lib/rudder/dsl/group.rb, line 99
def to_h
  raise 'Groups require a name'         if @name.nil?
  raise 'Groups require at least 1 job' if @jobs.empty?

  {
    'name' => @name.to_s,
    'jobs' => @jobs.to_a.map(&:to_s)
  }
end