1 | #!/bin/bash
|
2 | COLOR_RED='\033[0;31m'
|
3 | COLOR_BLUE='\033[0;34m'
|
4 | COLOR_MAGENTA='\033[0;35m'
|
5 | COLOR_RESET='\033[0m'
|
6 |
|
7 | PROJECT_NAME=$1
|
8 | REF=$2
|
9 | ROOT=~/running/$PROJECT_NAME
|
10 | DATE=`date +'%Y-%m-%d,%H-%M'`
|
11 | TARGET=versions/$DATE,$REF
|
12 | CURRENT=current
|
13 |
|
14 | SELF="${BASH_SOURCE[0]}"
|
15 | cd `dirname "$SELF"`
|
16 |
|
17 | NVM_DIR="$HOME/.nvm"
|
18 | [ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh"
|
19 |
|
20 | echo -e ${COLOR_BLUE}!- Installing project node modules${COLOR_RESET}
|
21 | npm prune --production
|
22 | npm install --production
|
23 |
|
24 | echo -e ${COLOR_BLUE}!- Clean copy of repositories to ${COLOR_MAGENTA}$ROOT/$TARGET${COLOR_RESET}
|
25 | mkdir -p $ROOT/$TARGET
|
26 |
|
27 |
|
28 | rsync --exclude=croquis.deployer -az . $ROOT/$TARGET
|
29 |
|
30 | echo -e ${COLOR_BLUE}!- Installing deployer node modules${COLOR_RESET}
|
31 | cd $ROOT
|
32 | cat <<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 | }
|
40 | EOF
|
41 | npm --loglevel=error install
|
42 |
|
43 | echo -e ${COLOR_BLUE}!- Check server${COLOR_RESET}
|
44 | export PROJECT_ROOT=$ROOT/$TARGET
|
45 | ./node_modules/@croquiscom/croquis.deployer/bin/check
|
46 | if [ $? -ne 0 ]; then
|
47 | echo -e ${COLOR_RED}'(((***** FAIL TO START *****)))'${COLOR_RESET}
|
48 | exit 1
|
49 | fi
|
50 |
|
51 | echo -e ${COLOR_BLUE}!- Make live link${COLOR_RESET}
|
52 | rm -f $CURRENT
|
53 | ln -s $TARGET $CURRENT
|
54 |
|
55 | echo -e ${COLOR_BLUE}!- Install logrotate${COLOR_RESET}
|
56 | cat <<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 | }
|
70 | EOF
|
71 |
|
72 | echo -e ${COLOR_BLUE}!- Run server${COLOR_RESET}
|
73 | export PROJECT_ROOT=$ROOT/$CURRENT
|
74 | ./node_modules/@croquiscom/croquis.deployer/bin/start
|
75 |
|
76 | echo -e ${COLOR_BLUE}!- Install Cron jobs${COLOR_RESET}
|
77 | node ./node_modules/@croquiscom/croquis.deployer/bin/install_cron_jobs
|
78 |
|
79 | echo -e ${COLOR_BLUE}!- Remove old versions${COLOR_RESET}
|
80 | CURRENT_VERSION=`readlink $CURRENT | awk -F / '{ print $2 }'`
|
81 | cd $ROOT/versions
|
82 | OLD_DATE=`date --date="14 day ago" +%Y-%m-%d`
|
83 | for 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
|
93 | done
|