Files
kamal/test/integration/app_test.rb
Donal McBreen 6aa707e233 Use local registry for app images
Allow applications to be deployed without needing to set up a repository
in a remote Docker registry.

If the registry server starts with `localhost`, Kamal will start a local
docker registry on that port and push the app image to it.

Then when pulling the image onto the servers, we use net-ssh to forward
the that port from the app server to the deployment server.

This will allow the deployment server to pull the image from the
registry as if it were local, meaning we don't need to set up a cert.
2024-09-23 15:18:28 +01:00

55 lines
1.5 KiB
Ruby

require_relative "integration_test"
class AppTest < IntegrationTest
test "stop, start, boot, logs, images, containers, exec, remove" do
kamal :deploy
assert_app_is_up
kamal :app, :stop
assert_app_is_down
kamal :app, :start
# kamal app start does not wait
wait_for_app_to_be_up
kamal :app, :boot
wait_for_app_to_be_up
logs = kamal :app, :logs, capture: true
assert_match "App Host: vm1", logs
assert_match "App Host: vm2", logs
assert_match "GET /version HTTP/1.1", logs
images = kamal :app, :images, capture: true
assert_match "App Host: vm1", images
assert_match "App Host: vm2", images
assert_match /localhost:5000\/app\s+#{latest_app_version}/, images
assert_match /localhost:5000\/app\s+latest/, images
containers = kamal :app, :containers, capture: true
assert_match "App Host: vm1", containers
assert_match "App Host: vm2", containers
assert_match "localhost:5000/app:#{latest_app_version}", containers
assert_match "localhost:5000/app:latest", containers
exec_output = kamal :app, :exec, :ps, capture: true
assert_match "App Host: vm1", exec_output
assert_match "App Host: vm2", exec_output
assert_match /1 root 0:\d\d ps/, exec_output
exec_output = kamal :app, :exec, "--reuse", :ps, capture: true
assert_match "App Host: vm2", exec_output
assert_match "App Host: vm1", exec_output
assert_match /1 root 0:\d\d nginx/, exec_output
kamal :app, :remove
assert_app_is_down
assert_app_directory_removed
end
end