Skip to content

QA environments

Deployment hooks

Back up current release

bash
set -e

cd {{ project }}/current

php artisan backup:run --isolated

Clone New Release

Install Composer Dependencies

bash
set -e

cd {{ release }}

php artisan storage:link

Prepare Sentry release

bash
set -e

cd {{ release }}

# Write git hash to file for Sentry
# BEFORE we cache our configuration
echo "{{ sha }}" > {{ release }}/.commit_hash

Install front-end packages

bash
set -e

cd {{ release }}

# Verify the used versions
node --version
npm --version

npm ci

Build front-end assets

bash
set -e

cd {{ release }}

# Verify the used versions
node --version
npm --version

npm run production

Pause Horizon

bash
set -e

cd {{ release }}

php artisan horizon:pause

Migrate database structure

bash
set -e

cd {{ release }}

php artisan migrate --force

Clear application cache

bash
set -e

cd {{ release }}

php artisan config:clear
php artisan route:clear
php artisan event:clear
php artisan view:clear
php artisan icons:clear
php artisan modules:clear
php artisan purifier:clear

Activate new release

Cache application

set -e

cd {{ release }}

php artisan config:cache
php artisan route:cache
php artisan event:cache
php artisan view:cache
php artisan icons:cache
php artisan modules:cache
php artisan data:cache-structures

Restart Horizon

set -e

cd {{ release }}

php artisan horizon:purge
php artisan horizon:terminate

Process pending operations

set -e

cd {{ release }}

php artisan operations:process --force --isolated

Purge Pennant cache

set -e

cd {{ release }}

php artisan pennant:purge

Sync scheduled jobs

bash
set -e

cd {{ release }}

php artisan schedule-monitor:sync

Prepare search index

set -e

cd {{ release }}

php artisan search:index

Tag Sentry release

set -e

cd {{ release }}

curl https://sentry.io/api/hooks/release/builtin/XXXXXX/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/ \
--silent --show-error \
-X POST \
-H 'Content-Type: application/json' \
-d '{"version": "{{ sha }}"}'

Purge old releases