-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdeploy.php
More file actions
113 lines (97 loc) · 3.98 KB
/
deploy.php
File metadata and controls
113 lines (97 loc) · 3.98 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
<?php
namespace Deployer;
require 'recipe/symfony3.php';
/** @var array $_dep */
require './deploy_vars.php';
// Set configurations
set('ssh_type', 'native');
set('ssh_multiplexing', true);
set('repository', $_dep['repository']);
set('shared_files', []);
set('shared_dirs', ['var/logs', 'var/sessions', 'var/storage']);
set('writable_dirs', ['var/cache', 'var/logs', 'var/sessions', 'var/storage']);
// Configure servers
host('production')
->hostname($_dep['server']['address'])
->set('deploy_path', $_dep['server']['deploy_path'])
->port($_dep['server']['port'])
->user($_dep['server']['user'])
->identityFile($_dep['server']['key_pub'], $_dep['server']['key_priv'], $_dep['server']['key_secret']);
// Symfony console opts
set('console_options', function () {
$options = '--no-interaction --env={{symfony_env}}';
return !in_array(get('symfony_env'), ['prod', 'build']) ? $options : sprintf('%s --no-debug', $options);
});
/** Copy production parameters yml */
task('deploy:config:copy', function () use ($_dep) {
run('cp '.$_dep['server']['shared_path'].'/parameters.yml.wallet-backend '.$_dep['server']['deploy_path'].'/release/app/config/parameters.yml');
run('cp '.$_dep['server']['shared_path'].'/sentry.yml.wallet-backend '.$_dep['server']['deploy_path'].'/release/app/config/vendors/sentry.yml');
})->desc('Copies parameter yml');
/** bower install! */
task('deploy:bower:install', function () use ($_dep) {
run('cd {{release_path}} && bower install');
})->desc('Install bower dependencies!');
/** Assets dump! */
task('deploy:assetic:dump', function () use ($_dep) {
run('{{bin/php}} {{bin/console}} assetic:dump {{console_options}}');
})->desc('Assets dump!');
/** cache clear! */
task('deploy:cache:clear', function () use ($_dep) {
run('{{bin/php}} {{bin/console}} cache:clear {{console_options}}');
})->desc('Cleares symfony cache!');
/** cache warmup! */
task('deploy:cache:warmup', function () use ($_dep) {
run('{{bin/php}} {{bin/console}} cache:warmup {{console_options}}');
})->desc('Warmup symfony cache!');
/** db migrations! */
task('database:migrate', function () use ($_dep) {
set('symfony_env', 'build');
run('{{bin/php}} {{bin/console}} doctrine:migrations:migrate {{console_options}}');
set('symfony_env', 'prod');
})->desc('Applies database migrations!');
/** cleaning unusefull files! */
task('clean:unuseful', function () use ($_dep) {
run(sprintf('rm -rf %s', implode(' ', [
$_dep['server']['deploy_path'].'/release/var/cache/build',
$_dep['server']['deploy_path'].'/release/var/SymfonyRequirements.php',
$_dep['server']['deploy_path'].'/release/app/config/*_dev.*',
$_dep['server']['deploy_path'].'/release/app/config/*_test.*',
$_dep['server']['deploy_path'].'/release/app/config/*_build.*',
$_dep['server']['deploy_path'].'/release/app/config/parameters.yml.dist',
$_dep['server']['deploy_path'].'/release/tests',
$_dep['server']['deploy_path'].'/release/docker',
$_dep['server']['deploy_path'].'/release/deploy.php',
$_dep['server']['deploy_path'].'/release/deploy_vars.php.dist',
$_dep['server']['deploy_path'].'/release/docker-compose*.yml',
$_dep['server']['deploy_path'].'/release/phpunit.xml.dist',
$_dep['server']['deploy_path'].'/release/setup.sh',
$_dep['server']['deploy_path'].'/release/start.sh'
])));
})->desc('Cleanses unuseful files!');
/**
* Main task
*/
task('deploy', [
'deploy:info',
'deploy:prepare',
'deploy:lock',
'deploy:release',
'deploy:update_code',
'deploy:clear_paths',
'deploy:create_cache_dir',
'deploy:shared',
'deploy:config:copy',
'deploy:assets',
'deploy:vendors',
'database:migrate',
'deploy:assets:install',
'deploy:bower:install',
'deploy:assetic:dump',
'deploy:cache:clear',
'deploy:writable',
'deploy:cache:warmup',
'clean:unuseful',
'deploy:symlink',
'deploy:unlock',
'cleanup',
])->desc('Deploy your project');