127 lines
2.6 KiB
Bash
Executable File
127 lines
2.6 KiB
Bash
Executable File
#!/bin/bash
|
|
set -e
|
|
|
|
function do_pull(){
|
|
msg "Reset and pull $branch"
|
|
git reset --hard
|
|
git checkout $branch
|
|
git pull
|
|
}
|
|
|
|
function do_bundle(){
|
|
msg "Bundling gems, npm, and bower"
|
|
bundle install --deployment --without development test
|
|
npm install --production
|
|
./node_modules/bower/bin/bower install --production
|
|
}
|
|
|
|
function do_assets(){
|
|
msg "Clean Assets"
|
|
RAILS_ENV=production bundle exec rake assets:clean
|
|
|
|
msg "Precompiling Assets"
|
|
RAILS_ENV=production bundle exec rake assets:precompile
|
|
}
|
|
|
|
function do_migrate(){
|
|
if [ $app_env == "sandbox" ]; then
|
|
msg "SANDBOX: rebuilding db with fixtures"
|
|
RAILS_ENV=production \
|
|
DISABLE_DATABASE_ENVIRONMENT_CHECK=1 \
|
|
bundle exec rake db:drop db:setup db:migrate db:fixtures:load
|
|
else
|
|
msg "DB Migrate PRODUCTION"
|
|
RAILS_ENV=production bundle exec rake db:migrate
|
|
fi
|
|
}
|
|
|
|
function quick(){
|
|
do_pull
|
|
app_restart
|
|
}
|
|
|
|
function full(){
|
|
do_pull
|
|
do_bundle
|
|
do_migrate
|
|
do_assets
|
|
app_restart
|
|
}
|
|
|
|
function assets(){
|
|
do_pull
|
|
do_assets
|
|
app_restart
|
|
}
|
|
|
|
function migration(){
|
|
do_pull
|
|
do_migrate
|
|
app_restart
|
|
}
|
|
|
|
function app_restart(){
|
|
touch tmp/restart.txt
|
|
msg "App Restarted"
|
|
}
|
|
|
|
function msg(){
|
|
if [ ${#@} != 0 ]; then
|
|
tput setaf 2
|
|
echo $*
|
|
tput sgr0
|
|
fi
|
|
}
|
|
|
|
function helps {
|
|
tput setaf 3
|
|
echo "SkillApp Deploy-er
|
|
A simple deploy helper meant to be ran from a server ssh session.
|
|
-q, --quick : pull, restart
|
|
-f, --full : pull, bundle, migrate (rebuild sandbox db), asset clean/precompile, restart
|
|
-a, --with-assets : pull, precompile, restart
|
|
-m, --with-migration : pull, migrate (rebuild sandbox db), restart
|
|
--restart : just restart the app
|
|
|
|
"
|
|
tput sgr0
|
|
}
|
|
|
|
###########################################
|
|
###########################################
|
|
###########################################
|
|
|
|
if [ ! -f ".deploy.conf" ]; then
|
|
msg "Missing .deploy.conf -- check out .deploy.conf.sample"
|
|
else
|
|
IFS="="
|
|
while read -r name value; do
|
|
case $name in
|
|
'branch') export branch="${value//\"/}" ;;
|
|
'app_env') export app_env="${value//\"/}" ;;
|
|
esac
|
|
done < .deploy.conf
|
|
|
|
if [ ! -d ".git" ]; then
|
|
msg "No git repo found. You must call this script from the application root."
|
|
helps
|
|
else
|
|
if [ ${#@} != 1 ]; then
|
|
helps
|
|
else
|
|
case $1 in
|
|
'-a' ) assets ;;
|
|
'--with-assets' ) assets ;;
|
|
'-q' ) quick ;;
|
|
'--quick' ) quick ;;
|
|
'-f') full;;
|
|
'--full') full;;
|
|
'-m') migration;;
|
|
'--with-migration') migration;;
|
|
'--restart') app_restart;;
|
|
*) helps ;;
|
|
esac
|
|
fi
|
|
fi
|
|
fi
|