Merge branch 'basecamp:main' into buildpacks
This commit is contained in:
@@ -14,6 +14,10 @@ class Kamal::Cli::Build < Kamal::Cli::Base
|
||||
def push
|
||||
cli = self
|
||||
|
||||
# Ensure pre-connect hooks run before the build, they may needed for a remote builder
|
||||
# or the pre-build hooks.
|
||||
pre_connect_if_required
|
||||
|
||||
ensure_docker_installed
|
||||
login_to_registry_locally
|
||||
|
||||
|
||||
@@ -120,18 +120,6 @@ class Kamal::Cli::Proxy < Kamal::Cli::Base
|
||||
execute *KAMAL.proxy.ensure_apps_config_directory
|
||||
|
||||
execute *KAMAL.proxy.run
|
||||
|
||||
KAMAL.roles_on(host).select(&:running_proxy?).each do |role|
|
||||
app = KAMAL.app(role: role, host: host)
|
||||
|
||||
version = capture_with_info(*app.current_running_version, raise_on_non_zero_exit: false).strip
|
||||
endpoint = capture_with_info(*app.container_id_for_version(version)).strip
|
||||
|
||||
if endpoint.present?
|
||||
info "Deploying #{endpoint} for role `#{role}` on #{host}..."
|
||||
execute *app.deploy(target: endpoint)
|
||||
end
|
||||
end
|
||||
end
|
||||
run_hook "post-proxy-reboot", hosts: host_list
|
||||
end
|
||||
|
||||
@@ -11,7 +11,7 @@ class Kamal::Commander::Specifics
|
||||
@primary_role = primary_or_first_role(roles_on(primary_host))
|
||||
|
||||
stable_sort!(roles) { |role| role == primary_role ? 0 : 1 }
|
||||
stable_sort!(hosts) { |host| roles_on(host).any? { |role| role == primary_role } ? 0 : 1 }
|
||||
sort_primary_role_hosts_first!(hosts)
|
||||
end
|
||||
|
||||
def roles_on(host)
|
||||
@@ -19,7 +19,7 @@ class Kamal::Commander::Specifics
|
||||
end
|
||||
|
||||
def app_hosts
|
||||
config.app_hosts & specified_hosts
|
||||
@app_hosts ||= sort_primary_role_hosts_first!(config.app_hosts & specified_hosts)
|
||||
end
|
||||
|
||||
def proxy_hosts
|
||||
@@ -55,4 +55,8 @@ class Kamal::Commander::Specifics
|
||||
specified_hosts
|
||||
end
|
||||
end
|
||||
|
||||
def sort_primary_role_hosts_first!(hosts)
|
||||
stable_sort!(hosts) { |host| roles_on(host).any? { |role| role == primary_role } ? 0 : 1 }
|
||||
end
|
||||
end
|
||||
|
||||
@@ -63,7 +63,7 @@ class Kamal::Configuration
|
||||
@env = Env.new(config: @raw_config.env || {}, secrets: secrets)
|
||||
|
||||
@logging = Logging.new(logging_config: @raw_config.logging)
|
||||
@proxy = Proxy.new(config: self, proxy_config: @raw_config.key?(:proxy) ? @raw_config.proxy : {})
|
||||
@proxy = Proxy.new(config: self, proxy_config: @raw_config.proxy)
|
||||
@proxy_boot = Proxy::Boot.new(config: self)
|
||||
@ssh = Ssh.new(config: self)
|
||||
@sshkit = Sshkit.new(config: self)
|
||||
|
||||
@@ -10,11 +10,6 @@
|
||||
# They are application-specific, so they are not shared when multiple applications
|
||||
# run on the same proxy.
|
||||
#
|
||||
# The proxy is enabled by default on the primary role but can be disabled by
|
||||
# setting `proxy: false`.
|
||||
#
|
||||
# It is disabled by default on all other roles but can be enabled by setting
|
||||
# `proxy: true` or providing a proxy configuration.
|
||||
proxy:
|
||||
|
||||
# Hosts
|
||||
@@ -113,3 +108,30 @@ proxy:
|
||||
response_headers:
|
||||
- X-Request-ID
|
||||
- X-Request-Start
|
||||
|
||||
# Enabling/disabling the proxy on roles
|
||||
#
|
||||
# The proxy is enabled by default on the primary role but can be disabled by
|
||||
# setting `proxy: false` in the primary role's configuration.
|
||||
#
|
||||
# ```yaml
|
||||
# servers:
|
||||
# web:
|
||||
# hosts:
|
||||
# - ...
|
||||
# proxy: false
|
||||
# ```
|
||||
#
|
||||
# It is disabled by default on all other roles but can be enabled by setting
|
||||
# `proxy: true` or providing a proxy configuration for that role.
|
||||
#
|
||||
# ```yaml
|
||||
# servers:
|
||||
# web:
|
||||
# hosts:
|
||||
# - ...
|
||||
# web2:
|
||||
# hosts:
|
||||
# - ...
|
||||
# proxy: true
|
||||
# ```
|
||||
|
||||
@@ -11,6 +11,7 @@ class Kamal::Configuration::Proxy
|
||||
def initialize(config:, proxy_config:, context: "proxy")
|
||||
@config = config
|
||||
@proxy_config = proxy_config
|
||||
@proxy_config = {} if @proxy_config.nil?
|
||||
validate! @proxy_config, with: Kamal::Configuration::Validator::Proxy, context: context
|
||||
end
|
||||
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
module Kamal
|
||||
VERSION = "2.6.0"
|
||||
VERSION = "2.6.1"
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user