publish 3.24 KB
#!/bin/bash

# Upload the sources to our production server, with minimal effort.

# If you're behind the gateway, first open a SSH tunnel like so :
# ssh -L 22222:storms.irap.omp.eu:22 mbouchemit@gw.irap.omp.eu

# Add to your ~/.ssh/config :
#Host storms.local
#  HostName localhost
#  Port 22222
#  User mbouchemit
#  IdentityFile ~/.ssh/NoPassword/id_rsa

# and swap configuration below.

# Note that the storms server seems to reject key-based authentication,
# whatever's written in its /etc/sshd configuration. Weird.

# CONFIGURATION ###############################################################

REMOTE_DIR=/var/www/html/HELIOPROPA

#USER=mbouchemit
#SERVER=storms.irap.omp.eu

# Through the gateway
USER=agoutenoir
SERVER=storms.local


# COLORS ######################################################################

Off='\033[0m'             # Text Reset

# Regular Colors
Black='\033[0;30m'        # Black
Red='\033[0;31m'          # Red
Green='\033[0;32m'        # Green
Yellow='\033[0;33m'       # Yellow
Blue='\033[0;34m'         # Blue
Purple='\033[0;35m'       # Purple
Cyan='\033[0;36m'         # Cyan
White='\033[0;37m'        # White

# Bold
BBlack='\033[1;30m'       # Black
BRed='\033[1;31m'         # Red
BGreen='\033[1;32m'       # Green
BYellow='\033[1;33m'      # Yellow
BBlue='\033[1;34m'        # Blue
BPurple='\033[1;35m'      # Purple
BCyan='\033[1;36m'        # Cyan
BWhite='\033[1;37m'       # White

# Underline
UBlack='\033[4;30m'       # Black
URed='\033[4;31m'         # Red
UGreen='\033[4;32m'       # Green
UYellow='\033[4;33m'      # Yellow
UBlue='\033[4;34m'        # Blue
UPurple='\033[4;35m'      # Purple
UCyan='\033[4;36m'        # Cyan
UWhite='\033[4;37m'       # White

# Background
On_Black='\033[40m'       # Black
On_Red='\033[41m'         # Red
On_Green='\033[42m'       # Green
On_Yellow='\033[43m'      # Yellow
On_Blue='\033[44m'        # Blue
On_Purple='\033[45m'      # Purple
On_Cyan='\033[46m'        # Cyan
On_White='\033[47m'       # White


# LOCAL CLEANUP ###############################################################

# Clear the local cache, it's good design (we're not uploading it anyways)
echo -e "${Green}Cleaning local files...${Off}"
rm -R cache/*

# Fill the VERSION number with the new version
VERSION=`git describe --tags`
echo -e "${Green}Setting new version : ${Yellow}${VERSION}${Off}"
echo $VERSION > VERSION


# UPLOAD ######################################################################

# Delete is dangerous, as we're using a file-based database
# so we must exclude some directories and files.
echo -e "${Green}Uploading files...${Off}"
rsync -r --delete \
    --exclude .git \
    --exclude *.gitkeep \
    --exclude .idea \
    --exclude bin \
    --exclude cache \
    --exclude venv* \
    --exclude res \
    --exclude spec \
    --exclude web/run.log \
    --exclude VISITS \
    . ${USER}@${SERVER}:${REMOTE_DIR}


# REMOTE CLEANUP ##############################################################

# Run some scripts on the server, now
# You're going to need in your sudoers file something like :
# mbouchemit ALL=(apache) NOPASSWD: ALL
echo -e "${Green}Cleaning remote files...${Off}"
ssh -t -t ${USER}@${SERVER} <<-ENDSSH
    cd ${REMOTE_DIR}
    sudo -u apache rm -Rf cache/*
    exit
ENDSSH

echo -e "${BGreen}Done !${Off}"