Skip to content

Instantly share code, notes, and snippets.

@jonathonsim
Last active February 7, 2019 03:21
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 jonathonsim/82fa5a156db846cc35c9c23287caabea to your computer and use it in GitHub Desktop.
Save jonathonsim/82fa5a156db846cc35c9c23287caabea to your computer and use it in GitHub Desktop.
Idealstack Deployment example
#!/bin/bash
#Copyright 2017-2019, Idealstack Limited
#
#Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
#documentation files (the "Software"), to deal in the Software without restriction, including without limitation
#the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software,
#and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
#
#The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
#
#THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
#WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS
#OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT
#OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
dev=devsite@100.200.210.220
staging=stagingsite@101.200.210.220
production=productionsite@101.200.210.220
if [[ -z $1 ]]; then
echo "Usage: $0 <environment> [git hash]
The git hash is optional but lets you rollback
Environments:
dev
production
staging
all
"
exit 1;
fi
if [[ $1 == "dev" ]]; then
servers=$dev
fi
if [[ $1 == "production" ]]; then
servers=$production
fi
if [[ $1 == "staging" ]]; then
servers=$staging
fi
if [[ $1 == "all" ]]; then
servers="$staging $production $dev"
fi
git_hash_command=""
if [[ -n $2 ]]; then
git_hash_command="&& git checkout $2"
fi
for ssh in $servers;
do
echo $ssh
# This makes composer install things in parallel:
#ssh -A -p 2223 $ssh "composer global require hirak/prestissimo"
# Pull the code
ssh -A -p 2223 $ssh "cd public_html && rm -f bootstrap/cache/config.php && git pull $git_hash_command "
# Post install commands - these are for laravel, you'll want to customise these to any post-install commands you need to run
ssh -A -p 2223 $ssh "composer install --optimize-autoloader && sleep 5 && php artisan migrate --force && php artisan config:cache && php artisan route:cache && sleep 5 && php artisan view:clear "
success=$?
#Restart PHP-FPM
ssh -A -p 2223 $ssh "idealstack restart-php"
if [[ $success -ne 0 ]]; then
echo "ERROR on $ssh - stopping further installs until you fix it"
exit
fi
done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment