Updates and upgrade paths for bundled installations
This page is for bundlers who must keep the installations made from their bundle current. Decide the update path before the first release: recipients will ask how to update on the first day a fix is published.
Contents
- Two halves of every update
- Update routes by kind of bundle
- The routine on an installation
- Who does what
- Security releases
- Announcing updates
Two halves of every update
- The code: the kernel and the extensions, from a new tag and a new lock file.
- The database: the release's update file and scripts. For the 6.0 line the file is
update/database/<engine>/6.0/dbupdate-6.0.0-6.0.15.sql, for MySQL, PostgreSQL and SQLite; "Apply it once, whole, in order" (11.6 Step 2). Releases can add scripts too, such asphp update/common/scripts/6.0/createaudittables.phpfor the audit index.
"Moving the code is only half of an upgrade: the database update files of chapter 11 are the other half" (3.2 A). Then read "the checklist of each period you pass" (11.6).
Update routes by kind of bundle
| Bundle | Code route | Database route |
|---|---|---|
| Container image | a new image; the volumes keep var/ and settings | a one-off job with the new image, before the new containers take traffic |
| Server image, appliance | your update channel, or Git and Composer on the box | the same channel, as a separate, logged step |
| Panel installer | the panel's update button, or the customer's Git and Composer | the customer or the panel, with the instructions linked |
| Distribution package | the package manager | the administrator, following the notice your package prints (Linux distribution packaging) |
| Starter kit project | Git and Composer in the project (Update with Git) | the project team |
The routine on an installation
Update with Git gives seven steps for the command line and the administration:
| Step | What |
|---|---|
| 1 | Back up, start the maintenance window (php bin/php/maintenance.php on) |
| 2 | See what is waiting |
| 3 | Update the kernel with Git |
| 4 | Update the extensions with Composer |
| 5 | Check files and database, apply the database update |
| 6 | Clear the caches, reload the code (exp:velocity deploy on a Velocity site) |
| 7 | Check the site, leave the window (php bin/php/maintenance.php off) |
In the administration, Git Manager pulls a branch and Setup > Updates and packages (ezupdate) runs Composer;
"a release tag, a merge conflict and the Velocity restart still need the command line". ezupdate's updating is "Off
until [UpdateSettings] AllowUpdate is switched on" (Automated updates with ezupdate).
For live sites follow "only finished, tested versions": "the newest release tag" (Choose how closely you follow).
Who does what
Write it into your terms and your getting-started text:
We deliver: new bundle releases within <time> of an Exponential release
We test: <databases, PHP versions, upgrade from the last <n> bundle versions>
The recipient does: backups before updating; applying the update; their own extensions
Database updates: <who runs them, how>
End of updates: <date or policy per bundle version>Security releases
- "Security fixes are made on the
mainbranch (the 6.0.15 line,dev-main) and published with the next 6.0.x release. A published tag is never changed" (SECURITY.md). - Watch the releases on https://github.com/se7enxweb/exponential/releases and the project's channels; partners receive information through the partner program (Keeping customer sites current).
- Release a bundle update promptly, and say in its notes which security release it carries.
Announcing updates
- A changelog per bundle release, naming the Exponential version inside.
- The database steps, explicitly, even when there are none.
- A note when a previous bundle release was wrong, instead of changing it (Versions, tags and pinning).
Related pages
- Chapter 11: Upgrading
- Upgrading customer sites
- Testing a bundle
- Free documentation: this page is free to copy, translate and improve under the GNU FDL 1.3.
Become an Exponential Partner
Partners share their information, provide funding, contribute back and develop the products with us, and that is how Exponential grows. A partner website and dashboard are planned for mid-2027: please become a partner today to speed up our growth rate and land new features faster.