Deploy a repeatable release

Record the code revision, build steps, configuration changes, and schema changes for the release. Build and test the same revision in an acceptance environment first.

Before deployment, verify that the required database and file backups can be recovered. Apply code and configuration in the planned order and monitor startup and upgrade logs. Confirm the intended sites and modules are running.

Finish with an HTTP check and one representative user workflow. A responding Erlang node is only one part of readiness. Keep a recovery plan that accounts for both code and database changes.