/magento2-deployer-plus

Tool based on deployer.org to perform zero downtime deployments of Magento 2 projects

Primary LanguagePHPGNU General Public License v3.0GPL-3.0

Magento 2 Deployer Plus

Build Status

  • Reliable fully-automated deployments tool for Magento 2.
  • Zero downtime deployments on Magento versions >= 2.2
  • Automating your deployments is as easy as defining the servers where you want to deploy to.

Motivation

This project aims to offer a common solution for fully-automated deployments on all versions of Magento 2. This tool uses the well known Deployer and adds specific recipes for each Magento 2 version.

Important Features

  • Deployer code syntax
  • Super easy setup
  • Deploy to multiple servers
  • Zero Downtime (only Magento >= 2.2)
  • Build and Deploy artifacts (only Magento >= 2.2)
  • Secure rollbacks (only Magento >= 2.2)

Installation

composer require "jalogut/magento2-deployer-plus"

Setup

Magento >= 2.1

cp <vendor_dir>/jalogut/magento2-deployer-plus/deploy.php.sample_2_1 deploy.php

Magento >= 2.2

cp <vendor_dir>/jalogut/magento2-deployer-plus/deploy.php.sample_2_2 deploy.php

Magento >= 2.2.5

cp <vendor_dir>/jalogut/magento2-deployer-plus/deploy.php.sample_2_2_5 deploy.php

Usage

Git deploys:

<bin_dir>/dep deploy [<stage>]

Build artifact deploys: (only Magento >= 2.2)

<bin_dir>/dep build
<bin_dir>/dep deploy-artifact [<stage>]

Disclaimer

Build command

Build command can only be used if config propagation is properly configured. See Magento DevDocs:

Also check app:config:dump issue and workaround here:

Troubleshooting

Js translations missing (magento versions >=2.1.3 <2.2.1)

  • Problem: Known Magento issue when executing setup:static-content:deploy for several languages.

  • Github Issues:

  • Solution: Until that gets fixed in 2.2.1, the only workaround is to execute setup:static-content:deploy individually for each language:

     // deploy.php
     task('files:static_assets', '
     	{{bin/php}} {{magento_bin}} setup:static-content:deploy en_US {{static_deploy_options}}
     	{{bin/php}} {{magento_bin}} setup:static-content:deploy de_CH {{static_deploy_options}}
     	{{bin/php}} {{magento_bin}} setup:static-content:deploy fr_FR {{static_deploy_options}}
     ');

Compilation error

  • Solution: Increase php memory_limit configuration to 728M o 1024M

Static deploy error when setting a new template (if config propagation is not used)

  • Problems:

    • [LogicException] Unable to load theme by specified key: 'Template'
    • @variable is undefined in file
  • Reason: If a new template is set, running setup:upgrade is required before executing setup:static-content:deploy

  • Solution: Skip setup:static-content:deploy first time you deploy the new template:

    1. Temporary disable task files:static_assets

      // deploy.php
      task('files:static_assets')->onRoles('Skip');
      
    2. Perform a new release

    3. Enable back files:static_assets on your deploy.php file

      • Remove task('files:static_assets')->onRoles('Skip');
    4. Manually execute files:static_assets

      <bin_dir>/dep files:static_assets [<stage>]
      

    After that, future deployments will work without issues

Prerequisites

  • PHP >= 7.0.8
  • MAGENTO >= 2.1

ChangeLog

CHANGELOG.md

Developers

Licence

GNU General Public License, version 3 (GPLv3)

Copyright

(c) Juan Alonso juan.jalogut@gmail.com