Re: Required manifest changes for Cloud Foundry

Amit Kumar Gupta

Sorry, "RUNTIME-buildpack". Please refer to the commit mentioned in the
original email (
to protect yourself from any of my typos. :)


On Thu, Mar 3, 2016 at 9:53 AM, Filip Hanik <fhanik(a)> wrote:


is the missing L intentional in buildpack?

On Thu, Mar 3, 2016 at 10:51 AM, Amit Gupta <agupta(a)> wrote:

Hey all,

Forgot to include in the original email, you will also need to update
your cc.install_buildpacks property because the packages names have also
changed for all the buildpacks (except Java). They've gone from
"buildpack_RUNTIME" to "RUNTIME-buidpack".


On Sun, Feb 21, 2016 at 4:01 PM, Amit Gupta <agupta(a)> wrote:

Tom brings up a valid concern, and we fully plan on providing data and
tooling to make it easy to deploy the platform, composed of versions of
several releases known to work together, in a way that's easy to use and
easy to extend. Documenting which versions work together and/or deployed
to PWS together is easy, but we intend to provide an even better solution,
which is part of a broader effort to simplify manifest generation, and
using BOSH altogether.

Currently, this entails our CI producing a machine-readable artifact
encapsulating the versions of things known to work together, and a tool
that generates CF manifests using that artifact, but with the ability to
easily override things (e.g. choose to use a different version of a
stemcell). We have a prototype of this here:, but we realized that we
needed to rebuild this in a test-driven fashion, and that effort is
underway here:

Mike has hit a lot of the key user-facing benefits on the head, I'll add
a couple more points that speak to benefits for contributors to CF itself:

- extracting things like a common route-registrar into the routing
release means that contributors to many other components (e.g. CC, UAA,
HM9k, Loggregator, service brokers) don't need to worry about any route
registration/nats logic, they can just colocate the route-registrar from
the lightweight routing release when they are deploying their stuff in a
context where registering a route makes sense. This is just one example.
- providing one release, with one set of job spec definitions, etc.
is much simpler to maintain than, e.g. uaa having to maintain one job spec
for the uaa within cf-release, one for the uaa within a bosh-release, and
one for the uaa as a standalone release.
- cf-release doesn't become a single bottleneck when failures occur
in the integration pipelines. Currently, all teams get blocked from
bumping their components to feed into the integration pipeline as soon as
one thing fails, because the cf-release repo is a single point of entry to
integration pipelines. Together with concourse, it's very easy to
integrate many releases, and simply "pause" one version of one release if
it breaks the build, allowing other components to continue to flow in.
- it is much easier to test the BOSH-operability of things when
they're in their own release. consul and etcd are great examples of this,
as they are generally difficult to orchestrate well in an automated
fashion, and testing things like scale-up, scale-down, rolling deploys, and
fault tolerance of our consul or etcd jobs if they are also part of a
massive cf-release and not their own thing, is more difficult.


On Fri, Feb 19, 2016 at 10:04 AM, Mike Youngstrom <youngm(a)>

* In this case a release for each buildpack will reduce release
download sizes significantly. My org only uses Java and Node.
* Easily knowing what releases changed and which didn't will be nice.
(Not useful when everything is actively developed but more useful when
components grow more mature)
* If a bug is found in one release near an internal deploy deadline it
is easier to upgrade and test a single component with a fix instead than
waiting for the orchestration of an entirely new cf release with
potentially many more changes.
* Much easier to reuse releases outside of CF (e.g. UAA in bosh, etcd
or consul for internal projects)
* If using CF components like etcd, consul, or nats for in house CF
extensions it is easier for CF to sunset without forcing everyone who uses
it to migrate off. (On that note I'd like to see an independent Nats
release before it is removed from CF release)
* Easier to set up build environments if it ever becomes necessary to
do an internal fork of a release.

On the other hand it doesn't seem like documenting which combination of
components went into a given PWS deploy doesn't seem like that difficult of
a problem to solve. Also, as CF and its associated components mature I'd
imagine that tightly coupled release versions will become less of a problem.

Just a couple of thoughts.


On Fri, Feb 19, 2016 at 4:58 AM, Tom Sherrod <tom.sherrod(a)>

Why are you looking forward to independent releases?
A single release option appears pretty straightforward. Single release
that includes the correct dependent versions.
What are the advantages of breaking them out?


On Thu, Feb 18, 2016 at 5:28 PM, Mike Youngstrom <youngm(a)>

This is excellent! I love the decomposition of the buildpacks. I
look forward to the day when cf-release disappears and we just have a bunch
of small independent releases. Hopefully that day is getting closer and


On Thu, Feb 18, 2016 at 11:31 AM, Amit Gupta <agupta(a)>

Hey developers,

The buildpacks team has recently extracted the buildpacks as
separate releases. As we transition to deploying CF via a bunch of
composed releases, for now we're making the change more transparent, by
submoduling and symlinking the buildpacks releases back into cf-release.
This requires some manifest changes: buildpacks are now colocated with
cloud controller, rather than package dependencies of cloud controller.

If you are using spiff to generate manifests, and are not overriding
the templates/jobs colocated on the api_zN jobs, you can ignore this
email. If you are overriding the api_zN templates in your stub, or if you
are not using spiff, you will need to add the following:

- name: consul_agent
release: cf
+ - name: go-buildpack
+ release: cf
+ - name: binary-buildpack
+ release: cf
+ - name: nodejs-buildpack
+ release: cf
+ - name: ruby-buildpack
+ release: cf
+ - name: php-buildpack
+ release: cf
+ - name: python-buildpack
+ release: cf
+ - name: staticfile-buildpack
+ release: cf
- name: cloud_controller_ng
release: cf

Please see this commit (
for more details.


Join to automatically receive all group messages.