class Buildkite::Builder::Pipeline

Constants

PIPELINE_DEFINITION_FILE

Attributes

artifacts[R]
data[R]
dsl[R]
extensions[R]
logger[R]
plugins[R]
root[R]

Public Class Methods

new(root, logger: nil) click to toggle source
# File lib/buildkite/builder/pipeline.rb, line 26
def initialize(root, logger: nil)
  @root = root
  @logger = logger || Logger.new(File::NULL)
  @artifacts = []
  @plugins = {}
  @dsl = Dsl.new(self)
  @extensions = ExtensionManager.new(self)
  @data = Data.new

  use(Extensions::Use)
  use(Extensions::Lib)
  use(Extensions::Env)
  use(Extensions::Notify)
  use(Extensions::Steps)
  load_manifests
end

Public Instance Methods

to_h() click to toggle source
# File lib/buildkite/builder/pipeline.rb, line 59
def to_h
  @pipeline_hash ||= begin
    results = benchmark("\nDone (%s)".color(:springgreen)) do
      dsl.instance_eval(&pipeline_definition)
      extensions.build
    end
    logger.info(results)
    # Build the pipeline definition from pipeline data.
    Pipelines::Helpers.sanitize(data.to_definition)
  end
end
to_yaml() click to toggle source
# File lib/buildkite/builder/pipeline.rb, line 71
def to_yaml
  YAML.dump(to_h)
end
upload() click to toggle source
# File lib/buildkite/builder/pipeline.rb, line 43
def upload
  # Upload the pipeline.
  Tempfile.create(['pipeline', '.yml']) do |file|
    file.sync = true
    file.write(to_yaml)

    logger.info '+++ :paperclip: Uploading pipeline.yml as artifact'
    Buildkite::Pipelines::Command.artifact!(:upload, file.path)
    logger.info '+++ :pipeline: Uploading pipeline'
    Buildkite::Pipelines::Command.pipeline!(:upload, file.path)
  end

  logger.info '+++ :paperclip: Uploading artifacts'
  upload_artifacts
end

Private Instance Methods

load_manifests() click to toggle source
# File lib/buildkite/builder/pipeline.rb, line 79
def load_manifests
  Loaders::Manifests.load(root).each do |name, asset|
    Manifest[name] = asset
  end
end
pipeline_definition() click to toggle source
# File lib/buildkite/builder/pipeline.rb, line 95
def pipeline_definition
  @pipeline_definition ||= load_definition(root.join(PIPELINE_DEFINITION_FILE), Definition::Pipeline)
end
upload_artifacts() click to toggle source
# File lib/buildkite/builder/pipeline.rb, line 85
def upload_artifacts
  return if artifacts.empty?

  artifacts.each do |path|
    if File.exist?(path)
      Buildkite::Pipelines::Command.artifact!(:upload, path)
    end
  end
end