Skip to content

Instantly share code, notes, and snippets.

@SpiZeak
Created May 7, 2020 07:11
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save SpiZeak/f9384560397131e6ff38eaa598eda7ee to your computer and use it in GitHub Desktop.
Save SpiZeak/f9384560397131e6ff38eaa598eda7ee to your computer and use it in GitHub Desktop.
A bash deploy script for safe Wordpress deployments
#
# Author: Max Trewhitt - Osolo
# Description: A safe deployment routine script
#
ROOT_FOLDER=example.com
THEME=example_theme
# Stop script on error signal
set -e
# Go to web root directory
cd /home/forge
# Remove old deployment folders
if [ -d "${ROOT_FOLDER}_deploy" ]; then
rm -R "${ROOT_FOLDER}_deploy"
fi
# Create separate deployment folder
cp -R $ROOT_FOLDER "${ROOT_FOLDER}_deploy"
# Go to deployment folder
cd "${ROOT_FOLDER}_deploy"
#
# Initiate build sequence
#
# Reset workspace and pull latest commit
git fetch --all
git reset --hard origin/develop
git clean -fd
# Build vendor assets
composer install --no-interaction --prefer-dist --optimize-autoloader
# Go to theme folder
cd /home/forge/${ROOT_FOLDER}_deploy/web/app/themes/$THEME
# Build vendor assets
composer install --no-interaction --prefer-dist --optimize-autoloader
npm install
npm run build:production
# Go to web root directory
cd /home/forge
# Remove backup
if [ -d "${ROOT_FOLDER}_backup" ]; then
rm -R "${ROOT_FOLDER}_backup"
fi
# Switch (downtime in microseconds)
mv $ROOT_FOLDER "${ROOT_FOLDER}_backup"
mv "${ROOT_FOLDER}_deploy" $ROOT_FOLDER
# Restart PHP to clear cache
( flock -w 10 9 || exit 1
echo 'Restarting FPM...'; sudo -S service php7.4-fpm reload ) 9>/tmp/fpmlock
if [ -f artisan ]; then
php artisan migrate --force
fi
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment