class Pipedawg::Job::Kaniko::Build

Pipedawg::Job::Kaniko::Build class

Public Class Methods

new(name, opts = {}) click to toggle source
Calls superclass method Pipedawg::Job::Kaniko::new
# File lib/pipedawg/job/kaniko/build.rb, line 8
def initialize(name, opts = {}) # rubocop:disable Metrics/MethodLength
  opts = {
    build_args: {},
    config: { auths: { '$CI_REGISTRY': { username: '$CI_REGISTRY_USER', password: '$CI_REGISTRY_PASSWORD' } } },
    config_file: '/kaniko/.docker/config.json', context: '${CI_PROJECT_DIR}',
    destinations: ['${CI_REGISTRY_IMAGE}:latest'], dockerfile: 'Dockerfile', external_files: {}, flags: [],
    ignore_paths: [], insecure_registries: [], options: {}, registry_certificates: {}, registry_mirrors: [],
    skip_tls_verify_registry: [], trusted_ca_cert_source_files: [],
    trusted_ca_cert_target_file: '/kaniko/ssl/certs/ca-certificates.crt'
  }.merge(opts)
  super name, opts
  update
end

Public Instance Methods

update() click to toggle source
# File lib/pipedawg/job/kaniko/build.rb, line 22
def update
  require 'json'
  opts[:script] = debug + config + cert_copies + file_copies + Array(kaniko_cmd)
end

Private Instance Methods

build_args() click to toggle source
# File lib/pipedawg/job/kaniko/build.rb, line 62
def build_args
  opts[:build_args].map { |k, v| "--build-arg #{k}=\"#{v}\"" }.join(' ')
end
cert_copies() click to toggle source
# File lib/pipedawg/job/kaniko/build.rb, line 33
def cert_copies
  Array(opts[:trusted_ca_cert_source_files]).map do |cert|
    "cat \"#{cert}\" >> \"#{opts[:trusted_ca_cert_target_file]}\""
  end
end
config() click to toggle source
# File lib/pipedawg/job/kaniko/build.rb, line 29
def config
  ["echo #{opts[:config].to_json.inspect} > \"#{opts[:config_file]}\""]
end
destinations() click to toggle source
# File lib/pipedawg/job/kaniko/build.rb, line 86
def destinations
  opts[:destinations].map { |d| "--destination #{d}" }.join(' ')
end
file_copies() click to toggle source
# File lib/pipedawg/job/kaniko/build.rb, line 39
def file_copies
  opts[:external_files].map do |source, dest|
    "cp \"#{source}\" \"#{opts[:context]}/#{dest}\""
  end
end
flags() click to toggle source
# File lib/pipedawg/job/kaniko/build.rb, line 52
def flags
  flags = opts[:flags].clone
  flags << 'no-push' if opts[:destinations].empty?
  flags.uniq.map { |f| "--#{f}" }.join(' ')
end
ignore_paths() click to toggle source
# File lib/pipedawg/job/kaniko/build.rb, line 66
def ignore_paths
  Array(opts[:ignore_paths]).map { |p| "--ignore-path #{p}" }.join(' ')
end
insecure_registries() click to toggle source
# File lib/pipedawg/job/kaniko/build.rb, line 70
def insecure_registries
  Array(opts[:insecure_registries]).map do |r|
    "--insecure-registry #{r}"
  end.join(' ')
end
kaniko_cmd() click to toggle source
# File lib/pipedawg/job/kaniko/build.rb, line 45
def kaniko_cmd # rubocop:disable Metrics/AbcSize
  ["\"#{opts[:command]}\" --context \"#{opts[:context]}\"",
   "--dockerfile \"#{opts[:dockerfile]}\"", flags, options, build_args,
   ignore_paths, insecure_registries, registry_certificates, registry_mirrors,
   destinations, skip_tls_verify_registries].reject(&:empty?).join(' ')
end
options() click to toggle source
# File lib/pipedawg/job/kaniko/build.rb, line 58
def options
  opts[:options].map { |k, v| "--#{k}=\"#{v}\"" }.join(' ')
end
registry_certificates() click to toggle source
# File lib/pipedawg/job/kaniko/build.rb, line 76
def registry_certificates
  opts[:registry_certificates].map do |k, v|
    "--registry-certificate #{k}=\"#{v}\""
  end.join(' ')
end
registry_mirrors() click to toggle source
# File lib/pipedawg/job/kaniko/build.rb, line 82
def registry_mirrors
  Array(opts[:registry_mirrors]).map { |r| "--registry-mirror #{r}" }.join(' ')
end
skip_tls_verify_registries() click to toggle source
# File lib/pipedawg/job/kaniko/build.rb, line 90
def skip_tls_verify_registries
  Array(opts[:skip_tls_verify_registry]).map do |r|
    "--skip-tls-verify-registry #{r}"
  end.join(' ')
end