Upgrade Commerce version
You can upgrade the ÃÛ¶¹ÊÓÆµ Commerce code base to a newer version. Before upgrading your project, review the System requirements in the Installation guide for the latest software version requirements.
Depending on your project configuration, your upgrade tasks may include the following:
- Update the
.magento/services.yaml
file with new versions for MariaDB (MySQL), OpenSearch, RabbitMQ, and Redis for compatibility with new ÃÛ¶¹ÊÓÆµ Commerce versions. - Update the
.magento.app.yaml
file with new settings for hooks and environment variables. - Upgrade third-party extensions to the latest supported version.
-
For Pro projects, you must submit an ÃÛ¶¹ÊÓÆµ Commerce Support ticket to install or update services in
Staging
andProduction
environments only. -
Indicate the service changes needed, include your updated
.magento.app.yaml
andservices.yaml
files, and state the PHP version in the ticket. For self-service changes to PHP version, extensions, or environment settings, see PHP settings in Application configuration. -
For changes to a live Production environment (Pro only), a minimum of 48 hours notice is required. This allows the Cloud infrastructure team sufficient time to marshal resources and conduct a secure upgrade. The notice period begins when the Infrastructure team acknowledges the request and schedules the upgrade, excluding weekends. For example, to have service upgrades completed on a Monday, an acknowledgement of the scheduled upgrade must be received by Wednesday. During peak demand periods, it might take more time to process your request.
Configuration files
Before upgrading the application, you must update your project configuration files to account for changes to the default configuration settings for ÃÛ¶¹ÊÓÆµ Commerce on cloud infrastructure or the application. The latest defaults can be found in the .
composer.json
Before upgrading, always check that the dependencies in the composer.json
file are compatible with the ÃÛ¶¹ÊÓÆµ Commerce version.
To update the composer.json
file for ÃÛ¶¹ÊÓÆµ Commerce version 2.4.4 and later**:
-
Add the following
allow-plugins
to theconfig
section:code language-json "config": { "allow-plugins": { "dealerdirect/phpcodesniffer-composer-installer": true, "laminas/laminas-dependency-plugin": true, "magento/*": true } },
-
Add the following plugin to the
require
section:code language-json "require": { "magento/composer-root-update-plugin": "^2.0.3" },
-
Add the following component to the
extra:component_paths
section:code language-json "extra": { "component_paths": { "tinymce/tinymce": "lib/web/tiny_mce_5" }, },
-
Save the file. Do not commit or push changes to your branch yet.
-
Continue with the upgrade process.
Project backup
We recommend creating a backup of your project before an upgrade. Use the following steps to back up your Integration, Staging, and Production environments.
To back up your integration environment database and code:
-
Create a local backup of the remote database.
code language-bash magento-cloud db:dump
note note NOTE The magento-cloud db:dump
command runs the command with the--single-transaction
flag, which allows you to back up your database without locking the tables. -
Back up code and media.
code language-bash php bin/magento setup:backup --code [--media]
Optionally, you can omit
[--media]
if you have a large number of static files that are already in source control.
To back up your Staging or Production environment database before deploying:
-
Use SSH to log in to the remote environment.
-
Create a database dump. To choose a target directory for the DB dump, use the
--dump-directory
option.code language-bash vendor/bin/ece-tools db-dump
The dump operation creates a
dump-<timestamp>.sql.gz
archive file in your remote project directory. See Back up database.
Application upgrade
Review the service versions information for the latest software version requirements before upgrading your application.
To upgrade the application version:
-
On your local workstation, change to your project directory.
-
Set the version constraint for the target upgrade version. This step is only necessary if the target version is outside the existing constraint.
code language-bash composer require-commerce "magento/magento-cloud-metapackage":">=CURRENT_VERSION <NEXT_VERSION" --no-update
note note NOTE You must use the version constraint syntax to successfully update the ece-tools
package. You can find the version constraint in thecomposer.json
file for the version of the you are using for the upgrade. -
Update your
composer.json
file with the core Commerce upgrade version.code language-bash composer require-commerce magento/product-enterprise-edition 2.4.8 --no-update
-
If you’re using B2B, update your
composer.json
file with the supported version for Commerce.code language-bash composer require-commerce magento/extension-b2b 1.5.2 --no-update
-
Update project dependencies.
code language-bash composer update
-
Review the patches that are currently applied:
-
If there are any patches installed in the
m2-hotfixes
directory, submit an ÃÛ¶¹ÊÓÆµ Commerce Support ticket and work with ÃÛ¶¹ÊÓÆµ Commerce Support to verify which patches can still be applied to the new version. Remove the non-applicable patch(es) from them2-hotfixes
directory. -
If there are any [Quality Patches] applied in the
.magento.env.yaml
file, verify whether they can still be applied to the new version. Remove the non-applicable patch(es) from theQUALITY_PATCHES
section of the.magento.env.yaml
file.
Method 1: Verify the applicable versions in the Quality Patches release notes
Method 2: View available patches and status
Method 3: Search for patches
-
-
Add, commit, and push code changes.
code language-bash git add -A
code language-bash git commit -m "Upgrade"
code language-bash git push origin <branch-name>
git add -A
is required to add all changed files to source control because of the way Composer marshals base packages. Bothcomposer install
andcomposer update
marshal files from the base package (magento/magento2-base
andmagento/magento2-ee-base
) into the package root.The files that Composer marshals belong to the new version of ÃÛ¶¹ÊÓÆµ Commerce, to overwrite the outdated version of those same files. Currently, marshaling is disabled in ÃÛ¶¹ÊÓÆµ Commerce, so you must add the marshaled files to source control.
-
Wait for deployment to complete.
-
Verify the upgrade in your Integration, Staging, or Production environment by using SSH to log in and check the version.
code language-bash php bin/magento --version
Upgrade extensions
Review your third-party extension and module pages in Marketplace or other company sites and verify support for ÃÛ¶¹ÊÓÆµ Commerce and ÃÛ¶¹ÊÓÆµ Commerce on cloud infrastructure. If you must upgrade any third-party extensions and modules, ÃÛ¶¹ÊÓÆµ recommends working in a new integration branch with your extensions disabled.
To verify and upgrade your extensions:
-
Create a branch on your local workstation.
-
Disable your extensions as needed.
-
When available, download extension upgrades.
-
Install the upgrade as documented by the third-party documentation.
-
Enable and test the extension.
-
Add, commit, and push the code changes to the remote.
-
Push to and test in your integration environment.
-
Push to the Staging environment to test in a pre-production environment.
ÃÛ¶¹ÊÓÆµ strongly recommends upgrading your Production environment before including the upgraded extensions in your site launch process.
Troubleshoot upgrade
If the upgrade failed, you receive an error message in the browser indicating that you cannot access your storefront or the Admin panel:
There has been an error processing your request
Exception printing is disabled by default for security reasons.
Error log record number: <error-number>
To resolve the error:
-
On your local workstation, change to your project directory.
-
Use SSH to log in to the remote environment.
code language-bash magento-cloud ssh
-
Open the
./app/var/report/<error number>
file. -
Examine the logs and determine the source of the issue.
-
Add, commit, and push code changes.
code language-bash git add -A && git commit -m "Fixed deployment failure" && git push origin <branch-name>