|
1 | | -#!/bin/bash |
2 | | -if [ ${TRAVIS_PULL_REQUEST} != "false" ]; then echo "Not deploying on a pull request !!!" && exit 0; fi |
3 | | -PACKAGE_VERSION=`jq '.version' version.json | tr -d '"'` |
4 | | -export IMAGE_NAME=`echo "froala-${BUILD_REPO_NAME}_${TRAVIS_BRANCH}:${PACKAGE_VERSION}" | tr '[:upper:]' '[:lower:]'` |
5 | | -export BASE_DOMAIN="froala-infra.com" |
6 | | -export SDK_ENVIRONMENT="" |
7 | | -export DEPLOYMENT_SERVER="" |
| 1 | +#!/usr/bin/env bash |
| 2 | + |
| 3 | +# Steps |
| 4 | + # Identify the build agent. Check whether build agent is same as deployment server |
| 5 | + # Login to build server and build, run, check the new changes. |
| 6 | + # --force-recreate for docker-compose |
| 7 | + # --no-cache for docker build |
| 8 | + # -f for npm install |
| 9 | + # -v --rmi all for docker compose down |
| 10 | + |
| 11 | +if [ "${TRAVIS_PULL_REQUEST}" != "false" ]; then echo "Not deploying on a pull request !!!" && exit 0; fi |
| 12 | + |
| 13 | +# Define the global variables |
| 14 | +BRANCH_NAME=$(echo "${TRAVIS_BRANCH}" | tr '[:upper:]' '[:lower:]') |
| 15 | +PACKAGE_VERSION="$(jq '.version' version.json | tr -d '"')" |
| 16 | +IMAGE_NAME="$(echo "froala-${BUILD_REPO_NAME}_${TRAVIS_BRANCH}:${PACKAGE_VERSION}" | tr '[:upper:]' '[:lower:]')" |
| 17 | +BASE_DOMAIN="froala-infra.com" |
| 18 | +AO_IDENTIFIER="${TRAVIS_BRANCH}" |
| 19 | +BRANCH_LENGHT=$(echo "${TRAVIS_BRANCH}" |awk '{print length}') |
| 20 | +LW_REPO_NAME=$(echo "${BUILD_REPO_NAME}" | tr '[:upper:]' '[:lower:]' | sed -e 's/-//g' -e 's/\.//g' -e 's/_//g') |
| 21 | +CT_INDEX=0 |
| 22 | +MAX_DEPLOYMENTS_NR=0 |
| 23 | +SDK_ENVIRONMENT="" |
| 24 | +DEPLOYMENT_SERVER="" |
8 | 25 | SERVICE_NAME="" |
9 | 26 | CONTAINER_NAME="" |
10 | | -CT_INDEX=0 |
11 | | -AO_IDENTIFIER=`echo ${TRAVIS_BRANCH}` |
12 | | -echo "${AO_IDENTIFIER}" |
13 | 27 | OLDEST_CONTAINER="" |
| 28 | + |
| 29 | +# Copy the ssh key |
14 | 30 | echo "${SSH_KEY}" | base64 --decode > /tmp/sshkey.pem |
15 | 31 | chmod 400 /tmp/sshkey.pem |
16 | | -export MAX_DEPLOYMENTS_NR=0 |
17 | | -function get_max_deployments_per_env(){ |
18 | | -local ENVIRONMENT=$1 |
19 | | -echo "getting max deployments for environment ${ENVIRONMENT}" |
20 | | -MAX_DEPLOYMENTS_NR=`jq --arg sdkenvironment ${ENVIRONMENT} '.[$sdkenvironment]' version.json | tr -d '"'` |
21 | | -echo "detected max deployments: ${MAX_DEPLOYMENTS_NR}" |
22 | | -} |
23 | | -function generate_container_name(){ |
24 | | -local LW_REPO_NAME=$1 |
25 | | -local LW_SHORT_TRAVIS_BRANCH=$2 |
26 | | -local SDK_ENVIRONMENT=$3 |
27 | | -local DEPLOYMENT_SERVER=$4 |
28 | | -echo "searching for ${LW_REPO_NAME} depl..." |
29 | | -sleep 1 |
30 | | -RUNNING_DEPL=`ssh -o "StrictHostKeyChecking no" -i /tmp/sshkey.pem ${SSH_USER}@${DEPLOYMENT_SERVER} " sudo docker ps | grep -i ${LW_REPO_NAME}"` |
31 | | -echo "running depl var: ${RUNNING_DEPL}" |
32 | | -echo "looking for ${LW_REPO_NAME} deployments" |
33 | | -echo "getting indexes for oldest and latest deployed container" |
34 | | -DEPL='ssh -o "StrictHostKeyChecking no" -i /tmp/sshkey.pem ' |
35 | | -DEPL="${DEPL} ${SSH_USER}@${DEPLOYMENT_SERVER} " |
36 | | -REL=' " sudo docker ps | grep -i ' |
37 | | -DEPL="${DEPL} ${REL} " |
38 | | -DEPL="${DEPL} ${LW_REPO_NAME}-${AO_IDENTIFIER} " |
39 | | -REL='"' |
40 | | -DEPL="${DEPL} ${REL} " |
41 | | -echo "show docker containers ssh cmd: $DEPL" |
42 | | -echo ${DEPL} | bash > file.txt |
43 | | -echo "running conatiners: " |
44 | | -cat file.txt |
45 | | -CT_LOWER_INDEX=`cat file.txt | awk -F'-' '{print $NF }' | sort -nk1 | head -1` |
46 | | -CT_HIGHER_INDEX=`cat file.txt | awk -F'-' '{print $NF }' | sort -nk1 | tail -1` |
47 | | -echo "lowest index : ${CT_LOWER_INDEX} ; and highest index : ${CT_HIGHER_INDEX}" |
48 | | -if [ -z "${RUNNING_DEPL}" ]; then |
49 | | -echo "first deployment" |
50 | | -CT_INDEX=1 |
51 | | -CONTAINER_NAME="${LW_REPO_NAME}-${AO_IDENTIFIER}-${CT_INDEX}" |
52 | | -SERVICE_NAME="${LW_REPO_NAME}-${LW_SHORT_TRAVIS_BRANCH}" |
53 | | -else |
54 | | -echo "multiple deployments" |
55 | | -CT_INDEX=${CT_HIGHER_INDEX} && CT_INDEX=$((CT_INDEX+1)) |
56 | | -OLDEST_CONTAINER="${LW_REPO_NAME}-${AO_IDENTIFIER}-${CT_LOWER_INDEX}" |
57 | | -CONTAINER_NAME="${LW_REPO_NAME}-${AO_IDENTIFIER}-${CT_INDEX}" |
58 | | -SERVICE_NAME="${LW_REPO_NAME}-${LW_SHORT_TRAVIS_BRANCH}-${CT_INDEX}" |
59 | | -echo "new index: ${CT_INDEX} & oldest horse out there: ${OLDEST_CONTAINER}" |
60 | | -fi |
61 | | -} |
62 | | -echo " Container port: ${CONTAINER_SERVICE_PORTNO}" |
63 | | -export BRANCH_NAME=`echo "${TRAVIS_BRANCH}" | tr '[:upper:]' '[:lower:]'` |
| 32 | + |
| 33 | +# Select the deployment server based on the branch. |
64 | 34 | case "${BRANCH_NAME}" in |
65 | | -dev*) SDK_ENVIRONMENT="dev" && DEPLOYMENT_SERVER=${FROALA_SRV_DEV} ;; |
66 | | -ao-dev*) SDK_ENVIRONMENT="dev" && DEPLOYMENT_SERVER=${FROALA_SRV_DEV} ;; |
67 | | -ao*) SDK_ENVIRONMENT="dev" && DEPLOYMENT_SERVER=${FROALA_SRV_DEV} ;; |
68 | | -qa*) SDK_ENVIRONMENT="qa" && DEPLOYMENT_SERVER=${FROALA_SRV_QA} ;; |
69 | | -qe*) SDK_ENVIRONMENT="qe" && DEPLOYMENT_SERVER=${FROALA_SRV_QE} ;; |
70 | | -rc*) SDK_ENVIRONMENT="stg" && DEPLOYMENT_SERVER=${FROALA_SRV_STAGING} ;; |
71 | | -release-master*) SDK_ENVIRONMENT="stg" && DEPLOYMENT_SERVER=${FROALA_SRV_STAGING} ;; |
72 | | -ft*) echo "Building only on feature branch ${TRAVIS_BRANCH}... will not deploy..." && exit 0;; |
73 | | -bf*) echo "Building only on bugfix branch ${TRAVIS_BRANCH}... will not deploy..." && exit 0;; |
74 | | -test*) echo "Building only on bugfix branch ${TRAVIS_BRANCH}... will not deploy..." && exit 0;; |
75 | | -*) echo "Not a deployment branch" && exit -1;; |
| 35 | + dev*) SDK_ENVIRONMENT="dev" && DEPLOYMENT_SERVER="${FROALA_SRV_DEV}";; |
| 36 | + ao-dev*) SDK_ENVIRONMENT="dev" && DEPLOYMENT_SERVER="${FROALA_SRV_DEV}";; |
| 37 | + qa*) SDK_ENVIRONMENT="qa" && DEPLOYMENT_SERVER="${FROALA_SRV_QA}";; |
| 38 | + qe*) SDK_ENVIRONMENT="qe" && DEPLOYMENT_SERVER="${FROALA_SRV_QE}";; |
| 39 | + rc*) SDK_ENVIRONMENT="stg" && DEPLOYMENT_SERVER="${FROALA_SRV_STAGING}";; |
| 40 | + release-master*) SDK_ENVIRONMENT="stg" && DEPLOYMENT_SERVER=${FROALA_SRV_STAGING};; |
| 41 | + ft*) echo "Building only on feature branch ${TRAVIS_BRANCH}... will not deploy..." && exit 0;; |
| 42 | + bf*) echo "Building only on bugfix branch ${TRAVIS_BRANCH}... will not deploy..." && exit 0;; |
| 43 | + *) echo "Not a deployment branch" && exit 1;; |
76 | 44 | esac |
77 | | -get_max_deployments_per_env $SDK_ENVIRONMENT |
78 | | -echo "deploying on environment :${SDK_ENVIRONMENT}, on server ${DEPLOYMENT_SERVER}, max deployments: ${MAX_DEPLOYMENTS_NR}" |
79 | | -export BASE_DOMAIN="froala-infra.com" |
80 | | -SHORT_REPO_NAME="${BUILD_REPO_NAME:0:17}" |
81 | | -BRANCH_LENGHT=`echo ${TRAVIS_BRANCH} |awk '{print length}'` |
82 | | -if [ ${BRANCH_LENGHT} -lt 18 ]; then |
83 | | -SHORT_TRAVIS_BRANCH=${TRAVIS_BRANCH} |
| 45 | + |
| 46 | +# Set the short branch name |
| 47 | +if [ "${BRANCH_LENGHT}" -lt 18 ]; then |
| 48 | + SHORT_TRAVIS_BRANCH="${TRAVIS_BRANCH}" |
84 | 49 | else |
85 | | -SHORT_TRAVIS_BRANCH="${TRAVIS_BRANCH:0:8}${TRAVIS_BRANCH: -8}" |
| 50 | + SHORT_TRAVIS_BRANCH="${TRAVIS_BRANCH:0:8}${TRAVIS_BRANCH: -8}" |
86 | 51 | fi |
87 | | -echo " short branch name : ${SHORT_TRAVIS_BRANCH}" |
88 | | -SHORT_TRAVIS_BRANCH=`echo ${SHORT_TRAVIS_BRANCH} | sed -r 's/-//g'` |
89 | | -SHORT_TRAVIS_BRANCH=`echo ${SHORT_TRAVIS_BRANCH} | sed -r 's/\.//g'` |
90 | | -SHORT_TRAVIS_BRANCH=`echo ${SHORT_TRAVIS_BRANCH} | sed -r 's/_//g'` |
91 | | -echo " short branch name : ${SHORT_TRAVIS_BRANCH}" |
92 | | -DEPLOYMENT_URL="${SHORT_REPO_NAME}-${SHORT_TRAVIS_BRANCH}.${SDK_ENVIRONMENT}.${BASE_DOMAIN}" |
93 | | -echo " deployment URL: https://${DEPLOYMENT_URL}" |
94 | | -cp docker-compose.yml.template docker-compose.yml |
95 | | -LW_REPO_NAME=`echo "${BUILD_REPO_NAME}" | tr '[:upper:]' '[:lower:]'` |
96 | | -LW_REPO_NAME=`echo ${LW_REPO_NAME} | sed -r 's/_//g'` |
97 | | -LW_REPO_NAME=`echo ${LW_REPO_NAME} | sed -r 's/-//g'` |
98 | | -LW_REPO_NAME=`echo ${LW_REPO_NAME} | sed -r 's/\.//g'` |
99 | | -LW_SHORT_TRAVIS_BRANCH=`echo "${SHORT_TRAVIS_BRANCH}" | tr '[:upper:]' '[:lower:]'` |
100 | | -generate_container_name ${LW_REPO_NAME} ${LW_SHORT_TRAVIS_BRANCH} ${DEPLOYMENT_SERVER} ${DEPLOYMENT_SERVER} |
101 | | -echo "service name : ${SERVICE_NAME} & container name : ${CONTAINER_NAME}" |
102 | | -sed -i "s/ImageName/${NEXUS_CR_TOOLS_URL}\/${IMAGE_NAME}/g" docker-compose.yml |
103 | | -sed -i "s/UrlName/${DEPLOYMENT_URL}/g" docker-compose.yml |
104 | | -sed -i "s/ServiceName/${SERVICE_NAME}/g" docker-compose.yml |
105 | | -sed -i "s/PortNum/${CONTAINER_SERVICE_PORTNO}/g" docker-compose.yml |
106 | | -sed -i "s/ContainerName/${CONTAINER_NAME}/g" docker-compose.yml |
107 | | -cat docker-compose.yml |
108 | | -LW_REPO_NAME_LENGTH=`echo ${LW_REPO_NAME} |awk '{print length}'` |
109 | | -SHORT_SERVICE_NAME="${SERVICE_NAME:0:$LW_REPO_NAME_LENGTH}" |
110 | | -echo "short service name: ${SHORT_SERVICE_NAME}" |
111 | | -function deploy_service(){ |
112 | | -ssh -o "StrictHostKeyChecking no" -i /tmp/sshkey.pem ${SSH_USER}@${DEPLOYMENT_SERVER} "if [ -d /services/${SERVICE_NAME} ]; then rm -rf /services/${SERVICE_NAME}; fi && mkdir /services/${SERVICE_NAME}" |
113 | | -scp -o "StrictHostKeyChecking no" -i /tmp/sshkey.pem docker-compose.yml ${SSH_USER}@${DEPLOYMENT_SERVER}:/services/${SERVICE_NAME}/docker-compose.yml |
114 | | -ssh -o "StrictHostKeyChecking no" -i /tmp/sshkey.pem ${SSH_USER}@${DEPLOYMENT_SERVER} " cd /services/${SERVICE_NAME}/ && sudo docker-compose pull" |
115 | | -ssh -o "StrictHostKeyChecking no" -i /tmp/sshkey.pem ${SSH_USER}@${DEPLOYMENT_SERVER} " cd /services/${SERVICE_NAME}/ && sudo docker-compose up -d" |
116 | | -sleep 10 && ssh -o "StrictHostKeyChecking no" -i /tmp/sshkey.pem ${SSH_USER}@${DEPLOYMENT_SERVER} " sudo docker ps -a | grep -i ${SERVICE_NAME}" |
117 | | -echo "Docker-compose is in : /services/${SERVICE_NAME} " |
118 | | -sleep 30 |
119 | | -RET_CODE=`curl -k -s -o /tmp/notimportant.txt -w "%{http_code}" https://${DEPLOYMENT_URL}` |
120 | | -echo "validation code: $RET_CODE for https://${DEPLOYMENT_URL}" |
121 | | -if [ $RET_CODE -ne 200 ]; then |
122 | | -echo "Deployment validation failed!!! Please check pipeline logs." |
123 | | -exit -1 |
124 | | -else |
125 | | -echo " Service available at URL: https://${DEPLOYMENT_URL}" |
126 | | - |
127 | | -fi |
128 | | -} |
129 | | -DEPLOYMENT_IS_RUNNING=`echo "${LW_REPO_NAME}-${AO_IDENTIFIER}-${CT_LOWER_INDEX}" | tr '[:upper:]' '[:lower:]'` |
130 | | -REDEPLOYMENT=`ssh -o "StrictHostKeyChecking no" -i /tmp/sshkey.pem ${SSH_USER}@${DEPLOYMENT_SERVER} " sudo docker ps -a | grep -i "${DEPLOYMENT_IS_RUNNING}" | wc -l" ` |
131 | | -echo "${DEPLOYMENT_IS_RUNNING}" |
132 | | -echo "checking if this PRD exists & do redeploy: ${REDEPLOYMENT}" |
133 | | -if [ ${REDEPLOYMENT} -eq 1 ]; then |
134 | | -echo "Redeploying service: ${SERVICE_NAME} ..." |
135 | | -deploy_service |
| 52 | +LW_SHORT_TRAVIS_BRANCH="$(echo "${SHORT_TRAVIS_BRANCH}" | sed -e 's/-//g' -e 's/\.//g' -e 's/_//g' | tr '[:upper:]' '[:lower:]')" |
| 53 | + |
| 54 | +# Get the maximum allowed deployment for given environment |
| 55 | +function max_allowed_deployment(){ |
| 56 | + echo "getting max deployments for environment ${SDK_ENVIRONMENT}" |
| 57 | + MAX_DEPLOYMENTS_NR=$(jq --arg sdkenvironment "${SDK_ENVIRONMENT}" '.[$sdkenvironment]' version.json | tr -d '"') |
| 58 | + echo "Max allowed deployments: ${MAX_DEPLOYMENTS_NR}" |
| 59 | +} |
| 60 | +max_allowed_deployment |
| 61 | + |
| 62 | +# Get the total numbers of deployed container for given environment |
| 63 | +function existing_deployments(){ |
| 64 | + echo "Checking the existing number of running container(s)" |
| 65 | + EXISTING_DEPLOYMENTS_NR=$(ssh -o "StrictHostKeyChecking no" -i /tmp/sshkey.pem "${SSH_USER}"@"${DEPLOYMENT_SERVER}" "sudo docker ps | grep -i ${LW_REPO_NAME}-${AO_IDENTIFIER}" | wc -l) |
| 66 | + echo "Number of existing deployment: ${EXISTING_DEPLOYMENTS_NR}" |
| 67 | +} |
| 68 | +existing_deployments |
| 69 | + |
| 70 | +# Get the old container name, no of deployments, and generate the new index and container name |
| 71 | +function generate_container_name(){ |
| 72 | + |
| 73 | + DEPL=$(ssh -o "StrictHostKeyChecking no" -i /tmp/sshkey.pem "${SSH_USER}"@"${DEPLOYMENT_SERVER}" sudo docker ps | grep -i "${LW_REPO_NAME}"-"${AO_IDENTIFIER}") |
| 74 | + echo "Containers running for ${AO_IDENTIFIER}: ${DEPL}" |
| 75 | + echo "${DEPL}" > file.txt |
| 76 | + |
| 77 | + echo "Getting indexes of oldest and latest deployed containers for ${AO_IDENTIFIER}" |
| 78 | + CT_LOWER_INDEX=$(awk -F'-' '{print $NF }' < file.txt | sort -nk1 | head -1) |
| 79 | + CT_HIGHER_INDEX=$(awk -F'-' '{print $NF }' < file.txt | sort -nk1 | tail -1) |
| 80 | + echo "Lowest index : ${CT_LOWER_INDEX} ; and Highest index : ${CT_HIGHER_INDEX}" |
| 81 | + |
| 82 | + if [ -z "${DEPL}" ]; then |
| 83 | + echo "First deployment. Setting the container name." |
| 84 | + CT_INDEX=1 |
| 85 | + CONTAINER_NAME="${LW_REPO_NAME}-${AO_IDENTIFIER}-${CT_INDEX}" |
| 86 | + SERVICE_NAME="${LW_REPO_NAME}-${LW_SHORT_TRAVIS_BRANCH}" |
| 87 | + else |
| 88 | + echo "Multiple deployments detected. Setting the container name (old and new)" |
| 89 | + CT_INDEX=${CT_HIGHER_INDEX} && CT_INDEX=$((CT_INDEX+1)) |
| 90 | + OLDEST_CONTAINER="${LW_REPO_NAME}-${AO_IDENTIFIER}-${CT_LOWER_INDEX}" |
| 91 | + CONTAINER_NAME="${LW_REPO_NAME}-${AO_IDENTIFIER}-${CT_INDEX}" |
| 92 | + SERVICE_NAME="${LW_REPO_NAME}-${LW_SHORT_TRAVIS_BRANCH}-${CT_INDEX}" |
| 93 | + echo "New index: ${CT_INDEX}" |
| 94 | + fi |
| 95 | +} |
| 96 | +generate_container_name |
| 97 | + |
| 98 | +# Print useful details. |
| 99 | +echo -e "\n" |
| 100 | +echo "----------------------------------------------------------------------" |
| 101 | +echo " Selected environment: ${SDK_ENVIRONMENT}. " |
| 102 | +echo " Deployment server: ${DEPLOYMENT_SERVER}. " |
| 103 | +echo " Max allowed deployments: ${MAX_DEPLOYMENTS_NR}. " |
| 104 | +echo " Number of existing deployment: ${EXISTING_DEPLOYMENTS_NR} " |
| 105 | +echo " Oldest container name: ${OLDEST_CONTAINER} " |
| 106 | +echo " Container name for this deployment: ${CONTAINER_NAME} " |
| 107 | +echo "----------------------------------------------------------------------" |
| 108 | +echo -e "\n" |
| 109 | + |
| 110 | +# Set the deployment URL |
| 111 | +DEPLOYMENT_URL="${CONTAINER_NAME}.${SDK_ENVIRONMENT}.${BASE_DOMAIN}" |
| 112 | + |
| 113 | +# Modify the compose file and run the docker-compose. |
| 114 | +function deploy(){ |
| 115 | + |
| 116 | + # Copy the docker-compose template to docker-compose.yml |
| 117 | + cp docker-compose.yml.template docker-compose.yml |
| 118 | + |
| 119 | + # Replace the sample values |
| 120 | + sed -i "s/ImageName/${NEXUS_CR_TOOLS_URL}\/${IMAGE_NAME}/g" docker-compose.yml |
| 121 | + sed -i "s/UrlName/${DEPLOYMENT_URL}/g" docker-compose.yml |
| 122 | + sed -i "s/ServiceName/${SERVICE_NAME}/g" docker-compose.yml |
| 123 | + sed -i "s/PortNum/${CONTAINER_SERVICE_PORTNO}/g" docker-compose.yml |
| 124 | + sed -i "s/ContainerName/${CONTAINER_NAME}/g" docker-compose.yml |
| 125 | + |
| 126 | + echo -e "\n" |
| 127 | + echo "Below is the content of docker-compose.yml" |
| 128 | + echo "-------------------------------------------------" |
| 129 | + cat docker-compose.yml |
| 130 | + echo "-------------------------------------------------" |
| 131 | + echo -e "\n" |
| 132 | + |
| 133 | + # Remove the old docker-compose from deployment_server |
| 134 | + ssh -o "StrictHostKeyChecking no" -i /tmp/sshkey.pem "${SSH_USER}"@"${DEPLOYMENT_SERVER}" "if [ -d /services/${SERVICE_NAME} ]; then rm -rf /services/${SERVICE_NAME}; fi && mkdir /services/${SERVICE_NAME}" |
| 135 | + |
| 136 | + # Copy the latest docker-compose file to deployment_server |
| 137 | + scp -o "StrictHostKeyChecking no" -i /tmp/sshkey.pem docker-compose.yml "${SSH_USER}"@"${DEPLOYMENT_SERVER}":/services/"${SERVICE_NAME}"/docker-compose.yml |
| 138 | + |
| 139 | + # Run docker-compose pull on deployment_server |
| 140 | + ssh -o "StrictHostKeyChecking no" -i /tmp/sshkey.pem "${SSH_USER}"@"${DEPLOYMENT_SERVER}" "cd /services/${SERVICE_NAME}/ && sudo docker-compose pull" |
| 141 | + sleep 10 |
| 142 | + |
| 143 | + # Run docker-compose up on deployment_server |
| 144 | + ssh -o "StrictHostKeyChecking no" -i /tmp/sshkey.pem "${SSH_USER}"@"${DEPLOYMENT_SERVER}" "cd /services/${SERVICE_NAME}/ && sudo docker-compose up -d --force-recreate" |
| 145 | + sleep 370 |
| 146 | + |
| 147 | + RET_CODE=$(curl -k -s -o /tmp/notimportant.txt -w "%{http_code}" https://"${DEPLOYMENT_URL}") |
| 148 | + echo "validation code: $RET_CODE for https://${DEPLOYMENT_URL}" |
| 149 | + if [ "${RET_CODE}" -ne 200 ]; then |
| 150 | + echo "Deployment validation failed!!! Please check pipeline logs." |
| 151 | + exit 1 |
| 152 | + else |
| 153 | + echo -e "\n\tService available at URL: https://${DEPLOYMENT_URL}/demo/index.html" |
| 154 | + fi |
| 155 | +} |
| 156 | + |
| 157 | +# If existing deployment less than max deployment then just deploy don't remove old container. |
| 158 | +if [ "${EXISTING_DEPLOYMENTS_NR}" -lt "${MAX_DEPLOYMENTS_NR}" ]; then |
| 159 | + deploy |
136 | 160 | fi |
137 | | -EXISTING_DEPLOYMENTS=`ssh -o "StrictHostKeyChecking no" -i /tmp/sshkey.pem ${SSH_USER}@${DEPLOYMENT_SERVER} " sudo docker ps | grep -i "${LW_REPO_NAME}-${AO_IDENTIFIER}" | wc -l" ` |
138 | | -if [ ${EXISTING_DEPLOYMENTS} -gt ${MAX_DEPLOYMENTS_NR} ]; then |
139 | | -echo "Maximum deployments reached on ${SDK_ENVIRONMENT} environment for ${BUILD_REPO_NAME} ; existing deployments: ${EXISTING_DEPLOYMENTS} ; max depl: ${MAX_DEPLOYMENTS_NR} " |
140 | | -echo "Stopping container ${OLDEST_CONTAINER} ..." |
141 | | -RCMD='ssh -o "StrictHostKeyChecking no" -i /tmp/sshkey.pem ' |
142 | | -RCMD="${RCMD} ${SSH_USER}@${DEPLOYMENT_SERVER} " |
143 | | -REM='" sudo docker stop ' |
144 | | -RCMD="${RCMD} $REM ${OLDEST_CONTAINER}"'"' |
145 | | -echo $RCMD | bash |
146 | | -sleep 12 |
147 | | -RCMD='ssh -o "StrictHostKeyChecking no" -i /tmp/sshkey.pem ' |
148 | | -RCMD="${RCMD} ${SSH_USER}@${DEPLOYMENT_SERVER} " |
149 | | -REM='" sudo docker rm ' |
150 | | -RCMD="${RCMD} $REM ${OLDEST_CONTAINER}"'"' |
151 | | -echo $RCMD | bash |
152 | | -else |
153 | | -echo "Deploying service ..." |
154 | | -deploy_service |
| 161 | + |
| 162 | + |
| 163 | +# If existing deployment equals max deployment then delete oldest container. |
| 164 | +if [ "${EXISTING_DEPLOYMENTS_NR}" -ge "${MAX_DEPLOYMENTS_NR}" ]; then |
| 165 | + |
| 166 | + echo "Maximum deployments reached on ${SDK_ENVIRONMENT} environment for ${BUILD_REPO_NAME}." |
| 167 | + echo "Stopping container ${OLDEST_CONTAINER} ..." |
| 168 | + |
| 169 | + if ! ssh -o "StrictHostKeyChecking no" -i /tmp/sshkey.pem "${SSH_USER}"@"${DEPLOYMENT_SERVER}" sudo docker stop "${OLDEST_CONTAINER}"; then |
| 170 | + echo "Failed to stop the ${OLDEST_CONTAINER} container" |
| 171 | + fi |
| 172 | + echo "Successfully stopped the ${OLDEST_CONTAINER} container." |
| 173 | + |
| 174 | + if ! ssh -o "StrictHostKeyChecking no" -i /tmp/sshkey.pem "${SSH_USER}"@"${DEPLOYMENT_SERVER}" sudo docker rm -f "${OLDEST_CONTAINER}"; then |
| 175 | + echo "Failed to remove the ${OLDEST_CONTAINER} container" |
| 176 | + fi |
| 177 | + echo "Successfully removed the ${OLDEST_CONTAINER} container." |
| 178 | + |
| 179 | + echo "Deploying the service: ${SERVICE_NAME}" |
| 180 | + deploy && sleep 30 |
| 181 | + echo "Deployment completed." |
155 | 182 | fi |
0 commit comments