cloudfoundry / cloudfoundry/cloud_controller_ng

buildpacks - by name + git url fallback

Open
#1,358 4 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

enhancement PM Review unscheduled v3-only
Dominant language
Ruby
Stars
207
Forks
373
Avg merge
2d 12h
Merged PRs (30d)
56

Description

What's the user value of this feature request?

manifest.yml can list a set of buildpacks; but each buildpack can only be listed by either its git url, or its zip URL, or a name if its installed by a platform operator.

This makes it very hard for sample or shared applications, such as https://github.com/starkandwayne/wordpress-for-cloudfoundry, that must provide multiple manifests because they don't know if a target CF will have pre-installed buildpacks or not.

Instead, I propose that we change the schema of buildpacks to something like routes - where each item is an object, rather than a simple string; and to allow use to provide all the information about a buildpack:

applications:
- name: wp
  buildpacks:
  - name: pancake_buildpack
    source: https://github.com/starkandwayne/pancake-buildpack
  - name: wpcli_buildpack
    source: https://github.com/starkandwayne/wpcli-buildpack
  - name: php_buildpack  

Who is the functionality for?

Users of Cloud Foundry

How often will this functionality be used by the user?

Whenever deploying shared applications written by authors who do not know the status of your cf buildpacks list.

Who else is affected by the change?

An implementation could continue to support the existing buildpacks: [pancake_buildpack, php_buildpack] schema.

Is your feature request related to a problem? Please describe.

I don't like that I have to curate multiple manifests and document it in projects like https://github.com/starkandwayne/wordpress-for-cloudfoundry/

I'd prefer that users can get a pre-installed buildpack if it exists; or fallback to a git url if its missing.

Describe the solution you'd like

Support both the existing buildpacks: [name1, name2] and new buildpacks: [{name: name1, source: uri1}, {name: name2}].

Also continue to support name or git url in cf push -b name1 -b url2.

Describe alternatives you've considered

See https://github.com/starkandwayne/wordpress-for-cloudfoundry/ - I must curate multiple manifest.yml for end users and hope they understand the reason for each and when to switch.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with the manifest.yml and manifest.buildpacks.yml examples, then trace manifest buildpack handling and the cf push -b path. Done means supporting both existing string entries and objects with name and source, including fallback to the source when a named buildpack is unavailable, while preserving name and URL support.

Written by the indexing model from the issue text.

Assessment

Tech stack
ruby
Domain
backend
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.