-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdeploy.php
More file actions
95 lines (78 loc) · 4.05 KB
/
deploy.php
File metadata and controls
95 lines (78 loc) · 4.05 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
<?php
namespace Deployer;
require 'recipe/laravel.php';
// Укажем основные параметры деплоя
localServer('local', 'localhost')
->user('{ваш-пользователь}')
->env('deploy_path', '/path/to/project/dir')
->stage('local')
;
set('repository', 'https://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@github.com/iv-litovchenko/maptex.git');
env('branch', 'master');
env('git_cache', true);
// Общие папки для вашего проекта, которые будут прозрачно доступны всем релизам
// Они не будут создаваться заново при новом релизе, вместо них будут созданы
// ссылки на их одноимённые папки в папке shared
set('shared_dirs', [
'storage/app',
'storage/framework/cache',
'storage/framework/sessions',
'storage/framework/views',
'storage/logs',
'public/uploads',
'node_modules',
]);
// Общие файлы. Принцип точно такой же, как с папками
// В случае с Laravel нам необходимо сделать "общим" лишь один
// файл - .env
set('shared_files', ['.env']);
// Папки, в которые приложение должно иметь возможность
// писать данные. В нашем случае - это три директории
set('writable_dirs', ['storage', 'vendor', 'public/uploads' ]);
set('http_user', '{ваш-пользователь}');
set('composer_command', '/usr/local/bin/composer'); // Путь к расположение Composer'а
// Задача для деплоя. Установить NPM компоненты
task('deploy:install-npm', function() {
run('cd {{release_path}} && npm i');
});
// Ещё одна задача: скомпилировать все фронтенд файлы, в моём случае
// это делается через Grunt.js
task('deploy:compile-assets', function() {
run('cd {{release_path}} && grunt deploy-production');
});
// Выполнить миграции
task('deploy:migrations', function() {
run('cd {{release_path}} && php artisan migrate --force');
});
// Создать кеш для правил роутинга
task('deploy:create-route-cache', function() {
run('cd {{release_path}} && php artisan route:cache');
});
// Создать кеш для файлов конфигураций
task('deploy:create-config-cache', function() {
run('cd {{release_path}} && php artisan config:cache');
});
// Очистить все закешированные данные
task('deploy:clean-cached-data', function() {
run('cd {{release_path}} && rm bootstrap/cache/*');
});
// Перезапустить PHP после успешного деплоя
task('reload:php-fpm', function() {
run('sudo /usr/sbin/service php7.0-fpm restart');
});
task('deploy', [
'deploy:prepare',
'deploy:release',
'deploy:update_code', // Скачать последний код с гитхаба
'deploy:shared', // Создать ссылки на общие данные
'deploy:vendors', // Обновить компоненты композера
'deploy:clean-cached-data', // Очистить все закешированные данные
'deploy:create-route-cache', // Создать кеш для правил роутинга
'deploy:create-config-cache', // Создать кеш для файлов конфигураций
'deploy:install-npm', // Обновить NPM компоненты
'deploy:compile-assets', // Скомпилировать фронтенд файлы
'deploy:migrations', // Применить миграции
'deploy:symlink', // создать ссылку текущего релиза на этот
'cleanup', // Удалить старые релизы
])->desc('Deploy your project');
after('deploy', 'success');