PHP Installer & Deployer for projects based on Eureka Framework
composer require "eureka/component-deployer"parameters:
eureka.deployer.dir.src: '/path/to/src' # where the sources will be installed
eureka.deployer.dir.www: '/path/to/www' # where the symlink on source will be put (link to use in apache/nginx conf)
eureka.deployer.dir.conf: '/path/to/conf' # where the config with prod secrets are stored
eureka.deployer.config:
# Default values
app.name: '%app.name%'
app.tag: '%app.version%'
app.domain: 'www.%app.name%.com'
install:
#~ Installation steps
step.start: 0
step.end: 100
step.list:
#~ 0: Start Install (defined in main installation script)
#~ 1 to 9: reserved for deployed itself
#~ 1: Install composer
#~ 2: Copy secrets files
#~ Setup some directories
10: 'Install/Init/Directories'
11: 'Install/Init/Symlink'
#~ Yarn / npm
40: 'Install/Yarn/Install'
41: 'Install/Yarn/EncoreBuild'
#~ Cleaning installation files
70: 'Install/Clean/Files'
#~ Composer cleaning & install no-dev
#80: 'Install/Clean/Cache'
#~ 90 to 99: reserved for deployed itself
#~ 98: Clean cache
#~ 99: Init directory again for production
#~ 100: Ending installation (defined in main installation script)
init:
directories:
'var/log': 777
'var/cache': 777
symlinks:
'/path/to/upload/': 'web/upload'
copy:
#~ list of files to copy, with the format "from: to"
files:
'/path/to/conf/{platform}/{domain}/app.yaml': 'config/secrets/app.yaml'
'/path/to/conf/{platform}/{domain}/database.yaml': 'config/secrets/database.yaml'
clean:
files:
- '.gitignore'
- 'composer.lock'
- 'package.json'
- 'README.md'
- 'webpack.config.js'
- 'yarn.lock'
- 'yarn-error.log'
directories:
- 'assets/'
- 'node_modules/'
- 'sql/'
services:
_defaults:
autowire: true
Eureka\Component\Deployer\:
resource: '../../vendor/eureka/component-deployer/src/*'
exclude: '../../vendor/eureka/component-deployer/src/{Script}'
Eureka\Component\Deployer\Script\:
resource: '../../vendor/eureka/component-deployer/src/Script/*'
public: true
calls:
- setPathBuilder: [ '@Eureka\Component\Deployer\Common\PathBuilder']
- setRootDir: [ '%kernel.directory.root%' ]
- setConfig: [ '%eureka.deployer.config%' ]
Eureka\Component\Deployer\Common\PathBuilder:
arguments:
$pathSource: '%eureka.deployer.dir.src%'
$pathLink: '%eureka.deployer.dir.www%'
~/my-app/$ bin/console deploy --help
Use :
php Eureka\Component\Deployer\Script\Deploy [OPTION]...
OPTIONS:
-h, --help Reserved - Display Help
-p ARG, --platform=ARG Platform where installation is executed (default: "prod")
-t ARG, --tag=ARG Tag version to install (default from config or 1.0.0 if not defined in config)
-d ARG, --domain=ARG Application domain (ie: www.my-app.com) (default from config)
-n ARG, --name=ARG Application name, used to retrieve config (default from config)
See the CONTRIBUTING file.
You can install project with the following command:
make installAnd update with the following command:
make updateNB: For the components, the composer.lock file is not committed.
You can run unit tests (with coverage) on your side with following command:
make php/testsYou can run integration tests (without coverage) on your side with following command:
make php/integrationFor prettier output (but without coverage), you can use the following command:
make php/testdox # run tests without coverage reports but with prettified outputYou also can run code style check with following commands:
make php/checkYou also can run code style fixes with following commands:
make php/fixYou can check if any explicit dependency is missing with the following command:
make php/depsTo perform a static analyze of your code (with phpstan, lvl 9 at default), you can use the following command:
make php/analyseTo ensure you code still compatible with current supported version at Deezer and futures versions of php, you need to run the following commands (both are required for full support):
Minimal supported version:
make php/min-compatibilityMaximal supported version:
make php/max-compatibilityAnd the last "helper" commands, you can run before commit and push, is:
make ci This project is currently under The MIT License (MIT). See LICENCE file for more information.