Match word Language Suggest what accessories are There are also accessories Default already shown Better example Warn about secrets being shown Now also accessories Wording Clarifications Clarify how to see options General option for all Options important here too Hide subcommands Implied Simpler as just version Be concise Missing word Wordsmith Simpler and uniform words are better Clarify what exactly we're manipulating Wordsmithing Implicit Simpler language Hide subcommands Clarify its container management Just one per server Simpler
70 lines
1.7 KiB
Ruby
70 lines
1.7 KiB
Ruby
class Mrsk::Cli::Build < Mrsk::Cli::Base
|
|
desc "deliver", "Build app and push app image to registry then pull image on servers"
|
|
def deliver
|
|
invoke :push
|
|
invoke :pull
|
|
end
|
|
|
|
desc "push", "Build and push app image to registry"
|
|
def push
|
|
cli = self
|
|
|
|
run_locally do
|
|
begin
|
|
MRSK.with_verbosity(:debug) { execute *MRSK.builder.push }
|
|
rescue SSHKit::Command::Failed => e
|
|
if e.message =~ /(no builder)|(no such file or directory)/
|
|
error "Missing compatible builder, so creating a new one first"
|
|
|
|
if cli.create
|
|
MRSK.with_verbosity(:debug) { execute *MRSK.builder.push }
|
|
end
|
|
else
|
|
raise
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
desc "pull", "Pull app image from registry onto servers"
|
|
def pull
|
|
on(MRSK.hosts) do
|
|
execute *MRSK.auditor.record("Pulled image with version #{MRSK.version}"), verbosity: :debug
|
|
execute *MRSK.builder.pull
|
|
end
|
|
end
|
|
|
|
desc "create", "Create a build setup"
|
|
def create
|
|
run_locally do
|
|
begin
|
|
debug "Using builder: #{MRSK.builder.name}"
|
|
execute *MRSK.builder.create
|
|
rescue SSHKit::Command::Failed => e
|
|
if e.message =~ /stderr=(.*)/
|
|
error "Couldn't create remote builder: #{$1}"
|
|
false
|
|
else
|
|
raise
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
desc "remove", "Remove build setup"
|
|
def remove
|
|
run_locally do
|
|
debug "Using builder: #{MRSK.builder.name}"
|
|
execute *MRSK.builder.remove
|
|
end
|
|
end
|
|
|
|
desc "details", "Show build setup"
|
|
def details
|
|
run_locally do
|
|
puts "Builder: #{MRSK.builder.name}"
|
|
puts capture(*MRSK.builder.info)
|
|
end
|
|
end
|
|
end
|