Upgrade Magento version

You can upgrade the core Magento Commerce code base to version 2.3. It is best to review the summary of the updated technology stack before upgrading your project. If you need to upgrade from a version older than 2.1, you must upgrade to a supported version first. See Upgrades and patches for upgrade path details.

It is a best practice to verify the ADMIN_EMAIL variable, because it is required for upgrading and patching Magento Commerce Cloud. See Set environment and project variables.

Before beginning an upgrade or a patching process, create an active branch from the Integration environment and checkout the new branch to your local workstation. Dedicating a branch to the upgrade or the patch process helps to avoid interference with your work in progress.

If you use a version of Magento Commerce Cloud that does not contain the ece-tools package, then your project requires an upgrade. If you currently use the ece-tools package and you need to update it, see Update ece-tools version.

Back up the database

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:

  1. Create a local backup of the remote database.

    magento-cloud db:dump
    
  2. Back up code and media.

    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:

  1. Use SSH to log in to the remote server.

  2. Create a database dump.

    vendor/bin/ece-tools db-dump
    
  • We recommend setting the application in maintenance mode before doing a database dump in Production environments.
  • This creates an dump-<timestamp>.sql.gz archive file in your local project directory. See Snapshot and backup management.

Complete the upgrade

If you use PHP version 7.2, you must remove the mcrypt extension from the extensions section of the .magento.app.yaml file. For Pro projects, you need to create a support ticket to completely disable the mcrypt extension.

  1. Before completing the upgrade, you must update the autoload property of the composer.json file.

  2. Change to your Magento root directory and set the upgrade version.

    composer require magento/magento-cloud-metapackage <requiredversion> --no-update
    
  3. Update the project.

    composer update
    
  4. Add, commit, and push code changes.

    git add -A && git commit -m "Upgrade" && 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. Both composer install and composer update marshal files from the base package (that is, magento/magento2-base and magento/magento2-ee-base) into the package root.

    The files Composer marshals belong to the new version of Magento, to overwrite the outdated version of those same files. Currently, marshaling is disabled in Magento Commerce, so you must add the marshaled files to source control.

  5. Wait for deployment to complete.

  6. Verify the upgrade in your Integration, Staging, or Production environment by using SSH to log in and check the version.

      php bin/magento --version
    

Verify and upgrade your extensions

If you need to upgrade any third-party extensions and modules that support version 2.3, we recommend working in a new Integration branch with your extensions disabled. Review your third-party extension and module pages in Marketplace or other company sites to verify support for Magento Commerce 2.3.

  1. Create a new branch on your local workstation.
  2. Disable your extensions as needed.
  3. When available, download extension upgrades.
  4. Install the upgrade as documented by the third-party documentation.
  5. Enable and test the extension.
  6. Add, commit, and push the code changes to the remote.
  7. Push to and test in your Integration environment.
  8. Push to the Staging environment to test in a pre-production environment.

We strongly recommend upgrading your Production environment before including the upgraded extensions in your go-live process.

We strongly recommend upgrading your Fastly module to the latest version.

Troubleshoot upgrade

If the upgrade failed, you receive an error message in the browser indicating you cannot access your storefront or the Magento Admin pane:

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:

  1. Using SSH, log in to the remote server and open the ./app/var/report/<error number> file.

  2. Examine the logs to determine the source of the issue.

  3. Add, commit, and push code changes.

    git add -A && git commit -m "Fixed deployment failure" && git push origin <branch name>