<?php
namespace Deployer;
require 'recipe/symfony.php';
// Config #############################################
$projects = [
'projectA' => [
'deploy_path' => '/var/www/projectA.com',
'deploy_branch' => 'develop',
'env_file' => 'config/projectA.com/.env'
],
'projectB' => [
'deploy_path' => '/var/www/projectB.com',
'deploy_branch' => 'staging',
'env_file' => 'config/projectB.com/.env'
]
];
// set repository
set('repository', 'git@github.com:<your_git_repository>.git');
// Number of releases to keep
set('keep_releases', 3);
// Hosts
foreach ($projects as $project => $config) {
localhost($project)
->set('deploy_path', $config['deploy_path'])
->set('branch', $config['deploy_branch'])
->set('env_file', $config['env_file']);;
}
// Tasks
set('git_tty', true);
set('composer_action', 'update');
add('shared_files', ['.env']);
add('shared_dirs', ['vendor', 'node_modules']);
add('writable_dirs', ['var', 'html']);
set('allow_anonymous_stats', false);
// Tasks
desc('Deploy project');
task('deploy', [
'deploy:prepare',
'deploy:copy_env',
'deploy:vendors',
'deploy:node_modules',
'deploy:eccube',
'deploy:set_permissions',
'deploy:publish',
]);
// Custom task to copy environment-specific files
task('deploy:copy_env', function () {
$envFile = get('env_file');
run("cp $envFile {{release_path}}/.env");
});
// Task to install composer dependencies
task('deploy:vendors', function () {
run('cd {{release_path}} && composer install');
});
// Task to install composer dependencies
task('deploy:node_modules', function () {
run('cd {{release_path}} && npm install');
run('cd {{release_path}} && npm run build');
});
// Custom task to run additional commands
task('deploy:eccube', function () {
run('cd {{release_path}} && bin/console eccube:generate:proxies');
run('cd {{release_path}} && bin/console eccube:schema:update --force --dump-sql');
run('cd {{release_path}} && bin/console cache:clear');
});
// Custom task to set permissions
task('deploy:set_permissions', function () {
run('chmod -R 777 {{release_path}}/html');
run('chmod -R 777 {{release_path}}/var');
});
// If deploy fails automatically unlock.
- after('deploy:failed', 'deploy:unlock');