Skip to content
Buildkite Plugin to Deploy to Cloud Foundry
Shell Dockerfile HTML
Branch: master
Clone or download

Latest commit

Fetching latest commit…
Cannot retrieve the latest commit at this time.

Files

Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.buildkite
cf
docs
hooks
tests
.gitignore
Dockerfile
README.md
docker-compose.yml
plugin.yml
version

README.md

Buildkite Plugin to Deploy to Cloud Foundry

This Buildkite Plugin will deploy an application contained within your repository to any Cloud Foundry with zero down time deployment.

deploy

The plugin will annotate the Buildkite build with the URL for the application, as well as any Cloud Foundry labels and annotations added.

annotations

The plugin requires the Docker Daemon and docker CLI to be available.

Usage

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

Discover all Cloud Foundry applications deployed using plugin

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

Testing

Test plugin using buildkite-plugin-tester:

docker run -v $(pwd):/plugin buildkite/plugin-tester:latest bats /plugin/tests

# or

docker-compose run tests
You can’t perform that action at this time.