This Buildkite Plugin will deploy an application contained within your repository to any Cloud Foundry with zero down time deployment.
The plugin will annotate the Buildkite build with the URL for the application, as well as any Cloud Foundry labels and annotations added.
The plugin requires the Docker Daemon and docker
CLI to be available.
Sample usage with minimum required arguments:
steps:
- label: ":cloudfoundry: deploy"
concurrency: 1
concurrency_group: "cf-push"
plugins:
starkandwayne/cloudfoundry-deploy#v0.9.1:
api: https://api.run.pivotal.io
username: drnic@starkandwayne.com
organization: starkandwayne
space: buildkite-plugin-tests
appname: buildkite-plugin-test
The username
argument is optional, if you provide $CF_USERNAME
via an agent hook.
You can provide the password via $CF_PASSWORD
from an agent hook. If you provide the password via a different environment variable, then declare its name with password_env
argument:
steps:
- label: ":cloudfoundry:"
plugins:
starkandwayne/cloudfoundry-deploy#v0.9.1:
api: https://api.run.pivotal.io
username: drnic@starkandwayne.com
password_env: CF_PASSWORD_DRNIC
organization: starkandwayne
space: buildkite-plugin-tests
appname: buildkite-plugin-test
The cf push
command will look for -f manifest.yml
by default. Use manifest_path
argument to explicitly declare the location of the manifest.
steps:
- label: ":cloudfoundry:"
plugins:
starkandwayne/cloudfoundry-deploy#v0.9.1:
api: https://api.run.pivotal.io
username: drnic@starkandwayne.com
organization: starkandwayne
space: buildkite-plugin-tests
appname: buildkite-plugin-test
manifest_path: cf/manifest.yml
If you do not want zero downtime deployment, or want a faster deployment (again, without zero downtime deployment), then you can use skip-zero-downtime: true
to disable it.
You can pass variables to your manifest.yml
using the vars
parameter. The value will be passed as cf push --vars-file [vars contents]
. Note, the value of vars
is a multi-line strong.
steps:
- label: ":cloudfoundry:"
plugins:
starkandwayne/cloudfoundry-deploy#v0.9.1:
api: https://api.run.pivotal.io
...
manifest_path: cf/manifest.yml
vars: |
some-var: 123
build-number: $BUILDKITE_BUILD_NUMBER
The cloudfoundry-deploy-buildkite-plugin-version
label is added to all applications deployed using this plugin, so we can use API label selectors to find them:
cf curl /v3/apps\?label_selector=cloudfoundry-deploy-buildkite-plugin-version
Test plugin using buildkite-plugin-tester:
docker run -v $(pwd):/plugin buildkite/plugin-tester:latest bats /plugin/tests
# or
docker-compose run tests