Skip to content

Commit b7f6193

Browse files
CI/CD implementation (#257)
Fix to handle multiple instances with deployment.
1 parent 2d36051 commit b7f6193

File tree

2 files changed

+173
-146
lines changed

2 files changed

+173
-146
lines changed

deploy_sdk.sh

Lines changed: 171 additions & 144 deletions
Original file line numberDiff line numberDiff line change
@@ -1,155 +1,182 @@
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=""
825
SERVICE_NAME=""
926
CONTAINER_NAME=""
10-
CT_INDEX=0
11-
AO_IDENTIFIER=`echo ${TRAVIS_BRANCH}`
12-
echo "${AO_IDENTIFIER}"
1327
OLDEST_CONTAINER=""
28+
29+
# Copy the ssh key
1430
echo "${SSH_KEY}" | base64 --decode > /tmp/sshkey.pem
1531
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.
6434
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;;
7644
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}"
8449
else
85-
SHORT_TRAVIS_BRANCH="${TRAVIS_BRANCH:0:8}${TRAVIS_BRANCH: -8}"
50+
SHORT_TRAVIS_BRANCH="${TRAVIS_BRANCH:0:8}${TRAVIS_BRANCH: -8}"
8651
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
136160
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."
155182
fi

version.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"comment": " Please update this file for any new branch with core libary name - package name and version uploaded to nexus",
3-
"name": "froala-editor-QA241122",
4-
"version": "4.0.16",
3+
"name": "froala-editor-RC-v4.1",
4+
"version": "4.1.0",
55
"comment-2": "Please specify the maximum allowed deployments per environment",
66
"dev": "1",
77
"qa": "2",

0 commit comments

Comments
 (0)