Created
April 22, 2015 14:22
-
-
Save ekandreas/0dd51236567ac2a6b900 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', '[email protected]' ); | |
set( 'mysql_db', 'my-vagrant' ); | |
set( 'mysql_user', 'root' ); | |
set( 'mysql_password', 'some-pass-password' ); | |
set( 'ssh_remote_temp_folder', '[email protected]:/home/deployuser' ); | |
set( 'ssh_remote_web_folder', '[email protected]:/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