Skip to content

Instantly share code, notes, and snippets.

@revooms
Last active July 17, 2018 07:48
Show Gist options
  • Save revooms/bbdd42ec31f1173925f6766667be2298 to your computer and use it in GitHub Desktop.
Save revooms/bbdd42ec31f1173925f6766667be2298 to your computer and use it in GitHub Desktop.
Little Laravel Helpers and Snippets

Little Laravel Helpers and Snippets

# https://docs.gitlab.com/ce/ci/examples/laravel_with_gitlab_and_envoy/index.html
#
# Usage: envoy run deploy
@setup
$repository = 'git@gitlab.com:<YOURREPOSITORY>.git';
$app_dir = '/var/www/<YOURAPPDIR>';
# System settings, don't change a thing
$branch = str_replace("\n", '', `git rev-parse --abbrev-ref HEAD`);
$release = date('YmdHis');
$releaseId = $branch . '/' . $release;
$new_release_dir = $app_dir .'/'. $branch . '/' . $release;
@endsetup
@servers(['develop' => '<YOURUSER@YOURHOST>']);
@task('debug')
echo " Branch: {{ $branch }}"
echo ' Repo: {{ $repository }}'
echo ' AppDir: {{ $app_dir }}'
echo ' Rel.Id: {{ $releaseId }}'
echo 'NewRel.: {{ $new_release_dir }}'
@endtask
@story('deploy')
clone_repository
run_composer
update_symlinks
laravel_cleanup
disk_usage
@endstory
@task('clone_repository')
echo 'Cloning repository ({{ $releaseId }})'
[ -d {{ $app_dir }} ] || mkdir {{ $app_dir }}
[ -d {{ $app_dir }}/{{ $branch }} ] || mkdir {{ $app_dir }}/{{ $branch }}
git clone --depth 1 -b {{ $branch }} {{ $repository }} {{ $new_release_dir }}
@endtask
@task('update_symlinks')
echo "Updating symlinks ({{ $releaseId }})"
echo '-- Linking .env file'
ln -nfs {{ $app_dir }}/.env-{{ $branch }} {{ $new_release_dir }}/.env
echo '-- Linking composer vendor folder'
rm -rf {{ $new_release_dir }}/vendor
ln -nfs {{ $app_dir }}/_vendor-{{ $branch }} {{ $new_release_dir }}/vendor
echo '-- Linking node_modules folder'
ln -nfs {{ $app_dir }}/_node_modules-{{ $branch }} {{ $new_release_dir }}/node_modules
echo "-- Linking storage directory"
rm -rf {{ $new_release_dir }}/storage
ln -nfs {{ $app_dir }}/_storage-{{ $branch }} {{ $new_release_dir }}/storage
echo '-- Linking current release'
ln -nfs {{ $new_release_dir }} {{ $app_dir }}/{{ $branch }}/current
@endtask
@task('laravel_prepare')
echo "Writing version from git tag ({{ $releaseId }})"
cd {{ $app_dir }}/{{ $branch }}/current
php artisan goodfeeds:version
@endtask
@task('laravel_cleanup')
echo "Resetting Laravel caches and views ({{ $releaseId }})"
cd {{ $app_dir }}/{{ $branch }}/current
echo "-- Clearing cache"
php artisan cache:clear;
echo "-- Clearing views"
php artisan view:clear;
echo "-- Caching routes"
php artisan route:cache;
echo "-- Clearing config"
php artisan config:clear;
@endtask
@task('disk_usage')
echo "Disk usage ({{ $releaseId }})";
du -h --max-depth=1 {{ $app_dir }}/{{ $branch }}
@endtask
@task('run_composer')
echo "Running composer ({{ $releaseId }})"
echo '-- Pre Setup';
cd {{ $new_release_dir }}
chmod a+w bootstrap/cache
echo '-- Starting composer';
composer install --prefer-dist --no-scripts -q -o
@endtask
@task('run_npm')
echo "Running NPM ({{ $releaseId }})"
echo '-- Starting NPM'
cd {{ $new_release_dir }}
npm install
@endtask
$bar = $this->output->createProgressBar(count());
$bar->advance();
$bar->finish();
// Mass update models via tinker
DB::table('userurls')->where('id', '<', 51)->update(array('is_private' => 1));
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment