
Every App Ships Through the Same Workflow
Give each app one GitHub Actions workflow per slot, filtered to its own source path and triggered by a push to that slot’s branch. The run builds the image, pushes it to the registry, connects to the machine and brings the service up.
Keep the compose tag equal to the tag the workflow pushes, per service, and let runs build in parallel but queue on a lock held on the box. Seven workflows run this platform’s own estate that way, and the same shape covers an app on a cloud VM, on rented hardware or on a machine you own.


