Pivotal Web Services (PWS): All versions
Previously deployed PWS application is encountering a failure when attempting to push the same application (with no changes to the source code or dependencies) to PWS.
While there are no changes to your application's source code and dependencies, it's likely the software installed by the PWS build packs have changed since the application was last deployed (we're constantly keeping this software up-to-date), and can sometimes cause incompatibilities. In order to run your applications on PWS platform, PWS build packs install additional software.This includes things like language runtimes (Java, Ruby, Python, etc...) and server software (Apache Tomcat, Apache HTTPD, Nginx, etc..).
One example of this can be seen when deploying Ruby applications (Note: Python and Node.js are similar). The application uses Ruby version 2.2.1, which was the latest release at the time the app was originally deployed. Over time, PWS build pack has been updated and no longer contains Ruby version 2.2.1 (build packs only contain the latest two releases), your application will fail to stage.
Other similar issues can be seen when Pivotal updates and evolves the Cloud Foundry platform. An example of this can be seen with the release of Diego on PWS. Most applications should make the transition to Diego fine, but in some cases, the behavior of the system has changed and applications will need to be updated to continue to run on PWS.
Pivotal recommends that you:
- Check the supported software versions of your build pack prior to deploying production upgrades. You can check to see which languages and runtimes are supported by the current build packs by following the instructions in this KB article.
- Upgrade and test your application locally with the latest language runtimes regularly. Since the build packs track the latest releases of the languages, runtimes & servers required to run your apps, this will give you confidence that your application running locally will run fine on PWS.
- Follow the practice of blue / green deployment. This allows you to push upgrades and test without taking down your site. If you follow this practice, it will minimize the impact of a problem, should one occur.
Not following the practices outlined in this KB and the referenced KB articles can result in downtime for your applications when pushing updates.