Created
October 19, 2017 05:40
-
-
Save zorca/76f5dd09b73cdf6842acce5df8e6041c to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
use function Deployer\{server, task, run, set, get, add, before, after, desc, upload, runLocally}; | |
require 'recipe/common.php'; | |
// Configuration | |
$config = require 'deploy_config.php'; | |
//set('ssh_type', 'native'); | |
set('ssh_multiplexing', true); | |
//set('repository', 'ssh://gogs@git.server.com:22/user/repo.git'); | |
set('shared_files', ['public/wp-config.php']); | |
set('shared_dirs', ['public/wp-content/uploads']); | |
set('writable_dirs', []); | |
set('keep_releases', 10); | |
set('composer_command', 'composer'); | |
set('server_name', $config['server_name']); | |
set('site_name', $config['site_name']); | |
set('db_name', $config['db_name']); | |
set('db_user', $config['db_user']); | |
set('db_pass', $config['db_pass']); | |
//Defaults for all servers | |
get('timezone', 'Europe/London'); | |
get('branch', 'master'); | |
// Configure servers | |
server('development', $config['server_name']) | |
->user($config['server_user']) | |
->password($config['server_pass']) | |
->port($config['server_port']) | |
->set('deploy_path', '/var/www/' . $config['site_name'] . '.' . $config['server_name']); | |
// Easy Engine tasks | |
/** | |
* Create new Wordpress site with php5.6 | |
*/ | |
task('site:create', function () { | |
run('ee site create ' . get('site_name') . '.' . get('server_name') . ' --wp'); | |
}); | |
/** | |
* Delete existing Wordpress site | |
*/ | |
task('site:delete', function () { | |
run('ee site delete ' . get('site_name') . '.' . get('server_name') . ' --no-prompt'); | |
}); | |
/** | |
* Chown files to correct user | |
*/ | |
task('files:chown', function () { | |
run('chown -R www-data:www-data ' . get('deploy_path')); | |
}); | |
// Tasks | |
task('files:upload', function() { | |
runLocally('"C:/Program Files/7-Zip/7z.exe" a -r wp-content.zip wp/wp-content'); | |
$appFiles = [ | |
'wp-content.zip' | |
]; | |
$deployPath = get('deploy_path'); | |
foreach ($appFiles as $file) { | |
upload($file, "{$deployPath}/{$file}"); | |
} | |
echo 'Upload ok > '; | |
run("unzip -u {$deployPath}/wp-content.zip -d {$deployPath}"); | |
echo 'Unzip ok > '; | |
run("rm -Rf {$deployPath}/htdocs/wp-content"); | |
echo 'WP_CONTENT remove ok > '; | |
run("cp -R {$deployPath}/wp/wp-content {$deployPath}/htdocs/wp-content"); | |
echo 'Copy ok > '; | |
run("rm -Rf {$deployPath}/wp"); | |
echo 'WP remove ok > '; | |
}); | |
task('db:upload', function() { | |
$deploy_path = get('deploy_path'); | |
$server_name = get('server_name'); | |
$site_name = get('site_name'); | |
$local_site_name = $site_name . '.dev'; | |
$remote_site_name = $site_name . '.' . $server_name; | |
$db_name = get('db_name'); | |
$db_user = get('db_user'); | |
$db_pass = get('db_pass'); | |
runLocally('mysqldump -u root ' . get('site_name') . ' > wp.sql'); | |
echo 'Dump ok > '; | |
upload('wp.sql', "{$deploy_path}/wp.sql"); | |
echo 'Upload dump ok > '; | |
run("mysql -u {$db_user} -p{$db_pass} {$db_name} < {$deploy_path}/wp.sql"); | |
echo 'DB import ok > '; | |
upload('srdb.class.php', "{$deploy_path}/srdb.class.php"); | |
upload('srdb.cli.php', "{$deploy_path}/srdb.cli.php"); | |
run("php {$deploy_path}/srdb.cli.php -h localhost -u {$db_user} -p {$db_pass} -n {$db_name} -s //{$local_site_name} -r //{$remote_site_name}"); | |
}); | |
task('db:download', function() { | |
$deploy_path = get('deploy_path'); | |
$server_name = get('server_name'); | |
$site_name = get('site_name'); | |
$local_site_name = $site_name . '.dev'; | |
$remote_site_name = $site_name . '.' . $server_name; | |
$db_name = get('db_name'); | |
$db_user = get('db_user'); | |
$db_pass = get('db_pass'); | |
run("mysqldump -u {$db_user} -p{$db_pass} {$db_name} > {$deploy_path}/wp.sql"); | |
}); | |
/** | |
* Main task | |
*/ | |
desc('Deploy your project'); | |
task('deploy', [ | |
'deploy:prepare', | |
'files:upload', | |
'files:chown', | |
'db:upload', | |
'cleanup', | |
]); | |
// [Optional] if deploy fails automatically unlock. | |
after('deploy:failed', 'deploy:unlock'); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment