[mproxy](https://github.com/kevinmcconnell/mproxy) is a custom minimal proxy designed specifically for Kamal. It has two big advantages over Traefik: 1. Imperative deployments - we tell it to switch from container A to container B, and it waits for container B to start then switches. No need to poll for health checks ourselves or mess around with forcing health checks to fail. 2. Support for multiple apps - as much as possible, configuration is supplied at runtime by the deploy command, allowing us to have multiple apps share an instance of mproxy without conflicting config.
21 lines
646 B
Ruby
21 lines
646 B
Ruby
require_relative "integration_test"
|
|
|
|
class IntegrationLockTest < IntegrationTest
|
|
test "acquire, release, status" do
|
|
kamal :envify
|
|
|
|
kamal :lock, :acquire, "-m 'Integration Tests'"
|
|
|
|
status = kamal :lock, :status, capture: true
|
|
assert_match /Locked by: Deployer at .*\nVersion: #{latest_app_version}\nMessage: Integration Tests/m, status
|
|
|
|
error = kamal :deploy, capture: true, raise_on_error: false
|
|
assert_match /Deploy lock found. Run 'kamal lock help' for more information/m, error
|
|
|
|
kamal :lock, :release
|
|
|
|
status = kamal :lock, :status, capture: true
|
|
assert_match /There is no deploy lock/m, status
|
|
end
|
|
end
|