Last active
September 30, 2017 08:54
-
-
Save lattespirit/2dd55a7baef49e1a6da1a7d2665497b9 to your computer and use it in GitHub Desktop.
Envoy config file to deoply Laravel 5.5 Project
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
@servers(['web' => 'me']) | |
@setup | |
$date = date('YmdHis'); | |
$repo = 'git@example.com:username/repo.git'; | |
$app_dir = 'your/host/path'; | |
$releases = '/var/www/releases'; | |
$release = "release_{$date}"; | |
$vendors = '/var/www/vendors'; | |
$vendor_folder = "vendor_{$date}"; | |
$syslinks_folder = '/var/www/syslinks'; | |
$vendor = '/var/www/syslinks/vendor'; | |
$env_path = '/var/www/syslinks/.env'; | |
$log_folder_path = '/var/www/syslinks/logs'; | |
$repo_composer_file = "{$releases}/{$release}/composer.json"; | |
$app_composer_file = "{$app_dir}/composer.json"; | |
@endsetup | |
@task('init') | |
if [ ! -d {{ $releases }} ]; then | |
mkdir {{ $releases }}; | |
cd {{ $releases }}; | |
git clone -b master {{ $repo }} {{ $release }}; | |
echo "Repository cloned"; | |
cd {{ $release }}; | |
composer install --prefer-dist --no-scripts; | |
php artisan clear-compiled; | |
php artisan package:discover; | |
echo "Composer install finished."; | |
[ -d {{ $syslinks_folder }} ] || mkdir {{ $syslinks_folder }}; | |
mkdir -p {{ $vendors }}/{{ $vendor_folder }} | |
mv vendor {{ $vendors }}/{{ $vendor_folder }}; | |
ln -nfs {{ $vendors }}/{{ $vendor_folder }}/vendor {{ $vendor }} ; | |
ln -nfs {{ $vendor }} vendor; | |
echo "Vendor folder set up"; | |
composer dump-autoload; | |
echo "Composer dump autoload finished"; | |
[ -d {{ $log_folder_path }} ] || mkdir {{ $log_folder_path }}; | |
rm -rf storage/logs | |
ln -nfs {{ $log_folder_path }} storage; | |
chgrp -h vagrant storage/logs; | |
echo "Storage directory set up"; | |
mv .env.example .env; | |
php artisan key:generate; | |
mv .env {{ $env_path }}; | |
echo "Env key generated"; | |
ln -s {{ $env_path }} .env; | |
echo "Environment file set up"; | |
ln -nfs {{ $releases }}/{{ $release }} {{ $app_dir }}; | |
chgrp -h vagrant {{ $app_dir }}; | |
else | |
echo "Deployment path already initialised (current symlink exists)!" | |
fi | |
@endtask | |
@story('deploy', ['on' => 'web']) | |
fetch_repo | |
locate_vendor | |
update_permissions | |
update_symlinks | |
@endstory | |
@task('fetch_repo') | |
cd {{ $releases }}; | |
git clone -b master {{ $repo }} {{ $release }}; | |
@endtask | |
@task('locate_vendor') | |
cd {{ $releases }}/{{ $release }}; | |
isComposerJsonUpdated=false | |
cmp -s {{ $repo_composer_file }} {{ $app_composer_file }} || isComposerJsonUpdated=true | |
if [[ $isComposerJsonUpdated == 'true' ]]; then | |
composer install --prefer-dist --no-scripts; | |
php artisan clear-compiled; | |
php artisan package:discover; | |
mkdir -p {{ $vendors }}/{{ $vendor_folder }}; | |
mv vendor {{ $vendors }}/{{ $vendor_folder }}; | |
ln -nfs {{ $vendors }}/{{ $vendor_folder }}/vendor {{ $vendor }}; | |
echo 'Vendor folder updated.'; | |
fi | |
ln -nfs {{ $vendor }} vendor; | |
echo "Vendor folder set up"; | |
composer dump-autoload; | |
echo "Composer dump autoload finished"; | |
@endtask | |
@task('update_permissions') | |
cd {{ $releases }}; | |
chgrp -R vagrant {{ $release }}; | |
chmod -R ug+rwx {{ $release }}; | |
echo "Release folder permission set up"; | |
@endtask | |
@task('update_symlinks') | |
cd {{ $releases }}/{{ $release }} | |
ln -s {{ $env_path }} .env; | |
echo "Environment file set up"; | |
rm -rf storage/logs | |
ln -nfs {{ $log_folder_path }} storage; | |
chgrp -h vagrant storage/logs; | |
echo "Storage directory set up"; | |
ln -nfs {{ $releases }}/{{ $release }} {{ $app_dir }}; | |
chgrp -h vagrant {{ $app_dir }}; | |
echo "Link to latest release code finished"; | |
sudo service php7.1-fpm reload; | |
echo "PHP reloaded"; | |
echo "Deployment finished"; | |
@endtask |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment