Created
April 19, 2019 10:32
-
-
Save webislife/f47432bfb8dd3a2197143a9a203fcd58 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
#params $1 - user $2 - host - $3 - nginx path $4-app\path $5-SSH_KEY $6 - ENV | |
#Присваиваем аргументы переменным | |
CI_USER=$1 #пользователь от имени которого логинимся | |
STAGE_HOST=$2 #host куда коннектимся | |
NGINX_PATH=$3 #путь к nginx конфигу | |
APP_PATH=$4 #путь к приложению | |
ENV=$6 #имя окружения | |
SSH_KEY=$5 #SSH PRIVATE KEY | |
#Шаманство с ssh агентом, создаем known_hosts, запускаем агента, добавляем ключик | |
mkdir -p ~/.ssh | |
touch ~/.ssh/known_hosts | |
chmod 644 ~/.ssh/known_hosts | |
chmod 700 ~/.ssh | |
echo $(ssh-keyscan $STAGE_HOST) > ~/.ssh/known_hosts | |
eval `ssh-agent -s` | |
echo "$SSH_KEY" | tr -d '\r' | ssh-add - > /dev/null | |
#Активный цвет, этот тот цвет, который сейчас показывает NGINX | |
STAGE_COLOR="GREEN" | |
#Значение активного цвета хранится в самом nginx конфиге | |
ACTIVE_COLOR=$(ssh -t $CI_USER@$STAGE_HOST "sed -n '1p' $NGINX_PATH | sed 's/#//g' | tr -d '\n'") | |
echo "Active color $ACTIVE_COLOR" | |
if [ "$STAGE_COLOR" == "$ACTIVE_COLOR" ]; then | |
STAGE_COLOR=BLUE | |
ACTIVE_SSR=NODE_SSR_GREEN | |
ACTIVE_ROOT=app-GREEN | |
else | |
STAGE_COLOR=GREEN | |
ACTIVE_SSR=NODE_SSR_BLUE | |
ACTIVE_ROOT=app-BLUE | |
fi | |
echo "Stage color: $STAGE_COLOR" | |
echo "Обновляем исходники www/app-$STAGE_COLOR" | |
##Закачиваем новые файлы, изменения удаляем | |
rsync --delete-before --recursive --verbose --exclude node_modules --exclude .git --exclude logs ./ $CI_USER@$STAGE_HOST:$APP_PATH/app-$STAGE_COLOR | |
## Тушим stage color | |
echo "Тушим SSR_$STAGE_COLOR и GATEWAY_$STAGE_COLOR" | |
##С помощью pm2 удаляем инстанс ноды нашего stage цвета | |
ssh -t $CI_USER@$STAGE_HOST "pm2 del GATE_$STAGE_COLOR" | |
ssh -t $CI_USER@$STAGE_HOST "pm2 del SSR_$STAGE_COLOR" | |
echo "Обновляем yarn $STAGE_COLOR" | |
#Обновляем зависомосмти yarn | |
ssh -t $CI_USER@$STAGE_HOST "cd $APP_PATH/app-$STAGE_COLOR && yarn install" | |
##Поднимаем stage color | |
#ssr | |
echo "Запускаем SSR_$STAGE_COLOR" | |
ssh -t $CI_USER@$STAGE_HOST "cd $APP_PATH/app-$STAGE_COLOR && APP_ENV=$ENV pm2 start config/pm2.config.js --env $ENV --only SSR_$STAGE_COLOR" | |
##Меняем цвет в NGINX конфиге | |
#Меняем gateway | |
#Меняем ssr | |
echo "Меняем ssr в nginx NODE_SSR_$STAGE_COLOR" | |
ssh -t $CI_USER@$STAGE_HOST "sed -i \"s/ACTIVE_SSR[[:space:]]$ACTIVE_SSR/ACTIVE_SSR\\ NODE_SSR_$STAGE_COLOR/\" $NGINX_PATH" | |
#Меняем root | |
echo "Меняем root path в nginx на app-$STAGE_COLOR" | |
ssh -t $CI_USER@$STAGE_HOST "sed -i \"s/$ACTIVE_ROOT/app-$STAGE_COLOR/\" $NGINX_PATH" | |
#Меняем верхний комментарий #GREEN -> #BLUE | |
echo "Меняем #comment в nginx" | |
ssh -t $CI_USER@$STAGE_HOST "sed -i "1c\\\#$STAGE_COLOR" $NGINX_PATH" | |
#Рестартим NGINX | |
ssh -t $CI_USER@$STAGE_HOST "sudo /usr/sbin/service nginx reload" | |
echo "Deploy завершен за $SECONDS с." | |
exit 0 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
ви тупие. у вас нет никаких файлов по скретчу!!!!!!!!!!!!!!