justbetter / magento2-deployer-plus
Magento 2 deployment tool based on deployer.org
Requires
- deployer/deployer: ^7.0
README
- 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 justbetter/magento2-deployer-plus
Setup
Magento >= 2.1
cp <vendor_dir>/justbetter/magento2-deployer-plus/deploy.php.sample_2_1 deploy.php
Magento >= 2.2
cp <vendor_dir>/justbetter/magento2-deployer-plus/deploy.php.sample_2_2 deploy.php
Magento >= 2.2.5
cp <vendor_dir>/justbetter/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>]
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 executesetup:static-content:deploy
individually for each language:// deploy.php task('files:static_assets', function () { run('{{bin/php}} {{magento_bin}} setup:static-content:deploy en_US {{static_deploy_options}}'); run('{{bin/php}} {{magento_bin}} setup:static-content:deploy de_CH {{static_deploy_options}}'); run('{{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 executingsetup:static-content:deploy
-
Solution: Skip
setup:static-content:deploy
first time you deploy the new template:-
Temporary disable task
files:static_assets
// deploy.php task('files:static_assets')->onRoles('Skip');
-
Perform a new release
-
Enable back
files:static_assets
on yourdeploy.php
file- Remove
task('files:static_assets')->onRoles('Skip');
- Remove
-
Manually execute
files:static_assets
<bin_dir>/dep files:static_assets [<stage>]
After that, future deployments will work without issues
-
Prerequisites
- PHP >= 8.0
- MAGENTO >= 2.1
ChangeLog
Developers
Licence
GNU General Public License, version 3 (GPLv3)
Copyright
(c) JustBetter B.V. hello@justbetter.nl