UNPKG

2.49 kBapplication/x-shView Raw
1#!/bin/bash
2COLOR_RED='\033[0;31m'
3COLOR_BLUE='\033[0;34m'
4COLOR_MAGENTA='\033[0;35m'
5COLOR_RESET='\033[0m'
6
7PROJECT_NAME=$1
8REF=$2
9ROOT=~/running/$PROJECT_NAME
10DATE=`date +'%Y-%m-%d,%H-%M'`
11TARGET=versions/$DATE,$REF
12CURRENT=current
13
14SELF="${BASH_SOURCE[0]}"
15cd `dirname "$SELF"`
16
17NVM_DIR="$HOME/.nvm"
18[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh"
19
20echo -e ${COLOR_BLUE}!- Installing project node modules${COLOR_RESET}
21npm prune --production
22npm install --production
23
24echo -e ${COLOR_BLUE}!- Clean copy of repositories to ${COLOR_MAGENTA}$ROOT/$TARGET${COLOR_RESET}
25mkdir -p $ROOT/$TARGET
26# croquis.deployer는 deployer 모듈로 설치되므로 app 모듈에서는 제외한다.
27# (두개가 있으면 forever가 server 프로세스를 다른 스크립트로 인식할 가능성이 있다)
28rsync --exclude=croquis.deployer -az . $ROOT/$TARGET
29
30echo -e ${COLOR_BLUE}!- Installing deployer node modules${COLOR_RESET}
31cd $ROOT
32cat <<EOF > package.json
33{
34 "dependencies": {
35 "@croquiscom/croquis.deployer": "0.10.7",
36 "forever": "^0.15.3",
37 "js-yaml": "^3.10.0"
38 }
39}
40EOF
41npm --loglevel=error install
42
43echo -e ${COLOR_BLUE}!- Check server${COLOR_RESET}
44export PROJECT_ROOT=$ROOT/$TARGET
45./node_modules/@croquiscom/croquis.deployer/bin/check
46if [ $? -ne 0 ]; then
47 echo -e ${COLOR_RED}'(((***** FAIL TO START *****)))'${COLOR_RESET}
48 exit 1
49fi
50
51echo -e ${COLOR_BLUE}!- Make live link${COLOR_RESET}
52rm -f $CURRENT
53ln -s $TARGET $CURRENT
54
55echo -e ${COLOR_BLUE}!- Install logrotate${COLOR_RESET}
56cat <<EOF > $CURRENT/logrotate.conf
57$HOME/.croquis/$PROJECT_NAME.log {
58 daily
59 maxsize 1G
60 rotate 7
61 missingok
62 compress
63 delaycompress
64 notifempty
65 sharedscripts
66 postrotate
67 $HOME/.nvm/nvm-exec $ROOT/node_modules/.bin/croquis_logrotate
68 endscript
69}
70EOF
71
72echo -e ${COLOR_BLUE}!- Run server${COLOR_RESET}
73export PROJECT_ROOT=$ROOT/$CURRENT
74./node_modules/@croquiscom/croquis.deployer/bin/start
75
76echo -e ${COLOR_BLUE}!- Install Cron jobs${COLOR_RESET}
77node ./node_modules/@croquiscom/croquis.deployer/bin/install_cron_jobs
78
79echo -e ${COLOR_BLUE}!- Remove old versions${COLOR_RESET}
80CURRENT_VERSION=`readlink $CURRENT | awk -F / '{ print $2 }'`
81cd $ROOT/versions
82OLD_DATE=`date --date="14 day ago" +%Y-%m-%d`
83for FILE in *; do
84 FILE_DATE=${FILE:0:10}
85 if [[ "$FILE_DATE" < "$OLD_DATE" ]]; then
86 if [[ "$CURRENT_VERSION" = "$FILE" ]]; then
87 echo Skip current - $FILE
88 else
89 echo Removing - $FILE
90 rm -rf $FILE
91 fi
92 fi
93done