Move all files on the host under a common directory

This will make running kamal remove simpler, we can just clean up that
directory.
This commit is contained in:
Donal McBreen
2024-09-12 15:40:32 +01:00
parent cb73c730f9
commit c21757f747
20 changed files with 112 additions and 107 deletions

View File

@@ -101,7 +101,7 @@ module Kamal::Cli
end
def acquire_lock
ensure_run_and_locks_directory
ensure_service_and_locks_directory
raise_if_locked do
say "Acquiring the deploy lock...", :magenta
@@ -174,9 +174,9 @@ module Kamal::Cli
instance_variable_get("@_invocations").first
end
def ensure_run_and_locks_directory
def ensure_service_and_locks_directory
on(KAMAL.hosts) do
execute(*KAMAL.server.ensure_run_directory)
execute(*KAMAL.server.ensure_service_directory)
end
on(KAMAL.primary_host) do

View File

@@ -12,7 +12,7 @@ class Kamal::Cli::Lock < Kamal::Cli::Base
option :message, aliases: "-m", type: :string, desc: "A lock message", required: true
def acquire
message = options[:message]
ensure_run_and_locks_directory
ensure_service_and_locks_directory
raise_if_locked do
on(KAMAL.primary_host) do

View File

@@ -36,8 +36,6 @@ class Kamal::Cli::Server < Kamal::Cli::Base
missing << host
end
end
execute(*KAMAL.server.ensure_run_directory)
end
if missing.any?

View File

@@ -3,18 +3,18 @@ module Kamal::Commands::App::Assets
asset_container = "#{role.container_prefix}-assets"
combine \
make_directory(role.asset_extracted_path),
make_directory(role.asset_extracted_directory),
[ *docker(:stop, "-t 1", asset_container, "2> /dev/null"), "|| true" ],
docker(:run, "--name", asset_container, "--detach", "--rm", "--entrypoint", "sleep", config.absolute_image, "1000000"),
docker(:cp, "-L", "#{asset_container}:#{role.asset_path}/.", role.asset_extracted_path),
docker(:cp, "-L", "#{asset_container}:#{role.asset_path}/.", role.asset_extracted_directory),
docker(:stop, "-t 1", asset_container),
by: "&&"
end
def sync_asset_volumes(old_version: nil)
new_extracted_path, new_volume_path = role.asset_extracted_path(config.version), role.asset_volume.host_path
new_extracted_path, new_volume_path = role.asset_extracted_directory(config.version), role.asset_volume.host_path
if old_version.present?
old_extracted_path, old_volume_path = role.asset_extracted_path(old_version), role.asset_volume(old_version).host_path
old_extracted_path, old_volume_path = role.asset_extracted_directory(old_version), role.asset_volume(old_version).host_path
end
commands = [ make_directory(new_volume_path), copy_contents(new_extracted_path, new_volume_path) ]
@@ -29,8 +29,8 @@ module Kamal::Commands::App::Assets
def clean_up_assets
chain \
find_and_remove_older_siblings(role.asset_extracted_path),
find_and_remove_older_siblings(role.asset_volume_path)
find_and_remove_older_siblings(role.asset_extracted_directory),
find_and_remove_older_siblings(role.asset_volume_directory)
end
private
@@ -39,7 +39,7 @@ module Kamal::Commands::App::Assets
:find,
Pathname.new(path).dirname.to_s,
"-maxdepth 1",
"-name", "'#{role.container_prefix}-*'",
"-name", "'#{role.name}-*'",
"!", "-name", Pathname.new(path).basename.to_s,
"-exec rm -rf \"{}\" +"
]

View File

@@ -9,7 +9,7 @@ class Kamal::Commands::Auditor < Kamal::Commands::Base
# Runs remotely
def record(line, **details)
combine \
[ :mkdir, "-p", config.run_directory ],
[ :mkdir, "-p", config.service_directory ],
append(
[ :echo, audit_tags(**details).except(:version, :service_version, :service).to_s, line ],
audit_log_file
@@ -22,9 +22,7 @@ class Kamal::Commands::Auditor < Kamal::Commands::Base
private
def audit_log_file
file = [ config.service, config.destination, "audit.log" ].compact.join("-")
File.join(config.run_directory, file)
File.join config.service_directory, "audit.log"
end
def audit_tags(**details)

View File

@@ -1,5 +1,5 @@
class Kamal::Commands::Server < Kamal::Commands::Base
def ensure_run_directory
[ :mkdir, "-p", config.run_directory ]
def ensure_service_directory
[ :mkdir, "-p", config.service_directory ]
end
end

View File

@@ -194,6 +194,19 @@ class Kamal::Configuration
".kamal"
end
def service_directory
File.join run_directory, "apps", [ service, destination ].compact.join("-")
end
def env_directory
File.join service_directory, "env"
end
def assets_directory
File.join service_directory, "assets"
end
def run_directory_as_docker_volume
File.join "$(pwd)", run_directory
end
@@ -207,10 +220,6 @@ class Kamal::Configuration
end
def env_directory
File.join(run_directory, "env")
end
def env_tags
@env_tags ||= if (tags = raw_config.env["tags"])
tags.collect { |name, config| Env::Tag.new(name, config: config, secrets: secrets) }

View File

@@ -63,7 +63,7 @@ class Kamal::Configuration::Accessory
end
def secrets_path
File.join(config.env_directory, "accessories", "#{service_name}.env")
File.join(config.env_directory, "accessories", "#{name}.env")
end
def files

View File

@@ -84,7 +84,7 @@ class Kamal::Configuration::Role
end
def secrets_path
File.join(config.env_directory, "roles", "#{container_prefix}.env")
File.join(config.env_directory, "roles", "#{name}.env")
end
def asset_volume_args
@@ -122,19 +122,19 @@ class Kamal::Configuration::Role
asset_path.present? && running_proxy?
end
def asset_volume(version = nil)
def asset_volume(version = config.version)
if assets?
Kamal::Configuration::Volume.new \
host_path: asset_volume_path(version), container_path: asset_path
host_path: asset_volume_directory(version), container_path: asset_path
end
end
def asset_extracted_path(version = nil)
File.join config.run_directory, "assets", "extracted", container_name(version)
def asset_extracted_directory(version = config.version)
File.join config.assets_directory, "extracted", [ name, version ].join("-")
end
def asset_volume_path(version = nil)
File.join config.run_directory, "assets", "volumes", container_name(version)
def asset_volume_directory(version = config.version)
File.join config.assets_directory, "volumes", [ name, version ].join("-")
end
private