Pivotal Knowledge Base

Follow

Which runtime, language and server versions are supported in a buildpack?

Environment

Pivotal Web Services (PWS): All versions 

Purpose

In the past buildpacks supported many different versions of the runtimes, languages, frameworks and servers, which were built into it.  Recent versions of various Cloud Foundry buildpacks have removed support for older versions of binary dependencies. This was done not only to reduce the sizes of buildpacks, thereby making CF deployment less painful for operators but also to ensure that a default CF installation doesn’t contain insecure or unsupported versions of application runtimes. Please see this announcement for more background on the motivation for this decision.

Who is affected?

Any user who's pushing an application to Pivotal Web Services after June 25th, 2015, who has not locked in a specific version of the build pack (option #2 in the Instructions section below) and is not allowing the build pack to install the latest supported version (i.e. has instructed the buildpack to use a specific runtime version).  

Examples:

  • Ruby users who have a specific version of ruby set in their Gemfile
  • Node.js users who have a specific version of Node.js set in the package.json file
  • PHP users who have a specific version of PHP set in either .bp-config/options.json or in composer.json
  • Python users who have specific version of Python set in runtime.txt
  • Go users who have a specific version of Golang set with Godeps

Affected users will typically see an error message like this:

Could not get translated url, exited with: 
DEPENDENCY_MISSING_IN_MANIFEST: https://path/to/ruby-2.1.0.tgz

Procedure

If your application specifies or depends on a binary dependency that is no longer supported you should either:

  1. Update your application to use a binary dependency that is supported by the build pack going forward.  See the Additional Information section below for details on exactly what each build pack supports.
  2. Modify your application to use an older version of the build pack that supports the desired binary dependency instead of the default build packs bundled with PWS.

    For example, to use Ruby 2.1.0, you could push your app, specifying an older build pack version, with the following command:

    cf push <app-name> -b https://github.com/cloudfoundry/ruby-buildpack#v1.3.1

    Alternatively, you could specify this build pack in your manifest.yml file, as specified in these docs.

    The previous buildpack versions, which which we recommend you deploy to use deprecated versions, are:

    • Golang: https://github.com/cloudfoundry/go-buildpack#v1.2.0
    • NodeJS: https://github.com/cloudfoundry/nodejs-buildpack#1.2.1
    • PHP: https://github.com/cloudfoundry/php-buildpack#3.1.1
    • Python: https://github.com/cloudfoundry/python-buildpack#1.2.0
    • Ruby: https://github.com/cloudfoundry/ruby-buildpack#1.3.1

Risks

Applications that specify or rely on binary dependencies that are no longer included in the buildpack will fail to deploy.

Existing applications that were deployed using a previous buildpack version and specify or depend on binary dependencies that are no longer included will continue to run but will fail to re-deploy.

Additional Information

The following is a list of the build packs affected by this change.  These, or later versions, are the default on PWS as of June 25th, 2015.  

  • Go buildpack v1.3.1+.
  • Node.js buildpack v1.3.1+
  • PHP buildpack v3.2.1+
  • Python buildpack v1.3.1+
  • Ruby buildpack v1.4.1+

Previous versions were not affected and will continue to support older runtimes.  

See the links in the following list to see which binaries are currently supported by the build packs.

If you have additional questions, please contact support@run.pivotal.io.

Comments

Powered by Zendesk