The build, release, and run phases are described as follows. We should maintain a clear separation between all of these three phases:
- Build: Creates an executable bundle (EAR, WAR, or JAR) from code, as well as dependencies that can be deployed to multiple environments
- Release: Combines the executable bundle with a specific environment configuration to deploy in an environment
- Run: Runs the app in an execution environment using a specific release
The build and release phases are highlighted in the following diagram:
An antipattern is building separate executable bundles that are specific to each environment.