deployer/docs/recipe/magento2.md
Fabian Schmengler / 8a94172fd5
Magento: Fix artifact_path generation (#3459)
* Magento: Fix artifact_path generation

- Fix 1. Add -p parameter to mkdir command
   {{artifact_path}} could be configured with multiple folders such as build/artifacts
- Fix 2. run() -> runLocally()
   The {{artifact_dir}} is used to keep artifacts archive file.
   It should be called at CI server only and not at target server.
   Then the task `artifact:upload` uploads this file at target server host under {{release_path}}.
   It is not needed to have {{artifact_dir}} at target server.

* Update docs
2023-01-30 21:15:09 +01:00

12 KiB
Raw Blame History

How to Deploy a Magento 2 Project

require 'recipe/magento2.php';

Source

Deployer is a free and open source deployment tool written in PHP. It helps you to deploy your Magento 2 application to a server. It is very easy to use and has a lot of features.

Three main features of Deployer are:

  • Provisioning - provision your server for you.
  • Zero downtime deployment - deploy your application without a downtime.
  • Rollbacks - rollback your application to a previous version, if something goes wrong.

Additionally, Deployer has a lot of other features, like:

  • Easy to use - Deployer is very easy to use. It has a simple and intuitive syntax.
  • Fast - Deployer is very fast. It uses parallel connections to deploy your application.
  • Secure - Deployer uses SSH to connect to your server.
  • Supports all major PHP frameworks - Deployer supports all major PHP frameworks.

You can read more about Deployer in Getting Started.

The deploy task of Magento 2 consists of:

The magento2 recipe is based on the common recipe.

Configuration

static_content_locales

Source

By default setup:static-content:deploy uses en_US. To change that, simply put set('static_content_locales', 'en_US de_DE'); in you deployer script.

'en_US'

magento_themes

Source

You can also set the themes to run against. By default it'll deploy all themes - add('magento_themes', ['Magento/luma', 'Magento/backend']);

[

]

static_content_jobs

Source

Also set the number of conccurent jobs to run. The default is 1 Update using: set('static_content_jobs', '1');

'1'

content_version

Source

return time();

shared_files

Source

Overrides shared_files from recipe/deploy/shared.php.

[
    'app/etc/env.php',
    'var/.maintenance.ip',
]

shared_dirs

Source

Overrides shared_dirs from recipe/deploy/shared.php.

[
    'var/composer_home',
    'var/log',
    'var/export',
    'var/report',
    'var/import',
    'var/import_history',
    'var/session',
    'var/importexport',
    'var/backups',
    'var/tmp',
    'pub/sitemap',
    'pub/media',
    'pub/static/_cache'
]

writable_dirs

Source

Overrides writable_dirs from recipe/deploy/writable.php.

[
    'var',
    'pub/static',
    'pub/media',
    'generated',
    'var/page_cache'
]

clear_paths

Source

Overrides clear_paths from recipe/deploy/clear_paths.php.

[
    'generated/*',
    'pub/static/_cache/*',
    'var/generation/*',
    'var/cache/*',
    'var/page_cache/*',
    'var/view_preprocessed/*'
]

magento_version

Source

// detect version
$versionOutput = run('{{bin/php}} {{release_or_current_path}}/bin/magento --version');
preg_match('/(\d+\.?)+(-p\d+)?$/', $versionOutput, $matches);
return $matches[0] ?? '2.0';

maintenance_mode_status_active

Source

// detect maintenance mode active
$maintenanceModeStatusOutput = run("{{bin/php}} {{release_or_current_path}}/bin/magento maintenance:status");
return strpos($maintenanceModeStatusOutput, MAINTENANCE_MODE_ACTIVE_OUTPUT_MSG) !== false;

enable_zerodowntime

Source

Deploy without setting maintenance mode if possible

true

artifact_file

Source

artifact deployment section settings section

'artifact.tar.gz'

artifact_dir

Source

'artifacts'

artifact_excludes_file

Source

'artifacts/excludes'

build_from_repo

Source

If set to true, the artifact is built from a clean copy of the project repository instead of the current working directory

false

repository

Source

Overrides repository from recipe/common.php.

Set this value if "build_from_repo" is set to true. The target to deploy must also be set with "--branch", "--tag" or "--revision"

null

artifact_path

Source

if (!testLocally('[ -d {{artifact_dir}} ]')) {
runLocally('mkdir -p {{artifact_dir}}');
}
return get('artifact_dir') . '/' . get('artifact_file');

bin/tar

Source

:::info Autogenerated The value of this configuration is autogenerated on access. :::

additional_shared_files

Source

Array of shared files that will be added to the default shared_files without overriding

additional_shared_dirs

Source

Array of shared directories that will be added to the default shared_dirs without overriding

Tasks

magento:compile

Source

Compiles magento di.

Tasks

magento:deploy:assets

Source

Deploys assets.

magento:sync:content_version

Source

Syncs content version.

magento:maintenance:enable

Source

Enables maintenance mode.

magento:maintenance:disable

Source

Disables maintenance mode.

magento:config:import

Source

Config Import.

magento:upgrade:db

Source

Upgrades magento database.

magento:cache:flush

Source

Flushes Magento Cache.

deploy:magento

Source

Magento2 deployment operations.

This task is group task which contains next tasks:

magento:build

Source

Magento2 build operations.

This task is group task which contains next tasks:

deploy

Source

Deploys your project.

This task is group task which contains next tasks:

artifact:package

Source

Packages all relevant files in an artifact.

tasks section

artifact:upload

Source

Uploads artifact in release folder for extraction.

artifact:extract

Source

Extracts artifact in release path.

build:remove-generated

Source

Clears generated files prior to building.

build:prepare

Source

Prepare local artifact build.

deploy:additional-shared

Source

Adds additional files and dirs to the list of shared files and dirs.