Sha256: 1cb8a6d4dc0cb849e6a91bdf2504ffaa2f9570ca1638c4d5c7b08e6f5d96f350
Contents?: true
Size: 1.73 KB
Versions: 12
Compression:
Stored size: 1.73 KB
Contents
require 'docker' require_relative '../tasklib' require_relative '../../docker_output' module RakeDocker module Tasks class Build < TaskLib parameter :name, :default => :build parameter :argument_names, :default => [] parameter :image_name, :required => true parameter :repository_name, :required => true parameter :credentials parameter :build_args parameter :work_directory, :required => true parameter :prepare_task, :default => :prepare def process_arguments(args) self.name = args[0] if args[0] end def define prerequisites = prepare_task ? [scoped_task_name(prepare_task)] : [] desc "Build #{image_name} image" task name, argument_names => prerequisites do |_, args| params = OpenStruct.new( image_name: image_name, repository_name: repository_name, credentials: credentials, work_directory: work_directory ) derived_credentials = credentials.respond_to?(:call) ? credentials.call(*[args, params].slice(0, credentials.arity)) : credentials Docker.authenticate!(derived_credentials) if derived_credentials options = {t: repository_name} options = options.merge( buildargs: JSON.generate(build_args)) if build_args Docker::Image.build_from_dir( File.join(work_directory, image_name), options) do |chunk| DockerOutput.print chunk end end end private def scoped_task_name(task_name) Rake.application.current_scope.path_with_task_name(task_name) end end end end
Version data entries
12 entries across 12 versions & 1 rubygems