From 874539289d31551464b975ae73e010649e7f341a Mon Sep 17 00:00:00 2001 From: christianruhstaller Date: Fri, 16 Dec 2016 16:46:19 +0100 Subject: [PATCH] zip data stuff --- .tasks/deployment/Makefile | 14 +++++++ .tasks/deployment/pull-data.sh | 2 - .tasks/deployment/pull-datazip.sh | 61 ++++++++++++++++++++++++++++++ .tasks/deployment/push-datazip.sh | 62 +++++++++++++++++++++++++++++++ .tasks/deployment/utils/util.sh | 16 ++++++-- .tasks/help | 2 + 6 files changed, 151 insertions(+), 6 deletions(-) create mode 100755 .tasks/deployment/pull-datazip.sh create mode 100755 .tasks/deployment/push-datazip.sh diff --git a/.tasks/deployment/Makefile b/.tasks/deployment/Makefile index 102a602..54c84fe 100755 --- a/.tasks/deployment/Makefile +++ b/.tasks/deployment/Makefile @@ -72,3 +72,17 @@ pull-data-%: WEBROOT_PATH=$(WEBROOT_PATH) \ CONFIG_FOLDER=$(CONFIG_FOLDER) \ $(DEPLOY_SCRIPTS_FOLDER)/pull-data.sh + +pull-datazip-%: + @ DEPLOYENV=$* \ + DEPLOY_SCRIPTS_FOLDER=$(DEPLOY_SCRIPTS_FOLDER) \ + WEBROOT_PATH=$(WEBROOT_PATH) \ + CONFIG_FOLDER=$(CONFIG_FOLDER) \ + $(DEPLOY_SCRIPTS_FOLDER)/pull-datazip.sh + +push-datazip-%: + @ DEPLOYENV=$* \ + DEPLOY_SCRIPTS_FOLDER=$(DEPLOY_SCRIPTS_FOLDER) \ + WEBROOT_PATH=$(WEBROOT_PATH) \ + CONFIG_FOLDER=$(CONFIG_FOLDER) \ + $(DEPLOY_SCRIPTS_FOLDER)/push-datazip.sh \ No newline at end of file diff --git a/.tasks/deployment/pull-data.sh b/.tasks/deployment/pull-data.sh index 8954221..bdd5b5c 100755 --- a/.tasks/deployment/pull-data.sh +++ b/.tasks/deployment/pull-data.sh @@ -18,8 +18,6 @@ if [ $? -ne 0 ]; then exit 1 fi -DB_DATA_PULL_FILE="db_data_pull_file.sql" - # backup files printf "\033[0;32m Backup files in $DEPLOY_DATA_FOLDER \033[0m \n" if [ -d "$DEPLOY_DATA_FOLDER" ]; then diff --git a/.tasks/deployment/pull-datazip.sh b/.tasks/deployment/pull-datazip.sh new file mode 100755 index 0000000..37adf99 --- /dev/null +++ b/.tasks/deployment/pull-datazip.sh @@ -0,0 +1,61 @@ +#!/bin/bash + +source "$DEPLOY_SCRIPTS_FOLDER/utils/util.sh" +source "$CONFIG_FOLDER/deployment" + +#load config +DEPLOYMENT_CONFIG_FILE="$CONFIG_FOLDER/deployment.$DEPLOYENV" +if [ ! -e $DEPLOYMENT_CONFIG_FILE ]; then + printf "\033[0;31m Unknown Environment: $DEPLOYENV \033[0m \n" + exit 1 +fi + +source $DEPLOYMENT_CONFIG_FILE + +ask "Pull files from $DEPLOY_HOST ($DEPLOY_APPROOT/current/$DEPLOY_DATA_FOLDER)\nto localhost ($DEPLOY_DATA_FOLDER)?" + +if [ $? -ne 0 ]; then + exit 1 +fi + +ask "Backup local files?" 0 + +if [ $? -eq 0 ]; then + # backup files + printf "\033[0;32m Backup files in $DEPLOY_DATA_FOLDER \033[0m \n" + if [ -d "$DEPLOY_DATA_FOLDER" ]; then + tar -cvzf "$DEPLOY_DATA_BACKUP_FOLDER/backup_files.tar.gz" -C "$DEPLOY_DATA_FOLDER/../" "files" + rm -rf $DEPLOY_DATA_FOLDER/* + fi +fi + +ZIP_FILENAME="deployment_files.tar.gz" + + zip files on server + printf "\033[0;32m ZIP Files on server \033[0m \n" + ssh $DEPLOY_USER@$DEPLOY_HOST -p $DEPLOY_PORT "bash -s" << EOF + tar -czf "$DEPLOY_APPROOT/$ZIP_FILENAME" -C "$DEPLOY_APPROOT/current/$DEPLOY_DATA_FOLDER/../" "files" +EOF + +if [ $? -ne 0 ]; then + exit 1 +fi + +printf "\033[0;32m Clean local data folder \033[0m \n" +rm -rf $DEPLOY_DATA_FOLDER/* + +# get files +printf "\033[0;32m Download files from $DEPLOY_APPROOT/current/$DEPLOY_DATA_FOLDER \033[0m \n" +rsync -azP -e "ssh -p $DEPLOY_PORT" $DEPLOY_USER@$DEPLOY_HOST:"$DEPLOY_APPROOT/$ZIP_FILENAME" $ZIP_FILENAME + +if [ $? -ne 0 ]; then + exit 1 +fi + +tar -xf $ZIP_FILENAME -C $DEPLOY_DATA_FOLDER/.. + +# cleanup +rm -rf $ZIP_FILENAME +ssh $DEPLOY_USER@$DEPLOY_HOST -p $DEPLOY_PORT "bash -s" << EOF + rm -rf "$DEPLOY_APPROOT/$ZIP_FILENAME" +EOF \ No newline at end of file diff --git a/.tasks/deployment/push-datazip.sh b/.tasks/deployment/push-datazip.sh new file mode 100755 index 0000000..ee8d072 --- /dev/null +++ b/.tasks/deployment/push-datazip.sh @@ -0,0 +1,62 @@ +#!/bin/bash + +source "$DEPLOY_SCRIPTS_FOLDER/utils/util.sh" +source "$CONFIG_FOLDER/deployment" + +#load config +DEPLOYMENT_CONFIG_FILE="$CONFIG_FOLDER/deployment.$DEPLOYENV" +if [ ! -e $DEPLOYMENT_CONFIG_FILE ]; then + printf "\033[0;31m Unknown Environment: $DEPLOYENV \033[0m \n" + exit 1 +fi + +source $DEPLOYMENT_CONFIG_FILE + +ask "Push files from localhost (DEPLOY_DATA_FOLDER)\nto $DEPLOY_HOST ($DEPLOY_APPROOT/current/$DEPLOY_DATA_FOLDER)?" + +if [ $? -ne 0 ]; then + exit 1 +fi + +ask "Backup server files?" 0 + +if [ $? -eq 0 ]; then + # backup files + printf "\033[0;32m Backup files in $DEPLOY_DATA_FOLDER \033[0m \n" + + ssh $DEPLOY_USER@$DEPLOY_HOST -p $DEPLOY_PORT "bash -s" << EOF + cd $DEPLOY_APPROOT + + if [ -d "current/$DEPLOY_DATA_FOLDER" ]; then + tar -cvzf "current/$DEPLOY_DATA_BACKUP_FOLDER/backup_files.tar.gz" -C "current/$DEPLOY_DATA_FOLDER/../" "files" + rm -rfv current/$DEPLOY_DATA_FOLDER/* + else + echo "Data folder does not exist. Continue." + fi +EOF +fi + +ZIP_FILENAME="deployment_files.tar" + +printf "\033[0;32m ZIP local files \033[0m \n" +tar -cf $ZIP_FILENAME -C "$DEPLOY_DATA_FOLDER/../" "files" + +# upload files +printf "\033[0;32m Upload files to $DEPLOY_APPROOT/current/$DEPLOY_DATA_FOLDER \033[0m \n" +scp -P $DEPLOY_PORT -r $ZIP_FILENAME $DEPLOY_USER@$DEPLOY_HOST:$DEPLOY_APPROOT + +if [ $? -ne 0 ]; then + exit 1 +fi + +printf "\033[0;32m Unzip data \033[0m \n" +ssh $DEPLOY_USER@$DEPLOY_HOST -p $DEPLOY_PORT "bash -s" << EOF + cd $DEPLOY_APPROOT + tar -xf $ZIP_FILENAME -C "current/$DEPLOY_DATA_FOLDER/.." +EOF + +#cleanup +rm -rf $ZIP_FILENAME +ssh $DEPLOY_USER@$DEPLOY_HOST -p $DEPLOY_PORT "bash -s" << EOF + rm -rf "$DEPLOY_APPROOT/$ZIP_FILENAME" +EOF \ No newline at end of file diff --git a/.tasks/deployment/utils/util.sh b/.tasks/deployment/utils/util.sh index d8cc71a..012691b 100644 --- a/.tasks/deployment/utils/util.sh +++ b/.tasks/deployment/utils/util.sh @@ -1,12 +1,20 @@ #!/bin/bash ask() { + DEFAULT=1 + DEFAULT_TEMPLATE="(Y/N=Default)" + + case $2 in + [0] ) DEFAULT=0; DEFAULT_TEMPLATE="(Y=Default/N)";; + * ) DEFAULT=1;; + esac + printf "\033[0;32m$1 \033[0m \n" - read -p "Answer (Y/N=Default): " yn + read -p "Answer: $DEFAULT_TEMPLATE: " yn case $yn in - [Yy]* ) return 0; break;; - [Nn]* ) return 1; break;; - * ) return 1; break;; + [Yy]* ) return 0;; + [Nn]* ) return 1;; + * ) return $DEFAULT;; esac } \ No newline at end of file diff --git a/.tasks/help b/.tasks/help index 2529484..fba5fc2 100755 --- a/.tasks/help +++ b/.tasks/help @@ -28,8 +28,10 @@ Deploy the project: $START2 make release $END make a new release $START2 make push-data-* $END push the data (data files) (* = environment) + $START2 make push-datazip-* $END push the zipped data (data files) (* = environment) $START2 make push-data-db-* $END push the db data (* = environment) $START2 make pull-data-* $END pull the data (data files) (* = environment) + $START2 make pull-datazip-* $END pull the zipped data (data files) (* = environment) $START2 make pull-data-db-* $END pull the db data (* = environment) $START2 make clean-* $END removes old revisions except the current and last one (* = environment)