Skip to content

Commit 7799d37

Browse files
CI/CD implementation (#23)
Fix for handling multiple instances with deployment --------- Co-authored-by: froala-travis-bot <[email protected]>
1 parent 23ea395 commit 7799d37

File tree

4 files changed

+174
-192
lines changed

4 files changed

+174
-192
lines changed

deploy_sdk.sh

Lines changed: 163 additions & 181 deletions
Original file line numberDiff line numberDiff line change
@@ -1,200 +1,182 @@
1-
#!/bin/bash
2-
#
3-
# indentify the environment & server
4-
#
5-
#
6-
# don't deploy for new PR
7-
#
8-
if [ ${TRAVIS_PULL_REQUEST} != "false" ]; then echo "Not deploying on a pull request !!!" && exit 0; fi
9-
10-
PACKAGE_VERSION=`jq '.version' version.json | tr -d '"'`
11-
DJANGO_IMAGE_NAME=`echo "${BUILD_REPO_NAME}_${TRAVIS_BRANCH}_${DJANGO_CONTAINER_SERVICE_NAME}" | tr '[:upper:]' '[:lower:]'`
12-
DEPLOYMENT_IS_RUNNING=`echo "${BUILD_REPO_NAME}_${TRAVIS_BRANCH}" | tr '[:upper:]' '[:lower:]'`
13-
14-
export BASE_DOMAIN="froala-infra.com"
15-
export SDK_ENVIRONMENT=""
16-
export DEPLOYMENT_SERVER=""
17-
SERVICE_NAME=""
18-
CONTAINAER_NAME=""
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')
1921
CT_INDEX=0
22+
MAX_DEPLOYMENTS_NR=0
23+
SDK_ENVIRONMENT=""
24+
DEPLOYMENT_SERVER=""
25+
SERVICE_NAME=""
26+
CONTAINER_NAME=""
27+
OLDEST_CONTAINER=""
2028

21-
OLDEST_DJANGO_CONTAINER=""
22-
29+
# Copy the ssh key
2330
echo "${SSH_KEY}" | base64 --decode > /tmp/sshkey.pem
2431
chmod 400 /tmp/sshkey.pem
2532

26-
export MAX_DEPLOYMENTS_NR=0
27-
function get_max_deployments_per_env(){
28-
29-
local ENVIRONMENT=$1
30-
echo "getting max deployments for environment ${ENVIRONMENT}"
31-
MAX_DEPLOYMENTS_NR=`jq --arg sdkenvironment ${ENVIRONMENT} '.[$sdkenvironment]' version.json | tr -d '"'`
32-
echo "detected max deployments: ${MAX_DEPLOYMENTS_NR}"
33-
34-
}
35-
36-
37-
function generate_container_name(){
38-
local LW_REPO_NAME=$1
39-
local LW_SHORT_TRAVIS_BRANCH=$2
40-
local SDK_ENVIRONMENT=$3
41-
local DEPLOYMENT_SERVER=$4
42-
43-
echo "searching for ${LW_REPO_NAME} depl..."
44-
sleep 1
45-
46-
RUNNING_DEPL=`ssh -o "StrictHostKeyChecking no" -i /tmp/sshkey.pem ${SSH_USER}@${DEPLOYMENT_SERVER} " sudo docker ps | grep -i ${LW_REPO_NAME}"`
47-
48-
echo "running depl var: ${RUNNING_DEPL}"
49-
echo "looking for ${LW_REPO_NAME} deployments"
50-
51-
echo "getting indexes for oldest and latest deployed container"
52-
DEPL='ssh -o "StrictHostKeyChecking no" -i /tmp/sshkey.pem '
53-
DEPL="${DEPL} ${SSH_USER}@${DEPLOYMENT_SERVER} "
54-
REL=' " sudo docker ps | grep -i '
55-
DEPL="${DEPL} ${REL} "
56-
DEPL="${DEPL} ${LW_REPO_NAME} "
57-
REL='"'
58-
DEPL="${DEPL} ${REL} "
59-
60-
echo "show docker containers ssh cmd: $DEPL"
61-
echo ${DEPL} | bash > file.txt
62-
echo "running conatiners: "
63-
cat file.txt
64-
CT_LOWER_INDEX=`cat file.txt | awk -F'-' '{print $NF }' | sort -nk1 | head -1`
65-
CT_HIGHER_INDEX=`cat file.txt | awk -F'-' '{print $NF }' | sort -nk1 | tail -1`
66-
67-
echo "lowest index : ${CT_LOWER_INDEX} ; and highest index : ${CT_HIGHER_INDEX}"
68-
69-
if [ -z "${RUNNING_DEPL}" ]; then
70-
echo "first deployment"
71-
CT_INDEX=1
72-
else
73-
echo "multiple deployments"
74-
CT_INDEX=${CT_HIGHER_INDEX} && CT_INDEX=$((CT_INDEX+1))
75-
OLDEST_DJANGO_CONTAINER="${LW_REPO_NAME}-${DJANGO_CONTAINER_SERVICE_NAME}-${CT_LOWER_INDEX}"
76-
echo "new index: ${CT_INDEX} & oldest horse out there: ${OLDEST_DJANGO_CONTAINER}"
77-
fi
78-
79-
}
80-
81-
echo " Container port: ${CONTAINER_SERVICE_PORTNO}"
82-
83-
export BRANCH_NAME=`echo "${TRAVIS_BRANCH}" | tr '[:upper:]' '[:lower:]'`
84-
33+
# Select the deployment server based on the branch.
8534
case "${BRANCH_NAME}" in
86-
dev*) SDK_ENVIRONMENT="dev" && DEPLOYMENT_SERVER=${FROALA_SRV_DEV} ;;
87-
ao-dev*) SDK_ENVIRONMENT="dev" && DEPLOYMENT_SERVER=${FROALA_SRV_DEV} ;;
88-
qa*) SDK_ENVIRONMENT="qa" && DEPLOYMENT_SERVER=${FROALA_SRV_QA} ;;
89-
qe*) SDK_ENVIRONMENT="qe" && DEPLOYMENT_SERVER=${FROALA_SRV_QE} ;;
90-
rc*) SDK_ENVIRONMENT="stg" && DEPLOYMENT_SERVER=${FROALA_SRV_STAGING} ;;
91-
release-master*) SDK_ENVIRONMENT="stg" && DEPLOYMENT_SERVER=${FROALA_SRV_STAGING} ;;
92-
ft*) echo "Building only on feature branch ${TRAVIS_BRANCH}... will not deploy..." && exit 0;;
93-
bf*) echo "Building only on bugfix branch ${TRAVIS_BRANCH}... will not deploy..." && exit 0;;
94-
*) 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;;
9544
esac
9645

97-
get_max_deployments_per_env $SDK_ENVIRONMENT
98-
99-
echo "deploying on environment :${SDK_ENVIRONMENT}, on server ${DEPLOYMENT_SERVER}, max deployments: ${MAX_DEPLOYMENTS_NR}"
100-
101-
export BASE_DOMAIN="froala-infra.com"
102-
SHORT_REPO_NAME="${BUILD_REPO_NAME:0:17}"
103-
BRANCH_LENGHT=`echo ${TRAVIS_BRANCH} |awk '{print length}'`
104-
if [ ${BRANCH_LENGHT} -lt 18 ]; then
105-
SHORT_TRAVIS_BRANCH=${TRAVIS_BRANCH}
46+
# Set the short branch name
47+
if [ "${BRANCH_LENGHT}" -lt 18 ]; then
48+
SHORT_TRAVIS_BRANCH="${TRAVIS_BRANCH}"
10649
else
107-
SHORT_TRAVIS_BRANCH="${TRAVIS_BRANCH:0:8}${TRAVIS_BRANCH: -8}"
50+
SHORT_TRAVIS_BRANCH="${TRAVIS_BRANCH:0:8}${TRAVIS_BRANCH: -8}"
10851
fi
52+
LW_SHORT_TRAVIS_BRANCH="$(echo "${SHORT_TRAVIS_BRANCH}" | sed -e 's/-//g' -e 's/\.//g' -e 's/_//g' | tr '[:upper:]' '[:lower:]')"
10953

110-
echo " short branch name : ${SHORT_TRAVIS_BRANCH}"
111-
SHORT_TRAVIS_BRANCH=`echo ${SHORT_TRAVIS_BRANCH} | sed -r 's/-//g'`
112-
SHORT_TRAVIS_BRANCH=`echo ${SHORT_TRAVIS_BRANCH} | sed -r 's/\.//g'`
113-
SHORT_TRAVIS_BRANCH=`echo ${SHORT_TRAVIS_BRANCH} | sed -r 's/_//g'`
114-
echo " short branch name : ${SHORT_TRAVIS_BRANCH}"
115-
DJANGO_DEPLOYMENT_URL="${DJANGO_CONTAINER_SERVICE_NAME}-${SHORT_REPO_NAME}-${SHORT_TRAVIS_BRANCH}.${SDK_ENVIRONMENT}.${BASE_DOMAIN}"
116-
echo " deployment URL: https://${DJANGO_DEPLOYMENT_URL}"
117-
118-
cp docker-compose.yml.template docker-compose.yml
119-
LW_REPO_NAME=`echo "${BUILD_REPO_NAME}" | tr '[:upper:]' '[:lower:]'`
120-
LW_REPO_NAME=`echo ${LW_REPO_NAME} | sed -r 's/_//g'`
121-
LW_REPO_NAME=`echo ${LW_REPO_NAME} | sed -r 's/-//g'`
122-
LW_REPO_NAME=`echo ${LW_REPO_NAME} | sed -r 's/\.//g'`
123-
LW_SHORT_TRAVIS_BRANCH=`echo "${SHORT_TRAVIS_BRANCH}" | tr '[:upper:]' '[:lower:]'`
124-
125-
SERVICE_NAME="${LW_REPO_NAME}-${LW_SHORT_TRAVIS_BRANCH}"
126-
127-
generate_container_name ${LW_REPO_NAME} ${LW_SHORT_TRAVIS_BRANCH} ${DEPLOYMENT_SERVER} ${DEPLOYMENT_SERVER}
128-
129-
DJANGO_CONTAINER_NAME="${LW_REPO_NAME}-${DJANGO_CONTAINER_SERVICE_NAME}-${CT_INDEX}"
130-
djangourl=${DJANGO_DEPLOYMENT_URL}
131-
djangoservice="${DJANGO_CONTAINER_SERVICE_NAME}-${CT_INDEX}"
132-
djangoportnum="${DJANGO_CONTAINER_SERVICE_PORTNO}"
133-
djangoimagename="froala-${DJANGO_IMAGE_NAME}:${PACKAGE_VERSION}"
134-
135-
echo "Django Image Name:${djangoimagename} Url: ${djangourl}"
136-
137-
sed -i "s/DjangoImageName/${NEXUS_CR_TOOLS_URL}\\/${djangoimagename}/g" docker-compose.yml
138-
sed -i "s/DjangoUrlName/${djangourl}/g" docker-compose.yml
139-
sed -i "s/DjangoServiceName/${djangoservice}/g" docker-compose.yml
140-
sed -i "s/DjangoPortNum/${djangoportnum}/g" docker-compose.yml
141-
sed -i "s/DjangoContainerName/${DJANGO_CONTAINER_NAME}/g" docker-compose.yml
142-
echo "Docker-compose file: "
143-
cat docker-compose.yml
144-
145-
LW_REPO_NAME_LENGTH=`echo ${LW_REPO_NAME} |awk '{print length}'`
146-
SHORT_SERVICE_NAME="${SERVICE_NAME:0:$LW_REPO_NAME_LENGTH}"
147-
echo "short service name: ${SHORT_SERVICE_NAME}"
148-
149-
150-
151-
function deploy_service(){
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
15261

153-
ssh -o "StrictHostKeyChecking no" -i /tmp/sshkey.pem ${SSH_USER}@${DEPLOYMENT_SERVER} "if [ -d /services/${SERVICE_NAME} ]; then sudo docker-compose -f /services/${SERVICE_NAME}/docker-compose.yml down; fi"
154-
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}"
155-
scp -o "StrictHostKeyChecking no" -i /tmp/sshkey.pem docker-compose.yml ${SSH_USER}@${DEPLOYMENT_SERVER}:/services/${SERVICE_NAME}/docker-compose.yml
156-
ssh -o "StrictHostKeyChecking no" -i /tmp/sshkey.pem ${SSH_USER}@${DEPLOYMENT_SERVER} " cd /services/${SERVICE_NAME}/ && sudo docker-compose pull"
157-
ssh -o "StrictHostKeyChecking no" -i /tmp/sshkey.pem ${SSH_USER}@${DEPLOYMENT_SERVER} " cd /services/${SERVICE_NAME}/ && sudo docker-compose up -d"
158-
sleep 10 && ssh -o "StrictHostKeyChecking no" -i /tmp/sshkey.pem ${SSH_USER}@${DEPLOYMENT_SERVER} " sudo docker ps -a | grep -i ${SERVICE_NAME}"
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
15969

160-
echo "Docker-compose is in : /services/${SERVICE_NAME} "
70+
# Get the old container name, no of deployments, and generate the new index and container name
71+
function generate_container_name(){
16172

162-
sleep 30
163-
RET_CODE=`curl -k -s -o /tmp/notimportant.txt -w "%{http_code}" https://${DJANGO_DEPLOYMENT_URL}`
164-
echo "validation code: $RET_CODE for https://${DJANGO_DEPLOYMENT_URL}"
165-
if [ $RET_CODE -ne 200 ]; then
166-
echo "Deployment validation failed for django SDK!!! Please check pipeline logs."
167-
exit -1
168-
else
169-
echo " Django Service available at URL: https://${DJANGO_DEPLOYMENT_URL}"
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}"
154+
fi
155+
}
170156

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
171160
fi
172161

173162

174-
}
175-
176-
REDEPLOYMENT=`ssh -o "StrictHostKeyChecking no" -i /tmp/sshkey.pem ${SSH_USER}@${DEPLOYMENT_SERVER} " sudo docker ps -a | grep -i "${DEPLOYMENT_IS_RUNNING}" | wc -l" `
177-
echo "${DEPLOYMENT_IS_RUNNING}"
178-
echo "checking if this PRD exists & do redeploy: ${REDEPLOYMENT}"
179-
if [ ${REDEPLOYMENT} -eq 2 ]; then
180-
echo "Redeploying service: ${SERVICE_NAME} ..."
181-
deploy_service
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."
182182
fi
183-
184-
EXISTING_DEPLOYMENTS=`ssh -o "StrictHostKeyChecking no" -i /tmp/sshkey.pem ${SSH_USER}@${DEPLOYMENT_SERVER} " sudo docker ps | grep -i "${LW_REPO_NAME}" | wc -l" `
185-
186-
if [ ${EXISTING_DEPLOYMENTS} -ge ${MAX_DEPLOYMENTS_NR} ]; then
187-
echo "Maximum deployments reached on ${SDK_ENVIRONMENT} environment for ${BUILD_REPO_NAME} ; existing deployments: ${EXISTING_DEPLOYMENTS} ; max depl: ${MAX_DEPLOYMENTS_NR} "
188-
echo "Stopping container ${OLDEST_CONTAINER} ..."
189-
RCMD='ssh -o "StrictHostKeyChecking no" -i /tmp/sshkey.pem '
190-
RCMD="${RCMD} ${SSH_USER}@${DEPLOYMENT_SERVER} "
191-
REM='" sudo docker stop '
192-
RCMD="${RCMD} $REM ${OLDEST_DJANGO_CONTAINER} OLDEST_CONTAINER"'"'
193-
echo $RCMD | bash
194-
sleep 12
195-
196-
deploy_service
197-
else
198-
echo "Deploying service ..."
199-
deploy_service
200-
fi

docker-compose.yml.template

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
11
version: '3.7'
22
services:
3-
DjangoServiceName:
3+
ServiceName:
44
restart: unless-stopped
5-
image: DjangoImageName
6-
container_name: DjangoContainerName
5+
image: ImageName
6+
container_name: ContainerName
77
pull_policy: always
88
networks:
99
- caddy
1010
labels:
11-
caddy: DjangoUrlName
12-
caddy.reverse_proxy: "{{upstreams DjangoPortNum}}"
11+
caddy: UrlName
12+
caddy.reverse_proxy: "{{upstreams PortNum}}"
1313
caddy_0.tls.ca: https://acme-staging-v02.api.letsencrypt.org/directory
1414
networks:
1515
caddy:

0 commit comments

Comments
 (0)