cf-blue-green-deploy is a plugin for the CF command line tool that automates a few steps involved in zero-downtime deploys.
The plugin takes care of the following steps packaged into one command:
cf add-plugin-repo CF-Community https://plugins.cloudfoundry.org
cf install-plugin blue-green-deploy -r CF-Community
In scripts, add the -f
flag to install-plugin
for non-interactive mode.
cd your_app_root
cf blue-green-deploy app_name
cf blue-green-deploy app_name --smoke-test <path to test script>
cf blue-green-deploy app_name -f <path to manifest>
cf blue-green-deploy app_name --delete-old-apps
cf bgd app_name
The only argument passed to the smoke test script is the FQDN of the newly pushed app. If the smoke test returns with a non-zero exit code the deploy process will stop and fail, the current live app will not be affected.
If the test script exits with a zero exit code, the plugin will remap all routes from the current live app to the new app. The plugin supports routes under custom domains.
Before cloning the source, you may wish to set up GOPATH and a go-friendly folder hierarchy to avoid path issues. Run the following in your preferred working directory:
mkdir ./go
export GOPATH=`pwd`/go
mkdir -p go/src/github.com/bluemixgaragelondon/
cd go/src/github.com/bluemixgaragelondon/
git clone https://github.com/bluemixgaragelondon/cf-blue-green-deploy
cd cf-blue-green-deploy
Then run a build:
script/build
This will download dependencies, run the tests, and build binaries in the artefacts folder.
script/test
This will run the unit tests. To run the acceptance tests (which need a Cloud Foundry instance), use
script/test_acceptance
You almost certainly want to install the plugin before running the acceptance tests (to make sure the latest version of the plugin is being tested). On OS X, the command would be
script/build ; script/install ; script/test_acceptance
See instructions for releasing a project for instructions on how to setup the acceptance tests.