Skip to content

Instantly share code, notes, and snippets.

@zorca
Created October 19, 2017 05:40
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save zorca/76f5dd09b73cdf6842acce5df8e6041c to your computer and use it in GitHub Desktop.
Save zorca/76f5dd09b73cdf6842acce5df8e6041c to your computer and use it in GitHub Desktop.
<?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