Skip to content

Instantly share code, notes, and snippets.

@jaggy
Created December 18, 2015 14:14
Show Gist options
  • Save jaggy/5e80dfd2b5f378661c64 to your computer and use it in GitHub Desktop.
Save jaggy/5e80dfd2b5f378661c64 to your computer and use it in GitHub Desktop.
@setup
function env(string $key) {
$dotenv = file_get_contents('.env');
$rows = explode("\n", $dotenv);
$search = array_filter($rows, function ($row) use ($key) {
if (strstr($row, $key)) {
return $row;
}
});
$variable = reset($search);
$segments = explode('=', $variable);
$user = end($segments);
return $user;
}
$now = date('YmdHis');
$home = '/home/forge';
$domain = 'default';
$base = "{$home}/{$domain}";
$releases = "{$base}/releases";
$current = "{$releases}/{$now}";
$repository = 'https://github.com/jaggy/blog/archive/master.zip';
$production_server = env('SERVER_PRODUCTION');
@endsetup
@servers(['production' => $production_server])
@macro('deploy')
download_latest_release
install_composer_dependencies
activate_current_release
setup_environment_variables
restart_phpfpm_server
@endmacro
@task('download_latest_release')
cd {{ $releases }}
wget {{ $repository }}
unzip master.zip
mv blog-master {{ $now }}
rm master.zip
@endtask
@task('install_composer_dependencies')
cd {{ $current }}
composer install --prefer-dist --no-dev
@endtask
@task('activate_current_release')
cd {{ $domain }}
{{-- Delete symbolic link --}}
rm current
{{-- Link the latest release to the current release --}}
ln -s {{ $current }} current
@endtask
@task('setup_environment_variables')
cd {{ $current }}
{{-- Link the global .env file to the current release --}}
ln -s {{ $base }}/.env .
@endtask
@task('restart_phpfpm_server')
sudo /usr/sbin/service php7.0-fpm reload
@endtask
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment