Skip to the content
Documentation
Help Start
Reading in:
  • German: 9,059 of 9,059 pages
About the help in other languages
All help pages

A deployment pipeline

Move an application from a developer machine through test to production safely - environments with EXP_ENV, Git and Composer for code, packages and upgrade steps for data, the deploy command, maintenance mode, rollback…

Download as PDF

Address: https://doc.exponential.earth/exphelp/viewer/help/creators/app-creators/deployment-pipeline.md

On this page

A deployment pipeline

This page is for application creators who set up how changes reach production. The goal: the same code and the same steps on every environment, settings that differ per machine kept apart, and a way back when something goes wrong.

Contents

  1. Environments
  2. What moves how
  3. A release, step by step
  4. Rollback
  5. Verification

Environments

EnvironmentPurposeSettings
Developmenteach developer's machineEXP_ENV=dev: debug on, file mail transport
Test / staginga copy of production for acceptanceEXP_ENV=test
Productionthe live sitethe base settings

EXP_ENV names the environment, and every settings file can have a variant for it (site.ini.test.append.php) (Environment settings and secrets, Settings per environment).

What moves how

ThingMoves by
Kernel and extensionsGit and Composer (composer.lock committed in the project)
Your extensionits Git tag, required by version
SettingsGit, without secrets; secrets set per machine
Content classespackages or upgrade scripts, never by clicking twice (Content packages)
Tablesyour install and upgrade commands (Database schema and .dba files)
Contentstays in production; copy production to staging, never the other way

A release, step by step

  1. Tests pass in CI (Continuous integration for extensions).
  2. Deploy to staging, run the upgrade steps, test.
  3. Production: back up (Backups and restores).
  4. Maintenance mode if the release changes data (php bin/php/maintenance.php on --allow-admin).
  5. Update the code (Git pull or composer update <package> of the project), run the upgrade steps.
  6. ./console exp:velocity deploy (--kernel when kernel classes changed) (Deploying with Velocity).
  7. Maintenance off; verify.

Rollback

  • Code: check out the previous tag and deploy again.
  • Data: restore the backup taken before the release when upgrade steps changed data; that is why step 3 comes first.
  • Write upgrade steps that only add (columns, classes) where possible, so the previous code still runs on the new data.

Verification

  • To do: exp:velocity status: the server answers; exp:cache status ends in PASS.
  • To do: The front page, a page of each changed type, the administration.
  • To do: The error log is quiet.
  • To do: Setup > Upgrade check for file consistency (Upgrade check).
  • To do: The about page shows the expected versions.

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.

Something wrong on this page? Report an error

Documentation license

This documentation is free documentation, licensed under the GNU Free Documentation License 1.3 or later.

Exponential Copyright © 1998-2026 Exponential Foundation and 7x