You can update and release a new version of a Cloud Foundry (CF) buildpack through the CF Buildpacks Team Concourse pipeline. Concourse is a continuous integration (CI) tool for software development teams. This process is used by the CF Buildpacks Team and other CF buildpack development teams. You can use this process as a model for using Concourse to build and release new versions of your own buildpacks.
The Concourse pipelines for Cloud Foundry buildpacks are located in the buildpacks-ci GitHub repository.
To release a new buildpack version, do the following:
Download the buildpacks-ci
repository:
$ git clone https://github.com/cloudfoundry/buildpacks-ci.git
From the buildpack directory, check out the develop
branch of the buildpack:
$ cd /system/path/to/buildpack $ git checkout develop
Make sure you have the most current version of the repository:
$ git pull -r
Run bump
to update the version in the buildpack repository:
$ /system/path/to/buildpacks-ci/scripts/bump
Modify the CHANGELOG
file manually to condense recent commits into relevant changes. For more information, see Modify Changelogs.
Add and commit your changes:
$ git add VERSION CHANGELOG $ git commit -m "Bump version to $(cat VERSION) [{insert story #}]"
Push your changes to the develop
branch:
$ git push origin develop
If buildpacks-ci
is not deployed to Concourse, manually add a Git tag to the buildpack, and mark the tag as a release on GitHub.
If buildpacks-ci
is deployed to Concourse, the buildpack update passes through the following life cycle:
Concourse starts the buildpack-to-master
job in the pipeline for the updated buildpack. This job merges into the master or main branch of the buildpack.
The detect-new-buildpack-and-upload-artifacts
job starts in the pipeline for the updated buildpack. This job creates a cached and uncached buildpack, and uploads them to an AWS S3 bucket.
The specs-lts-master
and specs-edge-master
jobs start and run the buildpack test suite, and the buildpack-specific tests of the Buildpack Runtime Acceptance Tests (BRATS).
If you use Pivotal Tracker, paste the links for the specs-edge-master
and specs-lts-master
builds in the related buildpack release story, and deliver the story.
Your project manager can manually start the buildpack-to-github
job on Concourse as part of the acceptance process. This releases the buildpack to GitHub.
After the buildpack has been released to GitHub, the cf-release
pipeline is started using the manual initiation of the recreate-bosh-lite
job in that pipeline. If the new buildpack has been released to GitHub, the CF that is deployed for testing in the cf-release
pipeline is tested against that new buildpack.
After the cats
job has successfully completed, your project manager can include the new buildpacks in the cf-release
repository and create the new buildpack BOSH release by manually starting the ship-it
job.
If errors occur during this workflow, you might need to remove unwanted tags. For more information, see Handle Unwanted Tags.
The Ruby buildpack changelog shows an example layout, and content of a changelog. In general, changelogs follow these conventions:
If you encounter problems with the commit that contains the new version, change the target of the release tag by performing the following: