diff --git a/lib/kamal/cli/app.rb b/lib/kamal/cli/app.rb index 278bd1af..93f31dd8 100644 --- a/lib/kamal/cli/app.rb +++ b/lib/kamal/cli/app.rb @@ -9,9 +9,6 @@ class Kamal::Cli::App < Kamal::Cli::Base # Assets are prepared in a separate step to ensure they are on all hosts before booting on(KAMAL.hosts) do - execute *KAMAL.auditor.record("Tagging #{KAMAL.config.absolute_image} as the latest image"), verbosity: :debug - execute *KAMAL.app.tag_current_image_as_latest - KAMAL.roles_on(host).each do |role| Kamal::Cli::App::PrepareAssets.new(host, role, self).run end @@ -21,6 +18,9 @@ class Kamal::Cli::App < Kamal::Cli::Base KAMAL.roles_on(host).each do |role| Kamal::Cli::App::Boot.new(host, role, version, self).run end + + execute *KAMAL.auditor.record("Tagging #{KAMAL.config.absolute_image} as the latest image"), verbosity: :debug + execute *KAMAL.app.tag_latest_image end end end diff --git a/lib/kamal/commands/app/assets.rb b/lib/kamal/commands/app/assets.rb index dba651b2..26ca6e0c 100644 --- a/lib/kamal/commands/app/assets.rb +++ b/lib/kamal/commands/app/assets.rb @@ -5,7 +5,7 @@ module Kamal::Commands::App::Assets combine \ make_directory(role.asset_extracted_path), [ *docker(:stop, "-t 1", asset_container, "2> /dev/null"), "|| true" ], - docker(:run, "--name", asset_container, "--detach", "--rm", config.latest_image, "sleep 1000000"), + docker(:run, "--name", asset_container, "--detach", "--rm", config.absolute_image, "sleep 1000000"), docker(:cp, "-L", "#{asset_container}:#{role.asset_path}/.", role.asset_extracted_path), docker(:stop, "-t 1", asset_container), by: "&&" diff --git a/lib/kamal/commands/app/images.rb b/lib/kamal/commands/app/images.rb index 9b1ae0b8..e20e83e1 100644 --- a/lib/kamal/commands/app/images.rb +++ b/lib/kamal/commands/app/images.rb @@ -7,7 +7,7 @@ module Kamal::Commands::App::Images docker :image, :prune, "--all", "--force", *filter_args end - def tag_current_image_as_latest + def tag_latest_image docker :tag, config.absolute_image, config.latest_image end end diff --git a/lib/kamal/configuration.rb b/lib/kamal/configuration.rb index 483ca770..75148d55 100644 --- a/lib/kamal/configuration.rb +++ b/lib/kamal/configuration.rb @@ -128,7 +128,7 @@ class Kamal::Configuration end def latest_image - "#{repository}:latest" + "#{repository}:#{[ "latest", *destination ].join("-")}" end def service_with_version diff --git a/test/commands/app_test.rb b/test/commands/app_test.rb index a15e0e7c..ceec9405 100644 --- a/test/commands/app_test.rb +++ b/test/commands/app_test.rb @@ -339,12 +339,6 @@ class CommandsAppTest < ActiveSupport::TestCase new_command.remove_images.join(" ") end - test "tag_current_image_as_latest" do - assert_equal \ - "docker tag dhh/app:999 dhh/app:latest", - new_command.tag_current_image_as_latest.join(" ") - end - test "make_env_directory" do assert_equal "mkdir -p .kamal/env/roles", new_command.make_env_directory.join(" ") end @@ -371,7 +365,7 @@ class CommandsAppTest < ActiveSupport::TestCase assert_equal [ :mkdir, "-p", ".kamal/assets/extracted/app-web-999", "&&", :docker, :stop, "-t 1", "app-web-assets", "2> /dev/null", "|| true", "&&", - :docker, :run, "--name", "app-web-assets", "--detach", "--rm", "dhh/app:latest", "sleep 1000000", "&&", + :docker, :run, "--name", "app-web-assets", "--detach", "--rm", "dhh/app:999", "sleep 1000000", "&&", :docker, :cp, "-L", "app-web-assets:/public/assets/.", ".kamal/assets/extracted/app-web-999", "&&", :docker, :stop, "-t 1", "app-web-assets" ], new_command(asset_path: "/public/assets").extract_assets