Better error reporting and failure capture for build push

This commit is contained in:
David Heinemeier Hansson
2023-01-27 15:56:07 +01:00
parent 03fdb9a9ac
commit f58e5e0935

View File

@@ -10,15 +10,18 @@ class Mrsk::Cli::Build < Mrsk::Cli::Base
desc "push", "Build locally and push app image to registry" desc "push", "Build locally and push app image to registry"
def push def push
verbose = options[:verbose] verbose = options[:verbose]
cli = self
run_locally do run_locally do
begin begin
MRSK.verbosity(:debug) { execute *MRSK.builder.push } MRSK.verbosity(:debug) { execute *MRSK.builder.push }
rescue SSHKit::Command::Failed => e rescue SSHKit::Command::Failed => e
if e.message =~ /no such file or directory/ if e.message =~ /(no builder)|(no such file or directory)/
error "Missing compatible builder, so creating a new one first" error "Missing compatible builder, so creating a new one first"
execute *MRSK.builder.create
MRSK.verbosity(:debug) { execute *MRSK.builder.push } if cli.create
MRSK.verbosity(:debug) { execute *MRSK.builder.push }
end
else else
raise raise
end end
@@ -34,8 +37,17 @@ class Mrsk::Cli::Build < Mrsk::Cli::Base
desc "create", "Create a local build setup" desc "create", "Create a local build setup"
def create def create
run_locally do run_locally do
debug "Using builder: #{MRSK.builder.name}" begin
execute *MRSK.builder.create 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
end end