Last active
March 10, 2018 11:54
-
-
Save ekandreas/46a6b86f505bbaff9e7d to your computer and use it in GitHub Desktop.
PHP Deployer, Pull script example from production to my local Bedrock/Vagrant environment
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 | |
/** | |
* Pull script example from production to my local Bedrock/Vagrant environment | |
* Requires PHP Deployer 3 | |
* | |
* Andreas Ek, 2015-04-23 | |
*/ | |
date_default_timezone_set( 'Europe/Stockholm' ); | |
server( 'development', 'my-vagrant.dev' ) | |
->env( 'deploy_path', '/var/www/my-vagrant.dev' ) | |
->env( 'branch', 'master' ) | |
->user( 'vagrant', 'vagrant' ); | |
server( 'production', 'my-prod.se' ) | |
->env( 'deploy_path', '/var/www/my-prod.se' ) | |
->user( 'deployuser' ) | |
->env( 'branch', 'master' ) | |
->pubKey(); | |
set( 'site_name', 'my-vagrant' ); | |
set( 'site_title', 'My Vagrant' ); | |
set( 'site_email', 'andreas@andreasek.se' ); | |
set( 'mysql_db', 'my-vagrant' ); | |
set( 'mysql_user', 'root' ); | |
set( 'mysql_password', 'some-pass-password' ); | |
set( 'ssh_remote_temp_folder', 'deployuser@my-vagrant.se:/home/deployuser' ); | |
set( 'ssh_remote_web_folder', 'deployuser@my-vagrant.se:/var/www/my-vagrant.se' ); | |
/** | |
* Code below should be placed in a common file for reuse! | |
* | |
* Example: | |
* dep pull production | |
* | |
*/ | |
argument( 'stage', \Symfony\Component\Console\Input\InputArgument::OPTIONAL, | |
'Run tasks only on this server or group of servers.' ); | |
task( 'pull:dump', function () { | |
$mysql_db = get( 'mysql_db' ); | |
$mysql_user = get( 'mysql_user' ); | |
$mysql_password = get( 'mysql_password' ); | |
writeln( 'Creating a new database dump (approx. 10s)' ); | |
run( 'mysqldump -u ' . $mysql_user . ' -p' . $mysql_password . ' ' . $mysql_db . ' > ~/' . $mysql_db . '.sql' ); | |
} ); | |
task( 'pull:fetch_dump', function () { | |
$mysql_db = get( 'mysql_db' ); | |
$ssh_remote_temp_folder = get( 'ssh_remote_temp_folder' ); | |
writeln( 'Getting database dump (approx. 10s)' ); | |
runLocally( 'scp ' . $ssh_remote_temp_folder . '/' . $mysql_db . '.sql ' . $mysql_db . '.sql' ); | |
} ); | |
task( 'pull:resolve_dump', function () { | |
$site_name = get( 'site_name' ); | |
writeln( 'Restore database inside vagrant (approx. 10s)' ); | |
runLocally( 'cd ../vagrant && vagrant ssh -c "mysql -u root -proot ' . $site_name . ' < /var/www/' . $site_name . '.dev/' . $site_name . '.sql" && cd ../' . $site_name . '.dev' ); | |
} ); | |
task( 'pull:remove_dump', function () { | |
$mysql_db = get( 'mysql_db' ); | |
writeln( 'Remove sql dump' ); | |
runLocally( 'rm ' . $mysql_db . '.sql' ); | |
} ); | |
task( 'pull:set_vagrant_wp', function () { | |
$site_name = get( 'site_name' ); | |
writeln( 'Restore wp after pull (approx. 10s)' ); | |
runLocally( 'cd ../vagrant && vagrant ssh -c "cd /var/www/' . $site_name . '.dev && wp --path=wp search-replace ' . $site_name . '.se ' . $site_name . '.dev && wp rewrite flush" && cd ../' . $site_name . '.dev' ); | |
} ); | |
task( 'pull:uploads', function () { | |
$ssh_remote_web_folder = get( 'ssh_remote_web_folder' ); | |
writeln( 'Getting uploads, long duration first time! (approx. 60s)' ); | |
runLocally( 'rsync -re ssh ' . $ssh_remote_web_folder . '/shared/wp-content/uploads wp-content' ); | |
} ); | |
/** | |
* Success message | |
*/ | |
task( 'success', function () { | |
writeln( "<info>Successfully pulled!</info>" ); | |
} ) | |
->once() | |
->setPrivate(); | |
task( 'pull', [ | |
'pull:dump', | |
'pull:fetch_dump', | |
'pull:resolve_dump', | |
'pull:remove_dump', | |
'pull:set_vagrant_wp', | |
'pull:uploads', | |
'success' | |
] ); | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment