Upgrade to a maintained version of a runtime or service
Back to home
On this page
Use a maintained runtime or service image. Outdated images can fail to build and may carry known CVEs. See Image statuses to check your image’s status and what to do next.
Once you know you need to upgrade, the steps are the same regardless of which runtime or service you use. For version-specific details, see the docs page for your runtime in Languages or your service in Add services.
Image statuses
“Maintained” means Active or Supported, depending on the classification below.
Note
Some runtimes and services (for example, Redis Grid) use the Active/Sunset/Decommissioned classification below.
Others currently use the Supported/Deprecated/Retired classification, until they migrate to Active/Sunset/Decommissioned.
The Console shows an image’s status as a banner on your project’s Overview page, or as a decoration on the relevant activity in the Activity panel. Active images show no decoration, since they’re always supported.
An image using this classification moves through the following statuses over its lifecycle:
| Status | What it means | What to do |
|---|---|---|
| Active | Fully maintained. Upsun Fixed applies software and security updates received from upstream. | No action needed. |
| Sunset | Existing projects, including code pushes, keep working. New projects can’t use this image. Upsun Fixed applies only critical security updates from upstream, and the image is decommissioned 180 calendar days after entering Sunset. | Upgrade to an active version before the decommission date. |
| Decommissioned | Upsun Fixed no longer supports this image. Existing projects with a decommissioned image continue to run as is, but all code pushes are blocked. | Upgrade to an active version to continue deploying. |
Each runtime or service page using this classification lists its versions under one of the following statuses:
| Status | What it means | What to do |
|---|---|---|
| Supported | Fully maintained. Upsun Fixed applies software and security updates received from upstream. | No action needed. |
| Deprecated | Still available and functional, but at end of life and no longer receiving security updates from upstream. It may stop working at some point. | Switch to a supported version to keep receiving security updates. |
| Retired | No longer available from upstream and not receiving further updates. This reflects the upstream project’s own status only — Upsun Fixed doesn’t enforce it, so the image keeps working with no scheduled decommission date. | Upgrade to a supported version, since no further security updates are available. |
| Decommissioned* | No longer supported by upstream. This reflects the upstream project’s own status only — Upsun Fixed doesn’t enforce it, so builds and deployments aren’t blocked. | Upgrade to a supported version as soon as possible. |
* At this time, decommissioned images under this classification aren’t listed in the product docs.
Before you upgrade
Test any version change on a non-production environment before merging.
Upgrade a runtime
The type key on your application in .platform.app.yaml defines the runtime.
Updating to a new version means changing that value and pushing it.
-
Check the supported versions on the runtime page under Languages, then update the
typekey with the correct version number:.platform.app.yamlname: myapp type: 'php:8.5' -
Push to a non-production branch. If you don’t already have one, create it first:
platform branch upgrade-runtime git add .platform.app.yaml git commit -m "Update runtime version" platform pushPushing triggers Upsun Fixed to automatically build and deploy the environment.
-
Verify that your app builds and behaves correctly. Check the deploy log for errors:
platform activity:logThen open the environment and test your app manually:
platform environment:url --primary -
Merge to production:
platform mergeIf your project uses a source integration (GitHub, GitLab, Bitbucket), merge through a pull request or merge request in your Git provider instead.
Upgrade a service
Services are defined under the services key in .platform/services.yaml.
Updating the type value triggers a version change on the next deploy.
Whether data migrates automatically depends on the service.
Check the supported versions on your service’s page under Add services before you begin.
In-place upgrade
Some services upgrade automatically when you change the version. PostgreSQL 10 and later, for example, include a built-in upgrade utility that runs at deploy time.
-
Update the
typekey for your service:.platform/services.yamldatabase: type: postgresql:18 -
Push to a non-production branch. If you don’t already have one, create it first:
platform branch upgrade-service git add .platform/services.yaml git commit -m "Update service version" platform pushPushing triggers Upsun Fixed to automatically build and deploy the environment.
-
Confirm the service starts and your app connects. Check the deploy log for errors:
platform activity:logThen open the environment and test your app manually:
platform environment:url --primary -
Create a backup, then merge to production:
platform backup:create --environment main platform mergeIf your project uses a source integration (GitHub, GitLab, Bitbucket), merge through a pull request or merge request in your Git provider instead.
Downgrading isn’t supported after an in-place upgrade. If you need to roll back, restore from a backup.
Manual data migration
When a service doesn’t support in-place upgrades, or when you’re moving across several major versions, export your data, provision a new service at the target version, and import the data.
-
Export your data from the current service.
-
Rename the service in
.platform/services.yamland set the target version. Renaming forces Upsun Fixed to create a fresh service container..platform/services.yamldatabase-target: type: postgresql:18 -
Update the
relationshipsof any application that references the old service name:.platform.app.yamlname: myapp relationships: database: service: database-target endpoint: postgresql -
Push to a non-production branch and import your data into the new service.
-
Verify your app works correctly, then merge to production.