forked from alainyog/JavaScript.com
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdeploy
More file actions
executable file
·44 lines (32 loc) · 1.46 KB
/
deploy
File metadata and controls
executable file
·44 lines (32 loc) · 1.46 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#!/usr/bin/env bash
# This is a script used to deploy the app. After the git repository is updated, this script is
# executed in order to complete the deployment. Feel free to customize with wild abandon. This
# script is executed as root. Thus, it is critically important to sudo untrusted commands.
# Anything from the app should be considered untrusted.
# If any simple command fails, halt the script.
set -e
# Environment variables available to you:
# BASE_DIR - base location for the application (usually /srv/app_name)
# GIT_DIR - location of the app's main git dir
# RAILS_ENV - the environment (production, staging, etc.)
# APP_USER - the user (and group) for the application
TIME=`date +%s`
RELEASE_DIR=$BASE_DIR/releases/$TIME
CURRENT_DIR=$BASE_DIR/current
# We start by copying this directory into a releases directory.
cp -R $GIT_DIR $RELEASE_DIR
# Symlink node_modules
ln -s /srv/javascriptcom/shared/node_modules $RELEASE_DIR/node_modules
# Make the tmp dir
mkdir -p $RELEASE_DIR/tmp
# Make the app own it
chown -R $APP_USER:$APP_USER $RELEASE_DIR
# Run whatever rake tasks this app requires. Generally tasks should follow the the following
# pattern: 'sudo -i -u $APP_USER RAILS_ENV=$RAILS_ENV the_command'. Commands should only be
# executed outside sudo for very, very good reason.
su $APP_USER -l -c "cd $RELEASE_DIR ; npm install"
# Symlink the app
rm -f $CURRENT_DIR
ln -sf $RELEASE_DIR $CURRENT_DIR
# Restart the app
touch $RELEASE_DIR/tmp/restart.txt