Build artifacts would ideally be pushed to some central repository. This example just uses some S3 bucket, e.g.:
To accomplish the blue/green deployment, each project component requires
at least two DNS entries:
1. Fully-qualified application hostname
This entry enables us to run integration tests on the incoming instance
to make sure it actually works before tearing down the previous instance.
The CI server updates this DNS record during each build.
2. Short "alias" to the fully-qualified hostname
This entry is effectively a pointer to the latest deployed instance of a
component (identified by its commit SHA-suffixed hostname), allowing for
"zero downtime" deployments (in theory). It will always point to a
running instance (either the previous instance just before it gets torn down)
or the incoming instance (once the alias record gets updated to point to it).
The CI server updates this DNS record during each build if and only if
the integration tests for the incoming instance all pass.