58 lines
1.4 KiB
Ruby
58 lines
1.4 KiB
Ruby
require "mrsk/cli/base"
|
|
|
|
class Mrsk::Cli::Build < Mrsk::Cli::Base
|
|
desc "deliver", "Deliver a newly built app image to servers"
|
|
def deliver
|
|
invoke :push
|
|
invoke :pull
|
|
end
|
|
|
|
desc "push", "Build locally and push app image to registry"
|
|
def push
|
|
verbose = options[:verbose]
|
|
|
|
run_locally do
|
|
begin
|
|
MRSK.verbosity(:debug) { execute *MRSK.builder.push }
|
|
rescue SSHKit::Command::Failed => e
|
|
if e.message =~ /no such file or directory/
|
|
error "Missing compatible builder, so creating a new one first"
|
|
execute *MRSK.builder.create
|
|
MRSK.verbosity(:debug) { execute *MRSK.builder.push }
|
|
else
|
|
raise
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
desc "pull", "Pull app image from the registry onto servers"
|
|
def pull
|
|
on(MRSK.hosts) { execute *MRSK.builder.pull }
|
|
end
|
|
|
|
desc "create", "Create a local build setup"
|
|
def create
|
|
run_locally do
|
|
debug "Using builder: #{MRSK.builder.name}"
|
|
execute *MRSK.builder.create
|
|
end
|
|
end
|
|
|
|
desc "remove", "Remove local build setup"
|
|
def remove
|
|
run_locally do
|
|
debug "Using builder: #{MRSK.builder.name}"
|
|
execute *MRSK.builder.remove
|
|
end
|
|
end
|
|
|
|
desc "details", "Show the name of the configured builder"
|
|
def details
|
|
run_locally do
|
|
puts "Builder: #{MRSK.builder.name}"
|
|
puts capture(*MRSK.builder.info)
|
|
end
|
|
end
|
|
end
|