Move option to deploy/redeploy, rename to skip-push

This commit is contained in:
Samuel Sieg
2023-03-13 16:02:24 +01:00
parent 6232175ef8
commit cb15800d25
4 changed files with 32 additions and 18 deletions

View File

@@ -12,7 +12,6 @@ module Mrsk::Cli
class_option :quiet, type: :boolean, aliases: "-q", desc: "Minimal logging" class_option :quiet, type: :boolean, aliases: "-q", desc: "Minimal logging"
class_option :version, desc: "Run commands against a specific app version" class_option :version, desc: "Run commands against a specific app version"
class_option :use_prebuilt_image, type: :boolean, default: false, desc: "Use prebuilt image, skip building"
class_option :primary, type: :boolean, aliases: "-p", desc: "Run commands only on primary host instead of all" class_option :primary, type: :boolean, aliases: "-p", desc: "Run commands only on primary host instead of all"
class_option :hosts, aliases: "-h", desc: "Run commands on these hosts instead of all (separate by comma)" class_option :hosts, aliases: "-h", desc: "Run commands on these hosts instead of all (separate by comma)"
@@ -40,10 +39,9 @@ module Mrsk::Cli
def initialize_commander(options) def initialize_commander(options)
MRSK.tap do |commander| MRSK.tap do |commander|
commander.config_file = Pathname.new(File.expand_path(options[:config_file])) commander.config_file = Pathname.new(File.expand_path(options[:config_file]))
commander.destination = options[:destination] commander.destination = options[:destination]
commander.version = options[:version] commander.version = options[:version]
commander.use_prebuilt_image = options[:use_prebuilt_image]
commander.specific_hosts = options[:hosts]&.split(",") commander.specific_hosts = options[:hosts]&.split(",")
commander.specific_roles = options[:roles]&.split(",") commander.specific_roles = options[:roles]&.split(",")

View File

@@ -1,7 +1,7 @@
class Mrsk::Cli::Build < Mrsk::Cli::Base class Mrsk::Cli::Build < Mrsk::Cli::Base
desc "deliver", "Build app and push app image to registry then pull image on servers" desc "deliver", "Build app and push app image to registry then pull image on servers"
def deliver def deliver
push unless MRSK.use_prebuilt_image push
pull pull
end end

View File

@@ -9,42 +9,58 @@ class Mrsk::Cli::Main < Mrsk::Cli::Base
end end
desc "deploy", "Deploy app to servers" desc "deploy", "Deploy app to servers"
option :skip_push, aliases: "-P", type: :boolean, default: false, desc: "Skip image build and push"
def deploy def deploy
invoke_options = options.without(:skip_push)
runtime = print_runtime do runtime = print_runtime do
say "Ensure curl and Docker are installed...", :magenta say "Ensure curl and Docker are installed...", :magenta
invoke "mrsk:cli:server:bootstrap" invoke "mrsk:cli:server:bootstrap", [], invoke_options
say "Log into image registry...", :magenta say "Log into image registry...", :magenta
invoke "mrsk:cli:registry:login" invoke "mrsk:cli:registry:login"
say "Build and push app image...", :magenta if options[:skip_push]
invoke "mrsk:cli:build:deliver" say "Pull app image...", :magenta
invoke "mrsk:cli:build:pull", [], invoke_options
else
say "Build and push app image...", :magenta
invoke "mrsk:cli:build:deliver", [], invoke_options
end
say "Ensure Traefik is running...", :magenta say "Ensure Traefik is running...", :magenta
invoke "mrsk:cli:traefik:boot" invoke "mrsk:cli:traefik:boot", [], invoke_options
say "Ensure app can pass healthcheck...", :magenta say "Ensure app can pass healthcheck...", :magenta
invoke "mrsk:cli:healthcheck:perform" invoke "mrsk:cli:healthcheck:perform", [], invoke_options
invoke "mrsk:cli:app:boot" invoke "mrsk:cli:app:boot", [], invoke_options
say "Prune old containers and images...", :magenta say "Prune old containers and images...", :magenta
invoke "mrsk:cli:prune:all" invoke "mrsk:cli:prune:all", [], invoke_options
end end
audit_broadcast "Deployed app in #{runtime.to_i} seconds" unless options[:skip_broadcast] audit_broadcast "Deployed app in #{runtime.to_i} seconds" unless options[:skip_broadcast]
end end
desc "redeploy", "Deploy app to servers without bootstrapping servers, starting Traefik, pruning, and registry login" desc "redeploy", "Deploy app to servers without bootstrapping servers, starting Traefik, pruning, and registry login"
option :skip_push, aliases: "-P", type: :boolean, default: false, desc: "Skip image build and push"
def redeploy def redeploy
invoke_options = options.without(:skip_push)
runtime = print_runtime do runtime = print_runtime do
say "Build and push app image...", :magenta if options[:skip_push]
invoke "mrsk:cli:build:deliver" say "Pull app image...", :magenta
invoke "mrsk:cli:build:pull", [], invoke_options
else
say "Build and push app image...", :magenta
invoke "mrsk:cli:build:deliver", [], invoke_options
end
say "Ensure app can pass healthcheck...", :magenta say "Ensure app can pass healthcheck...", :magenta
invoke "mrsk:cli:healthcheck:perform" invoke "mrsk:cli:healthcheck:perform", [], invoke_options
invoke "mrsk:cli:app:boot" invoke "mrsk:cli:app:boot", [], invoke_options
end end
audit_broadcast "Redeployed app in #{runtime.to_i} seconds" unless options[:skip_broadcast] audit_broadcast "Redeployed app in #{runtime.to_i} seconds" unless options[:skip_broadcast]

View File

@@ -1,7 +1,7 @@
require "active_support/core_ext/enumerable" require "active_support/core_ext/enumerable"
class Mrsk::Commander class Mrsk::Commander
attr_accessor :config_file, :destination, :verbosity, :version, :use_prebuilt_image attr_accessor :config_file, :destination, :verbosity, :version
def initialize(config_file: nil, destination: nil, verbosity: :info) def initialize(config_file: nil, destination: nil, verbosity: :info)
@config_file, @destination, @verbosity = config_file, destination, verbosity @config_file, @destination, @verbosity = config_file, destination, verbosity