Skip to content

Instantly share code, notes, and snippets.

@tiagobastos
Created July 5, 2018 09:40
Show Gist options
  • Save tiagobastos/fe6c0ab10a492224cf6c2ffb657f9de1 to your computer and use it in GitHub Desktop.
Save tiagobastos/fe6c0ab10a492224cf6c2ffb657f9de1 to your computer and use it in GitHub Desktop.
Envoy Generic configuration file
@servers(['production' => 'user@hostname'])
@setup
$repo = 'github:ACCOUNT/REPOSITORY.GIT'; // ssh config with host github
$release_dir = '/path/to/all/REPOSITORY/releases';
$app_dir = '/path/to/document/root';
$release = 'release_' . date('d.m.Y_H.i.s');
@endsetup
@macro('deploy', ['on' => 'production'])
deploy_prepare
fetch_repo
run_composer
run_npm
run_elixir
move_env_file
update_permissions
run_migrations_refresh
update_symlinks
after_deploy
@endmacro
@task('deploy_prepare')
echo '**************************************';
echo '* Task: deploy_prepare *';
echo '**************************************';
[ -d {{ $release_dir }} ] || mkdir -p {{ $release_dir }};
@endtask
@task('fetch_repo')
echo '**************************************';
echo '* Task fetch_repo *';
echo '**************************************';
cd {{ $release_dir }};
git clone {{ $repo }} {{ $release }};
@endtask
@task('fetch_repo_update')
echo '**************************************';
echo '* Task fetch_repo_update *';
echo '**************************************';
cd {{ $release_dir }};
git reset --hard HEAD;
git push origin master;
@endtask
@task('run_composer')
echo '**************************************';
echo '* Task run_composer *';
echo '**************************************';
cd {{ $release_dir }}/{{ $release }};
COMPOSER_CACHE_DIR=/dev/null composer install --prefer-dist --no-interaction --optimize-autoloader;
@endtask
@task('run_npm')
echo '**************************************';
echo '* Task run_npm *';
echo '**************************************';
cd {{ $release_dir }}/{{ $release }};
npm install;
@endtask
@task('run_elixir')
echo '**************************************';
echo '* Task run_elixir *';
echo '**************************************';
cd {{ $release_dir }}/{{ $release }};
gulp --production;
@endtask
@task('move_env_file')
echo '**************************************';
echo '* Task move_env_file *';
echo '**************************************';
cp {{ $release_dir }}/.env {{ $release_dir }}/{{ $release }}/.env;
@endtask
@task('update_permissions')
echo '**************************************';
echo '* Task update_permissions *';
echo '**************************************';
chown -R :nginx {{ $release_dir }}/{{ $release }};
chmod -R ug+rwx {{ $release_dir }}/{{ $release }};
@endtask
@task('run_migrations')
echo '**************************************';
echo '* Task run_migrations *';
echo '**************************************';
cd {{ $release_dir }}/{{ $release }};
php artisan migrate --force;
composer dump-autoload -o;
@endtask
@task('run_migrations_refresh')
echo '**************************************';
echo '* Task run_migrations_refresh *';
echo '**************************************';
cd {{ $release_dir }}/{{ $release }};
php artisan migrate:refresh --seed --force;
composer dump-autoload -o;
@endtask
@task('update_symlinks')
echo '**************************************';
echo '* Task update_symlinks *';
echo '**************************************';
ln -nfs {{ $release_dir }}/{{ $release }} {{ $app_dir }};
chgrp -h nginx {{ $app_dir }};
@endtask
@task('after_deploy')
echo 'Deployment end';
@endtask
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment