In the past build packs supported many different versions of the runtimes, languages, frameworks and servers used by the build packs. Recent versions of various Cloud Foundry build packs have removed support for older versions of binary dependencies. This was done not only to reduce the sizes of build packs, 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 build pack to use a specific runtime version).
- 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:
If your application specifies or depends on a binary dependency that is no longer supported you should either:
- 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.
- For Golang instructions, see these docs
- For NodeJS instructions, see these docs
- For PHP instructions, see these docs
- For Python instructions, see these docs
- For Ruby instructions, see these docs
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
Impact / 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.
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 build pack v1.3.1+.
- Node.js build pack v1.3.1+
- PHP build pack v3.2.1+
- Python build pack v1.3.1+
- Ruby build pack v1.4.1+
Previous versions were not affected an 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 email@example.com.