Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit 970cf13

Browse files
Gunasekar KGunasekar K
Gunasekar K
authored and
Gunasekar K
committedNov 29, 2018
synchronizing 4.2 with master_deploy.sh
1 parent d5683c2 commit 970cf13

File tree

2 files changed

+945
-144
lines changed

2 files changed

+945
-144
lines changed
 

‎master_deploy.sh

Lines changed: 448 additions & 144 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
#!/bin/bash
22

3+
34
#Variable Declaration
45
JQ="jq --raw-output --exit-status"
56
DEPLOYMENT_TYPE=""
@@ -14,22 +15,32 @@ AWS_SECRET_ACCESS_KEY=""
1415
AWS_ACCOUNT_ID=""
1516
AWS_REGION=""
1617
TAG=""
17-
SEC_LOCATION=""
18+
SEC_LIST=""
1819
COUNTER_LIMIT=12
20+
1921
#Varibles specific to ECS
2022
AWS_REPOSITORY=""
2123
AWS_ECS_CLUSTER=""
2224
AWS_ECS_SERVICE=""
2325
AWS_ECS_TASK_FAMILY=""
2426
AWS_ECS_CONTAINER_NAME=""
25-
AWS_ECS_TEMPLATE="container.template"
26-
AWS_ECS_VOLUME_TEMPLATE=""
2727
ECS_TAG=""
2828
REVISION=""
29-
ECS_TEMPLATE_TYPE="CONTAINER"
29+
ECS_TEMPLATE_TYPE="EC2"
3030
task_def=""
31+
CONTAINER_LOG_DRIVER="awslogs"
32+
portcount=0
33+
envcount=0
34+
volcount=0
35+
template=""
36+
TEMPLATE_SKELETON_FILE="base_template_v2.json"
37+
APP_IMAGE_NAME=""
3138

3239
#variable specific to EBS
40+
DOCKERRUN="Dockerrun.aws.json"
41+
EBS_EB_EXTENSTION_LOCATION=""
42+
IMG_WITH_EBS_TAG=""
43+
EBS_TEMPLATE_SKELETON_FILE="ebs_base_template_v1.json.template"
3344
EBS_APPLICATION_NAME=""
3445
EBS_APPVER=""
3546
EBS_TAG=""
@@ -39,14 +50,17 @@ AWS_S3_BUCKET=""
3950
AWS_S3_KEY=""
4051
AWS_EB_ENV=""
4152
EBS_TEMPLATE_FILE_NAME=""
42-
AWS_EBS_EB_DOCKERRUN_TEMPLATE_LOCATION=$(eval "echo \$${ENV}_AWS_EBS_EB_DOCKERRUN_TEMPLATE_LOCATION")
43-
AWS_EBS_DOCKERRUN_TEMPLATE=$(eval "echo \$${ENV}_AWS_EBS_DOCKERRUN_TEMPLATE")
53+
#AWS_EBS_EB_DOCKERRUN_TEMPLATE_LOCATION=$(eval "echo \$${ENV}_AWS_EBS_EB_DOCKERRUN_TEMPLATE_LOCATION")
54+
#AWS_EBS_DOCKERRUN_TEMPLATE=$(eval "echo \$${ENV}_AWS_EBS_DOCKERRUN_TEMPLATE")
4455
AWS_S3_KEY_LOCATION=""
4556

4657
#variable for cloud front
4758
AWS_S3_BUCKET=""
48-
SOURCE_SYNC_PATH=""
49-
NOCACHE="false"
59+
AWS_S3_SOURCE_SYNC_PATH=""
60+
CFCACHE="true"
61+
62+
#variable for Lambda
63+
AWS_LAMBDA_DEPLOY_TYPE=""
5064

5165
#FUNCTIONS
5266
#usage Function - provides information like how to execute the script
@@ -105,62 +119,241 @@ configure_docker_private_login() {
105119
#ECS Deployment Functions
106120

107121
ECS_push_ecr_image() {
122+
if [ -z "$APP_IMAGE_NAME" ];
123+
then
124+
log "Image has followed standard format"
125+
else
126+
log "Image does not follow stanard format. Modifying the image and updating the ECS_TAG"
127+
docker tag $APP_IMAGE_NAME:$ECS_TAG $AWS_ACCOUNT_ID.dkr.ecr.$AWS_REGION.amazonaws.com/$AWS_REPOSITORY:$CIRCLE_BUILD_NUM
128+
ECS_TAG=$CIRCLE_BUILD_NUM
129+
fi
108130
log "Pushing Docker Image..."
109131
eval $(aws ecr get-login --region $AWS_REGION --no-include-email)
110132
docker push $AWS_ACCOUNT_ID.dkr.ecr.$AWS_REGION.amazonaws.com/$AWS_REPOSITORY:$ECS_TAG
111133
track_error $? "ECS ECR image push"
112134
log "Docker Image published."
113135
}
114136

115-
ECS_update_register_task_definition() {
116-
#tag name alone need to be updated
117-
if [ "$ECS_TEMPLATE_TYPE" = "CONTAINER" ] ;
137+
#================
138+
portmapping() {
139+
hostport=$1
140+
containerport=$2
141+
containerprotocol=$3
142+
143+
template=$(echo $template | jq --argjson hostPort $hostport --argjson containerPort $containerport --arg protocol $containerprotocol --arg portcount $portcount '.containerDefinitions[0].portMappings[$portcount |tonumber] |= .+ { hostPort: $hostPort, containerPort: $containerPort, protocol: $protocol }')
144+
let portcount=portcount+1
145+
146+
}
147+
#=============================
148+
149+
150+
envaddition() {
151+
#echo "envcount before " $envcount
152+
153+
envname=$1
154+
envvalue=$2
155+
#echo "env value before" $envvalue
156+
template=$(echo $template | jq --arg name "$envname" --arg value "$envvalue" --arg envcount $envcount '.containerDefinitions[0].environment[$envcount |tonumber] |= .+ { name: $name, value: $value }')
157+
158+
let envcount=envcount+1
159+
#echo "envcount after ---------" $envcount
160+
#echo "envvalue after ---------" $envvalue
161+
}
162+
#=========================
163+
logconfiguration() {
164+
template=$(echo $template | jq --arg logDriver $CONTAINER_LOG_DRIVER '.containerDefinitions[0].logConfiguration.logDriver=$logDriver')
165+
template=$(echo $template | jq --arg awslogsgroup "/aws/ecs/$AWS_ECS_CLUSTER" '.containerDefinitions[0].logConfiguration.options."awslogs-group"=$awslogsgroup')
166+
template=$(echo $template | jq --arg awslogsregion $AWS_REGION '.containerDefinitions[0].logConfiguration.options."awslogs-region"=$awslogsregion')
167+
template=$(echo $template | jq --arg awslogsstreamprefix $ENV '.containerDefinitions[0].logConfiguration.options."awslogs-stream-prefix"=$awslogsstreamprefix')
168+
template=$(echo $template | jq 'del(.containerDefinitions[0].logConfiguration.options.KeyName)')
169+
}
170+
#=============================================
171+
volumeupdate() {
172+
volname=$1
173+
sourcepath=$2
174+
mountpath=$3
175+
#mntpermission=$4
176+
#echo $volname $sourcepath $mountpath $mntpermission
177+
#volumes update
178+
template=$(echo $template | jq --arg volname $volname --arg sourcepath $sourcepath --arg volcount $volcount '.volumes[$volcount |tonumber] |= .+ { name: $volname, host: { sourcePath: $sourcepath } }')
179+
#mount point update
180+
template=$(echo $template | jq --arg volname $volname --arg mountpath $mountpath --arg volcount $volcount '.containerDefinitions[0].mountPoints[$volcount |tonumber] |= .+ { sourceVolume: $volname, containerPath: $mountpath }')
181+
182+
let volcount=volcount+1
183+
}
184+
#============================================
185+
ECS_Container_HealthCheck_integ() {
186+
HealthCheckCmd="$1"
187+
188+
template=$(echo $template | jq '.containerDefinitions[0].healthCheck.retries=3')
189+
template=$(echo $template | jq '.containerDefinitions[0].healthCheck.timeout=15')
190+
template=$(echo $template | jq '.containerDefinitions[0].healthCheck.interval=60')
191+
template=$(echo $template | jq '.containerDefinitions[0].healthCheck.startPeriod=120')
192+
template=$(echo $template | jq --arg HealthCheckCmd "$HealthCheckCmd" '.containerDefinitions[0].healthCheck.command=["CMD-SHELL",$HealthCheckCmd]')
193+
}
194+
195+
#============================================
196+
ECS_Container_cmd_integ() {
197+
ContainerCmd="$1"
198+
template=$(echo $template | jq --arg ContainerCmd "$ContainerCmd" '.containerDefinitions[0].command=[$ContainerCmd]')
199+
}
200+
#============================================
201+
ECS_template_create_register() {
202+
203+
#Getting Template skeleton
204+
#template=`aws ecs register-task-definition --generate-cli-skeleton`
205+
template=$(cat $TEMPLATE_SKELETON_FILE)
206+
207+
#Updating ECS task def file
208+
template=$(echo $template | jq --arg family $AWS_ECS_TASK_FAMILY '.family=$family')
209+
log "Family updated"
210+
211+
#taskrole and excution role has updated
212+
#template=$(echo $template | jq --arg taskRoleArn arn:aws:iam::$AWS_ACCOUNT_ID:role/ecsTaskExecutionRole '.taskRoleArn=$taskRoleArn')
213+
#template=$(echo $template | jq --arg executionRoleArn arn:aws:iam::$AWS_ACCOUNT_ID:role/ecsTaskExecutionRole '.executionRoleArn=$executionRoleArn')
214+
215+
#Container Name update
216+
template=$(echo $template | jq --arg name $AWS_ECS_CONTAINER_NAME '.containerDefinitions[0].name=$name')
217+
log "Container Name updated"
218+
219+
#Container Image Name update
220+
template=$(echo $template | jq --arg image $AWS_ACCOUNT_ID.dkr.ecr.$AWS_REGION.amazonaws.com/$AWS_REPOSITORY:$ECS_TAG '.containerDefinitions[0].image=$image')
221+
log "Image name updated"
222+
223+
#Container Memory reservation
224+
if [ -z $AWS_ECS_CONTAINER_MEMORY_RESERVATION ];
225+
then
226+
log "No reseveed memory defined . Going with default value 500 MB"
227+
AWS_ECS_CONTAINER_MEMORY_RESERVATION="1000"
228+
template=$(echo $template | jq --argjson memoryReservation $AWS_ECS_CONTAINER_MEMORY_RESERVATION '.containerDefinitions[0].memoryReservation=$memoryReservation')
229+
else
230+
template=$(echo $template | jq --argjson memoryReservation $AWS_ECS_CONTAINER_MEMORY_RESERVATION '.containerDefinitions[0].memoryReservation=$memoryReservation')
231+
fi
232+
log "Memory reservation updated"
233+
234+
#Port Mapping
235+
Buffer_portmap=$(echo $AWS_ECS_PORTS | sed 's/,/ /g')
236+
for b1 in $Buffer_portmap;
237+
do
238+
hostport=$( echo $b1 | cut -d ':' -f 1 )
239+
containerport=$( echo $b1 | cut -d ':' -f 2 )
240+
protocolmapped=$( echo $b1 | cut -d ':' -f 3 )
241+
portmapping $hostport $containerport $protocolmapped
242+
done
243+
log "port mapping updated"
244+
# Environment addition
245+
Buffer_seclist=$(echo $SEC_LIST | sed 's/,/ /g')
246+
for listname in $Buffer_seclist;
247+
do
248+
local o=$IFS
249+
IFS=$(echo -en "\n\b")
250+
envvars=$( cat $listname.json | jq -r ' .app_var ' | jq ' . | to_entries[] | { "name": .key , "value": .value } ' | jq -s . )
251+
log "vars are fetched"
252+
253+
for s in $(echo $envvars | jq -c ".[]" ); do
254+
#echo $envvars
255+
varname=$(echo $s| jq -r ".name")
256+
varvalue=$(echo $s| jq -r ".value")
257+
envaddition "$varname" "$varvalue"
258+
done
259+
IFS=$o
260+
done
261+
262+
log "environment has updated"
263+
# Log Configuration
264+
logconfiguration
265+
log "log configuration has updated"
266+
267+
#volume update
268+
if [ -z $AWS_ECS_VOLUMES ];
269+
then
270+
echo "No volume mapping defined"
271+
else
272+
Buffer_volumes=$(echo $AWS_ECS_VOLUMES | sed 's/,/ /g')
273+
for v1 in $Buffer_volumes;
274+
do
275+
volname=$( echo $v1 | cut -d ':' -f 1 )
276+
sourcepath=$( echo $v1 | cut -d ':' -f 2 )
277+
mountpath=$( echo $v1 | cut -d ':' -f 3 )
278+
#mntpermission=$( echo $v1 | cut -d ':' -f 4 )
279+
#volumeupdate $volname $sourcepath $mountpath $mntpermission
280+
volumeupdate $volname $sourcepath $mountpath
281+
done
282+
log "volumes are mapped"
283+
fi
284+
#Conteainer health check update
285+
if [ -z "$AWS_ECS_CONTAINER_HEALTH_CMD" ];
286+
then
287+
echo "No container Health check command defined"
288+
else
289+
ECS_Container_HealthCheck_integ "$AWS_ECS_CONTAINER_HEALTH_CMD"
290+
fi
291+
#Container command integration
292+
if [ -z "$AWS_ECS_CONTAINER_CMD" ];
293+
then
294+
echo "No container command not defined"
295+
else
296+
ECS_Container_cmd_integ "$AWS_ECS_CONTAINER_CMD"
297+
fi
298+
#updating data based on ECS deploy type
299+
if [ "$ECS_TEMPLATE_TYPE" == "FARGATE" ]
300+
then
301+
#updating Network
302+
ECS_NETWORKTYPE="awsvpc"
303+
template=$(echo $template | jq --arg executionRoleArn arn:aws:iam::$AWS_ACCOUNT_ID:role/ecsTaskExecutionRole '.executionRoleArn=$executionRoleArn')
304+
template=$(echo $template | jq --arg networkMode $ECS_NETWORKTYPE '.networkMode=$networkMode')
305+
# Updating the compatibiltiy
306+
#template=$(echo $template | jq --arg requiresCompatibilities EC2 '.requiresCompatibilities[0] |= .+ $requiresCompatibilities')
307+
template=$(echo $template | jq --arg requiresCompatibilities FARGATE '.requiresCompatibilities[.requiresCompatibilities| length] |= .+ $requiresCompatibilities')
308+
# Updating Fargate CPU
309+
if [ -z $AWS_ECS_FARGATE_CPU ];
118310
then
119-
#. /$AWS_ECS_TEMPLATE_UPDATE_SCRIPT $ENV $ECS_TAG
120-
. $AWS_ECS_TEMPLATE_UPDATE_SCRIPT $ENV $ECS_TAG
121-
#task_def=`cat $AWS_ECS_TASKDEF_FILE`
122-
echo "updating"
123-
if REVISION=$(aws ecs register-task-definition --container-definitions "$task_def" --family $AWS_ECS_TASK_FAMILY | $JQ '.taskDefinition.taskDefinitionArn'); then
124-
log "Revision: $REVISION"
125-
else
126-
track_error 1 "Task Def registration"
127-
log "Failed to register task definition"
128-
return 1
129-
fi
311+
echo "No FARGATE cpu defined . Going with default value 1024"
312+
AWS_ECS_FARGATE_CPU="1024"
313+
template=$(echo $template | jq --arg cpu $AWS_ECS_FARGATE_CPU '.cpu=$cpu')
314+
else
315+
template=$(echo $template | jq --arg cpu $AWS_ECS_FARGATE_CPU '.cpu=$cpu')
130316
fi
131-
if [ "$ECS_TEMPLATE_TYPE" = "CONTAINERVOLUME" ] ;
317+
# Updating Fargate Memory
318+
if [ -z $AWS_ECS_FARGATE_MEMORY ];
132319
then
133-
#. /$AWS_ECS_TEMPLATE_UPDATE_SCRIPT $ENV $ECS_TAG
134-
. $AWS_ECS_TEMPLATE_UPDATE_SCRIPT $ENV $ECS_TAG
135-
#task_def=`cat $AWS_ECS_TASKDEF_FILE`
136-
echo "updating"
137-
#volume_def=`cat $AWS_ECS_VOLUMEDEF_FILE`
138-
if REVISION=$(aws ecs register-task-definition --container-definitions "$task_def" --volumes "$volume_def" --family $AWS_ECS_TASK_FAMILY | $JQ '.taskDefinition.taskDefinitionArn'); then
139-
log "Revision: $REVISION"
140-
else
141-
track_error 1 "Task Def registration"
142-
log "Failed to register task definition"
143-
return 1
144-
fi
320+
echo "No FARGATE memory defined . Going with default value 2048"
321+
AWS_ECS_FARGATE_MEMORY="2048"
322+
template=$(echo $template | jq --arg memory $AWS_ECS_FARGATE_MEMORY '.memory=$memory')
323+
else
324+
template=$(echo $template | jq --arg memory $AWS_ECS_FARGATE_MEMORY '.memory=$memory')
145325
fi
146-
if [ "$ECS_TEMPLATE_TYPE" = "TDJSON" ] ;
326+
else
327+
#CONTAINER_CPU
328+
ECS_NETWORKTYPE="bridge"
329+
template=$(echo $template | jq --arg networkMode $ECS_NETWORKTYPE '.networkMode=$networkMode')
330+
#Container Memory reservation
331+
if [ -z $AWS_ECS_CONTAINER_CPU ];
147332
then
148-
. $AWS_ECS_TEMPLATE_UPDATE_SCRIPT $ENV $ECS_TAG
149-
#task_def=`cat $AWS_ECS_TASKDEF_FILE`
150-
if [ -z $task_def ];
333+
echo "No cpu defined . Going with default value 100"
334+
AWS_ECS_CONTAINER_CPU=100
335+
template=$(echo $template | jq --argjson cpu $AWS_ECS_CONTAINER_CPU '.containerDefinitions[0].cpu=$cpu')
336+
else
337+
template=$(echo $template | jq --argjson cpu $AWS_ECS_CONTAINER_CPU '.containerDefinitions[0].cpu=$cpu')
338+
fi
339+
340+
# Updating the compatibiltiy
341+
template=$(echo $template | jq --arg requiresCompatibilities EC2 '.requiresCompatibilities[0] = $requiresCompatibilities')
342+
fi
343+
if [ -z "$template" ];
151344
then
152-
track_error 1 "Task Def has not set by taskdef variable"
345+
track_error 1 "Task Def has not set by template variable"
346+
exit 1
153347
else
154-
if REVISION=$(aws ecs register-task-definition --cli-input-json "$task_def" | $JQ '.taskDefinition.taskDefinitionArn'); then
348+
# echo "template values ------:" $template
349+
if REVISION=$(aws ecs register-task-definition --cli-input-json "$template" | $JQ '.taskDefinition.taskDefinitionArn'); then
155350
log "Revision: $REVISION"
156351
else
157352
track_error 1 "Task Def registration"
158353
log "Failed to register task definition"
159354
return 1
160355
fi
161-
fi
162-
fi
163-
356+
fi
164357
}
165358

166359
ECS_deploy_cluster() {
@@ -199,36 +392,59 @@ check_service_status() {
199392
echo "$servicestatus"
200393
}
201394

395+
validate_update_loggroup()
396+
{
397+
log_group_fetch=$(aws logs describe-log-groups --log-group-name-prefix /aws/ecs/$AWS_ECS_CLUSTER | jq -r .logGroups[].logGroupName | grep "^/aws/ecs/$AWS_ECS_CLUSTER$")
398+
#echo $log_group_fetch
399+
if [ -z $log_group_fetch ];
400+
then
401+
echo "log group does not exist"
402+
aws logs create-log-group --log-group-name /aws/ecs/$AWS_ECS_CLUSTER
403+
track_error $? "aws log group"
404+
else
405+
echo "log group exist"
406+
fi
407+
}
202408
# EBS integration
203409

204410

205411
EBS_push_docker_image() {
206412

207413
echo "pushing docker image: ${IMAGE}"
414+
IMAGE="${DOCKER_REGISTRY_NAME}/${IMG_WITH_EBS_TAG}"
208415
docker push $IMAGE
209416
track_error $? "docker push failed."
210417

211418
}
212419

213420
creating_updating_ebs_docker_json() {
214-
cd $AWS_EBS_EB_DOCKERRUN_TEMPLATE_LOCATION
215-
cat $AWS_EBS_DOCKERRUN_TEMPLATE | sed -e "s/@IMAGE@/${EBS_TAG}/g" > $DOCKERRUN
216-
jar cMf ${EBS_TAG}.zip $DOCKERRUN .ebextensions
217-
echo "pushing ${EBS_TAG}.zip to S3: ${AWS_S3_BUCKET}/${AWS_S3_KEY}"
218-
aws s3api put-object --bucket "${AWS_S3_BUCKET}" --key "${AWS_S3_KEY}" --body ${EBS_TAG}.zip
219-
track_error $? "aws s3api put-object failed."
421+
422+
if [ -z "$EBS_EB_EXTENSTION_LOCATION" ];
423+
then
424+
cat $EBS_TEMPLATE_SKELETON_FILE | sed -e "s/@IMAGE@/${IMG_WITH_EBS_TAG}/g" > $DOCKERRUN
425+
echo "pushing $DOCKERRUN as ${IMG_WITH_EBS_TAG} to S3: ${AWS_S3_BUCKET}/${AWS_S3_KEY}"
426+
aws s3api put-object --bucket "${AWS_S3_BUCKET}" --key "${AWS_S3_KEY}" --body $DOCKERRUN
427+
track_error $? "aws s3api put-object failed."
428+
else
429+
cat $EBS_TEMPLATE_SKELETON_FILE | sed -e "s/@IMAGE@/${IMG_WITH_EBS_TAG}/g" > $DOCKERRUN
430+
cp -rvf $EBS_EB_EXTENSTION_LOCATION/.ebextensions .
431+
jar cMf ${IMG_WITH_EBS_TAG}.zip $DOCKERRUN .ebextensions
432+
echo "pushing ${IMG_WITH_EBS_TAG}.zip to S3: ${AWS_S3_BUCKET}/${AWS_S3_KEY}"
433+
aws s3api put-object --bucket "${AWS_S3_BUCKET}" --key "${AWS_S3_KEY}" --body ${IMG_WITH_EBS_TAG}.zip
434+
track_error $? "aws s3api put-object failed."
435+
fi
220436
}
221437

222438
creating_updating_EBS_appversion() {
223439

224-
echo "creating new application version $AWS_EBS_APPVER in ${EBS_APPLICATION_NAME} from s3:${AWS_S3_BUCKET}/${AWS_S3_KEY}"
225-
aws elasticbeanstalk create-application-version --application-name $EBS_APPLICATION_NAME --version-label $AWS_EBS_APPVER --source-bundle S3Bucket="$AWS_S3_BUCKET",S3Key="$AWS_S3_KEY"
226-
track_error $? "aws elasticbeanstalk create-application-version failed."
440+
echo "creating new application version $AWS_EBS_APPVER in ${AWS_EBS_APPLICATION_NAME} from s3:${AWS_S3_BUCKET}/${AWS_S3_KEY}"
441+
aws elasticbeanstalk create-application-version --application-name $AWS_EBS_APPLICATION_NAME --version-label $AWS_EBS_APPVER --source-bundle S3Bucket="$AWS_S3_BUCKET",S3Key="$AWS_S3_KEY"
442+
track_error $? "aws elasticbeanstalk create-application-version failed."
227443

228-
echo "updating elastic beanstalk environment ${AWS_EB_ENV} with the version ${AWS_EBS_APPVER}."
229-
# assumes beanstalk app for this service has already been created and configured
230-
aws elasticbeanstalk update-environment --environment-name $AWS_EBS_ENV_NAME --version-label $AWS_EBS_APPVER
231-
track_error $? "aws elasticbeanstalk update-environment failed."
444+
echo "updating elastic beanstalk environment ${AWS_EB_ENV} with the version ${AWS_EBS_APPVER}."
445+
# assumes beanstalk app for this service has already been created and configured
446+
aws elasticbeanstalk update-environment --environment-name $AWS_EBS_ENV_NAME --version-label $AWS_EBS_APPVER
447+
track_error $? "aws elasticbeanstalk update-environment failed."
232448

233449
}
234450

@@ -243,17 +459,17 @@ deploy_s3bucket() {
243459
cat /etc/mime.types | grep -i ico
244460
cat /etc/mime.types | grep -i map
245461
cat /etc/mime.types | grep -i ttf
246-
if [ "$NOCACHE" = "true" ]; then
462+
if [ "$CFCACHE" = "true" ]; then
463+
S3_CACHE_OPTIONS="--cache-control max-age=0,s-maxage=86400"
464+
else
247465
S3_CACHE_OPTIONS="--cache-control private,no-store,no-cache,must-revalidate,max-age=0"
248466
echo "*** Deploying with Cloudfront Cache disabled ***"
249-
else
250-
S3_CACHE_OPTIONS="--cache-control max-age=0,s-maxage=86400"
251467
fi
252468

253469
S3_OPTIONS="--exclude '*.txt' --exclude '*.js' --exclude '*.css'"
254-
echo aws s3 sync $SOURCE_SYNC_PATH s3://${AWS_S3_BUCKET} ${S3_CACHE_OPTIONS} ${S3_OPTIONS}
255-
eval "aws s3 sync --dryrun $SOURCE_SYNC_PATH s3://${AWS_S3_BUCKET} ${S3_CACHE_OPTIONS} ${S3_OPTIONS}"
256-
result=`eval "aws s3 sync $SOURCE_SYNC_PATH s3://${AWS_S3_BUCKET} ${S3_CACHE_OPTIONS} ${S3_OPTIONS}"`
470+
echo aws s3 sync $AWS_S3_SOURCE_SYNC_PATH s3://${AWS_S3_BUCKET} ${S3_CACHE_OPTIONS} ${S3_OPTIONS}
471+
eval "aws s3 sync --dryrun $AWS_S3_SOURCE_SYNC_PATH s3://${AWS_S3_BUCKET} ${S3_CACHE_OPTIONS} ${S3_OPTIONS}"
472+
result=`eval "aws s3 sync $AWS_S3_SOURCE_SYNC_PATH s3://${AWS_S3_BUCKET} ${S3_CACHE_OPTIONS} ${S3_OPTIONS}"`
257473
if [ $? -eq 0 ]; then
258474
echo "All html, font, image, map and media files are Deployed without gzip encoding!"
259475
else
@@ -262,21 +478,110 @@ deploy_s3bucket() {
262478
fi
263479

264480
S3_OPTIONS="--exclude '*' --include '*.txt' --include '*.js' --include '*.css' --content-encoding gzip"
265-
echo aws s3 sync --dryrun $SOURCE_SYNC_PATH s3://${AWS_S3_BUCKET} ${S3_CACHE_OPTIONS} ${S3_OPTIONS}
266-
eval "aws s3 sync --dryrun $SOURCE_SYNC_PATH s3://${AWS_S3_BUCKET} ${S3_CACHE_OPTIONS} ${S3_OPTIONS}"
267-
result=`eval "aws s3 sync $SOURCE_SYNC_PATH s3://${AWS_S3_BUCKET} ${S3_CACHE_OPTIONS} ${S3_OPTIONS}"`
481+
echo aws s3 sync --dryrun $AWS_S3_SOURCE_SYNC_PATH s3://${AWS_S3_BUCKET} ${S3_CACHE_OPTIONS} ${S3_OPTIONS}
482+
eval "aws s3 sync --dryrun $AWS_S3_SOURCE_SYNC_PATH s3://${AWS_S3_BUCKET} ${S3_CACHE_OPTIONS} ${S3_OPTIONS}"
483+
result=`eval "aws s3 sync $AWS_S3_SOURCE_SYNC_PATH s3://${AWS_S3_BUCKET} ${S3_CACHE_OPTIONS} ${S3_OPTIONS}"`
268484
if [ $? -eq 0 ]; then
269485
echo "All txt, css, and js files are Deployed! with gzip"
270486
else
271487
echo "Deployment Failed - $result"
272488
exit 1
273489
fi
274490
}
491+
download_envfile()
492+
{
493+
Buffer_seclist=$(echo $SEC_LIST | sed 's/,/ /g' )
494+
for listname in $Buffer_seclist;
495+
do
496+
aws s3 cp s3://tc-platform-${ENV_CONFIG}/securitymanager/$listname.json .
497+
#cp $HOME/buildscript/securitymanager/$listname.json.enc .
498+
#SECPASSWD=$(eval "echo \$${listname}")
499+
#openssl enc -aes-256-cbc -d -md MD5 -in $listname.json.enc -out $listname.json -k $SECPASSWD
500+
done
501+
}
502+
decrypt_fileenc()
503+
{
504+
Buffer_seclist=$(echo $SEC_LIST | sed 's/,/ /g' )
505+
for listname in $Buffer_seclist;
506+
do
507+
#aws s3 cp s3://tc-platform-dev/securitymanager/$listname.json .
508+
#cp $HOME/buildscript/securitymanager/$listname.json.enc .
509+
SECPASSWD=$(eval "echo \$${listname}")
510+
openssl enc -aes-256-cbc -d -md MD5 -in $listname.json.enc -out $listname.json -k $SECPASSWD
511+
done
512+
}
513+
514+
uploading_envvar()
515+
{
516+
Buffer_seclist=$(echo $SEC_LIST | sed 's/,/ /g')
517+
for listname in $Buffer_seclist;
518+
do
519+
# for envappvar in $( cat $listname.json | jq -r ' . ' | jq ' . | to_entries | map(select(.key | test("AWS.") ) ) | from_entries' | jq -r "to_entries|map(\"\(.key)=\(.value|tostring)\")|.[]" ); do
520+
# export $envappvar
521+
# done
522+
o=$IFS
523+
IFS=$(echo -en "\n\b")
524+
envvars=$( cat $listname.json | jq -r ' .awsdeployvar ' | jq ' . | to_entries[] | { "name": .key , "value": .value } ' | jq -s . )
525+
for s in $(echo $envvars | jq -c ".[]" ); do
526+
#echo $envvars
527+
varname=$(echo $s| jq -r ".name")
528+
varvalue=$(echo $s| jq -r ".value")
529+
export "$varname"="$varvalue"
530+
done
531+
IFS=$o
532+
done
533+
}
534+
configure_Lambda_template()
535+
{
536+
537+
if [ "$AWS_LAMBDA_DEPLOY_TYPE" == "SLS" ]
538+
then
539+
Buffer_seclist=$(echo $SEC_LIST | sed 's/,/ /g')
540+
envvars=$( cat $listname.json | jq -c ' .app_var ')
541+
for listname in $Buffer_seclist;
542+
do
543+
o=$IFS
544+
IFS=$(echo -en "\n\b")
545+
envvars=$( cat $listname.json | jq -c ' .app_var ')
546+
echo "$envvars" > /home/circleci/project/config/dev.json
547+
sed -i 's/\\n/\\\\n/g' /home/circleci/project/config/dev.json
548+
#yq r $listname.json >$listname.yml
549+
#a=serverless.yml
550+
#b="$listname.json"
551+
#python -c "import sys; from ruamel.yaml import YAML; yaml = YAML(); cfg = yaml.load(open('$a','r')); cfg_env = yaml.load(open('$b','r')); cfg['Resources']['tcdevhandler']['Properties']['Environment']['Variables']=cfg_env['app_var'] ; yaml.dump(cfg, open('appeneded.yaml', 'w'))"
552+
#python -c "import sys; from ruamel.yaml import YAML; yaml = YAML(); cfg = yaml.load(open('$a','r')); cfg_env = yaml.load(open('$b','r')); cfg['provider']['environment']=cfg_env['app_var'] ; yaml.dump(cfg, open('appeneded.yaml', 'w'))"
553+
#python -c "import sys , json , ruamel.yaml , cStringIO; jsondata = cStringIO.StringIO(); yaml = ruamel.yaml.YAML(); yaml.explicit_start = True; data = json.load(open('$b','r'), object_pairs_hook=ruamel.yaml.comments.CommentedMap) ; ruamel.yaml.scalarstring.walk_tree(data) ; yaml.dump(data, jsondata); cfg = yaml.load(open('$a','r')); cfg_env = yaml.load(jsondata.getvalue()); cfg['Resources']['tcdevhandler']['Properties']['Environment']['Variables']=cfg_env['app_var'] ; yaml.dump(cfg, open('appeneded.yaml', 'w'))"
554+
#python -c "import sys , json , ruamel.yaml , cStringIO; jsondata = cStringIO.StringIO(); yaml = ruamel.yaml.YAML(); yaml.explicit_start = True; data = json.load(open('$b','r'), object_pairs_hook=ruamel.yaml.comments.CommentedMap) ; ruamel.yaml.scalarstring.walk_tree(data) ; yaml.dump(data, jsondata); cfg = yaml.load(open('$a','r')); cfg_env = yaml.load(jsondata.getvalue()); cfg['provider']['environment']=cfg_env['app_var'] ; yaml.dump(cfg, open('appeneded.yaml', 'w'))"
555+
#python -c "import sys , json , ruamel.yaml ; from io import BytesIO as StringIO ; jsondata = StringIO(); yaml = ruamel.yaml.YAML(); yaml.explicit_start = True; data = json.load(open('$b','r'), object_pairs_hook=ruamel.yaml.comments.CommentedMap) ; ruamel.yaml.scalarstring.walk_tree(data) ; yaml.dump(data, jsondata); cfg = yaml.load(open('$a','r')); cfg_env= yaml.load(jsondata.getvalue()); cfg['provider']['environment']=cfg_env['app_var'] ; yaml.dump(cfg, open('appeneded.yaml','w'))"
556+
#python -c "import sys , json , ruamel.yaml ; from io import BytesIO as StringIO ; jsondata = StringIO(); yaml = ruamel.yaml.YAML(); data = json.load(open('$b','r')) ; yaml.dump(data, jsondata); cfg = yaml.load(open('$a','r')); cfg_env= yaml.load(jsondata.getvalue()); cfg['provider']['environment']=cfg_env['app_var'] ; yaml.dump(cfg, open('appeneded.yaml','w'))"
557+
#mv -f appeneded.yaml serverless.yml
558+
done
559+
IFS=$o
560+
fi
561+
562+
}
563+
564+
deploy_lambda_package()
565+
{
566+
# sls deploy
567+
if [ "$AWS_LAMBDA_DEPLOY_TYPE" == "SLS" ]
568+
then
569+
echo "welcome to lambda SLS deploy"
570+
sls deploy
571+
fi
572+
573+
574+
}
575+
# decrypt_aws_sys_parameter()
576+
# {
577+
578+
# for future implmentation.
579+
# }
275580

276581
# Input Collection and validation
277-
input_collection_validation()
582+
input_parsing_validation()
278583
{
279-
while getopts .d:h:e:t:v:s:p:g:c:. OPTION
584+
while getopts .d:h:i:e:t:v:s:p:g:c:. OPTION
280585
do
281586
case $OPTION in
282587
d)
@@ -286,20 +591,23 @@ do
286591
usage
287592
exit 1
288593
;;
594+
i)
595+
APP_IMAGE_NAME=$OPTARG
596+
;;
289597
e)
290598
ENV=$OPTARG
291599
;;
292600
t)
293601
TAG=$OPTARG
294602
;;
295603
c)
296-
NOCACHE=$OPTARG
604+
CFCACHE=$OPTARG
297605
;;
298606
v)
299607
EBS_APPVER=$OPTARG
300608
;;
301609
s)
302-
SEC_LOCATION=$OPTARG
610+
SEC_LIST=$OPTARG
303611
;;
304612
p)
305613
ECS_TEMPLATE_TYPE=$OPTARG
@@ -325,124 +633,112 @@ fi
325633

326634
log "ENV : $ENV"
327635
log "DEPLOYMENT_TYPE : $DEPLOYMENT_TYPE"
636+
log "app variable list : $SEC_LIST"
328637
ENV_CONFIG=`echo "$ENV" | tr '[:upper:]' '[:lower:]'`
329638

330-
if [ -z $SHARED_PROPERTY_FILENAME ] ;
331-
then
332-
log "No common proerty file has provided"
333-
else
334-
log "Common proerty file name is $SHARED_PROPERTY_FILENAME"
335-
cp $HOME/buildscript/shared-properties/$SHARED_PROPERTY_FILENAME .
336-
source $SHARED_PROPERTY_FILENAME
337-
fi
639+
#Validating AWS configuration
338640

339-
source $BUILD_VARIABLE_FILE_NAME
340-
#The secret file download and decryption need to be done here
341641

342-
SECRET_FILE_NAME="${APPNAME}-buildsecvar.conf"
343-
if [ "$SEC_LOCATION" = "GIT" ] ;
344-
then
345-
cp $HOME/buildscript/$APPNAME/$SECRET_FILE_NAME.enc .
346-
else
347-
AWS_ACCESS_KEY_ID=$(eval "echo \$${ENV}_AWS_ACCESS_KEY_ID")
348-
AWS_SECRET_ACCESS_KEY=$(eval "echo \$${ENV}_AWS_SECRET_ACCESS_KEY")
349-
AWS_ACCOUNT_ID=$(eval "echo \$${ENV}_AWS_ACCOUNT_ID")
350-
AWS_REGION=$(eval "echo \$${ENV}_AWS_REGION")
351-
configure_aws_cli
352-
aws s3 cp s3://tc-platform-dev/buildconfiguration/$SECRET_FILE_NAME.enc .
353-
fi
354-
if [ -f "$SECRET_FILE_NAME" ];
355-
then
356-
rm -rf $SECRET_FILE_NAME
357-
fi
358-
#ccdecrypt -f $SECRET_FILE_NAME.cpt -K $SECPASSWD
359-
openssl enc -aes-256-cbc -d -md MD5 -in $SECRET_FILE_NAME.enc -out $SECRET_FILE_NAME -k $SECPASSWD
360-
source $SECRET_FILE_NAME
361-
#decrypt
642+
#Getting Deployment varaible only
362643

363644
AWS_ACCESS_KEY_ID=$(eval "echo \$${ENV}_AWS_ACCESS_KEY_ID")
364645
AWS_SECRET_ACCESS_KEY=$(eval "echo \$${ENV}_AWS_SECRET_ACCESS_KEY")
365646
AWS_ACCOUNT_ID=$(eval "echo \$${ENV}_AWS_ACCOUNT_ID")
366-
367-
if [ -z $AWS_ACCESS_KEY_ID ] || [ -z $AWS_SECRET_ACCESS_KEY ] || [ -z $AWS_ACCOUNT_ID ] ;
647+
AWS_REGION=$(eval "echo \$${ENV}_AWS_REGION")
648+
if [ -z $AWS_ACCESS_KEY_ID ] || [ -z $AWS_SECRET_ACCESS_KEY ] || [ -z $AWS_ACCOUNT_ID ] || [ -z $AWS_REGION ];
368649
then
369-
log "Secret Parameters are not updated. Please upload the secret file"
650+
log "AWS Secret Parameters are not configured in circleci/environment"
370651
usage
371652
exit 1
653+
else
654+
configure_aws_cli
655+
#aws configure list
372656
fi
373657

374-
AWS_REGION=$(eval "echo \$${ENV}_AWS_REGION")
658+
download_envfile
659+
#decrypt_fileenc
660+
uploading_envvar
661+
662+
663+
664+
665+
#Validating parameter based on Deployment type
666+
#ECS parameter validation
375667
if [ "$DEPLOYMENT_TYPE" == "ECS" ]
376668
then
377-
AWS_REPOSITORY=$(eval "echo \$${ENV}_AWS_REPOSITORY")
378-
AWS_ECS_CLUSTER=$(eval "echo \$${ENV}_AWS_ECS_CLUSTER")
379-
AWS_ECS_SERVICE=$(eval "echo \$${ENV}_AWS_ECS_SERVICE")
380-
AWS_ECS_TASK_FAMILY=$(eval "echo \$${ENV}_AWS_ECS_TASK_FAMILY")
381-
AWS_ECS_CONTAINER_NAME=$(eval "echo \$${ENV}_AWS_ECS_CONTAINER_NAME")
382-
AWS_ECS_TEMPLATE_UPDATE_SCRIPT=$(eval "echo \$${ENV}_AWS_ECS_TEMPLATE_UPDATE_SCRIPT")
383-
#AWS_ECS_TASKDEF_FILE=$(eval "echo \$${ENV}_AWS_ECS_TASKDEF_FILE")
384-
#AWS_ECS_VOLUMEDEF_FILE=$(eval "echo \$${ENV}_AWS_ECS_VOLUMEDEF_FILE")
385669
ECS_TAG=$TAG
386-
if [ -z $AWS_REGION ] || [ -z $AWS_REPOSITORY ] || [ -z $AWS_ECS_CLUSTER ] || [ -z $AWS_ECS_SERVICE ] || [ -z $AWS_ECS_TASK_FAMILY ] || [ -z $AWS_ECS_CONTAINER_NAME ] || [ -z $AWS_ECS_TEMPLATE_UPDATE_SCRIPT ] || [ -z $ECS_TAG ];
670+
cp $HOME/buildscript/$TEMPLATE_SKELETON_FILE .
671+
672+
if [ -z $AWS_REPOSITORY ] || [ -z $AWS_ECS_CLUSTER ] || [ -z $AWS_ECS_SERVICE ] || [ -z $AWS_ECS_TASK_FAMILY ] || [ -z $AWS_ECS_CONTAINER_NAME ] || [ -z $AWS_ECS_PORTS ] || [ -z $ECS_TAG ];
387673
then
388-
log "Build varibale are not updated. Please update the Build variable file"
674+
log "Deployment varibale are not updated. Please check tag option has provided. also ensure AWS_REPOSITORY, AWS_ECS_TASK_FAMILY,AWS_ECS_CONTAINER_NAME,AWS_ECS_PORTS,AWS_ECS_CLUSTER and AWS_ECS_SERVICE ariables are configured on secret manager"
389675
usage
390676
exit 1
391677
fi
392678
log "AWS_REPOSITORY : $AWS_REPOSITORY"
393679
log "AWS_ECS_CLUSTER : $AWS_ECS_CLUSTER"
394-
log "AWS_ECS_SERVICE : $AWS_ECS_SERVICE"
680+
log "AWS_ECS_SERVICE_NAMES : $AWS_ECS_SERVICE"
395681
log "AWS_ECS_TASK_FAMILY : $AWS_ECS_TASK_FAMILY"
396682
log "AWS_ECS_CONTAINER_NAME : $AWS_ECS_CONTAINER_NAME"
397-
log "AWS_ECS_TEMPLATE_UPDATE_SCRIPT : $AWS_ECS_TEMPLATE_UPDATE_SCRIPT"
398-
log "ECS_TAG : $ECS_TAG"
683+
log "AWS_ECS_PORTS : $AWS_ECS_PORTS"
684+
log "ECS_TAG : $ECS_TAG"
399685
fi
400-
686+
#EBS parameter validation
401687
if [ "$DEPLOYMENT_TYPE" == "EBS" ]
402688
then
403-
EBS_APPLICATION_NAME=$(eval "echo \$${ENV}_EBS_APPLICATION_NAME")
404-
AWS_EBS_ENV_NAME=$(eval "echo \$${ENV}_AWS_EBS_ENV_NAME")
405-
AWS_EBS_APPVER="${AWS_EBS_ENV_NAME}-${EBS_APPVER}"
406-
EBS_TAG="${IMAGE_NAME}:${ENV_CONFIG}.${EBS_APPVER}"
407-
IMAGE="${DOCKER_REGISTRY_NAME}/${EBS_TAG}"
408-
AWS_S3_BUCKET=$(eval "echo \$${ENV}_AWS_S3_BUCKET")
409-
AWS_S3_KEY_LOCATION=$(eval "echo \$${ENV}_AWS_S3_KEY_LOCATION")
689+
# EBS_TAG = the docker image tag for example dev.201807051535
690+
cp $HOME/buildscript/$EBS_TEMPLATE_SKELETON_FILE .
691+
EBS_TAG=$TAG
692+
AWS_EBS_APPVER="${AWS_EBS_ENV_NAME}-${EBS_TAG}"
693+
IMG_WITH_EBS_TAG="${DOCKER_IMAGE_NAME}:${EBS_TAG}"
694+
# EBS_TAG="${IMAGE_NAME}:${ENV_CONFIG}.${EBS_APPVER}"
695+
696+
410697
if [ "$AWS_S3_KEY_LOCATION" = "" ] ;
411698
then
412-
AWS_S3_KEY="${EBS_TAG}"
699+
AWS_S3_KEY="${IMG_WITH_EBS_TAG}"
413700
else
414-
AWS_S3_KEY="$AWS_S3_KEY_LOCATION/${EBS_TAG}"
701+
AWS_S3_KEY="$AWS_S3_KEY_LOCATION/${IMG_WITH_EBS_TAG}"
415702
fi
416-
AWS_EBS_EB_DOCKERRUN_TEMPLATE_LOCATION=$(eval "echo \$${ENV}_AWS_EBS_EB_DOCKERRUN_TEMPLATE_LOCATION")
417-
AWS_EBS_DOCKERRUN_TEMPLATE=$(eval "echo \$${ENV}_AWS_EBS_DOCKERRUN_TEMPLATE")
418-
if [ -z $EBS_APPLICATION_NAME ] || [ -z $AWS_EBS_ENV_NAME ] || [ -z $EBS_APPVER ] || [ -z $AWS_EBS_APPVER ] || [ -z $EBS_TAG ] || [ -z $IMAGE ] || [ -z $AWS_S3_BUCKET ] || [ -z $AWS_EBS_EB_DOCKERRUN_TEMPLATE_LOCATION ] || [ -z $AWS_EBS_DOCKERRUN_TEMPLATE ];
703+
#AWS_EBS_EB_DOCKERRUN_TEMPLATE_LOCATION=$(eval "echo \$${ENV}_AWS_EBS_EB_DOCKERRUN_TEMPLATE_LOCATION")
704+
#AWS_EBS_DOCKERRUN_TEMPLATE=$(eval "echo \$${ENV}_AWS_EBS_DOCKERRUN_TEMPLATE")
705+
if [ -z $AWS_EBS_APPLICATION_NAME ] || [ -z $DOCKER_IMAGE_NAME ] || [ -z $AWS_EBS_ENV_NAME ] || [ -z $EBS_TAG ] || [ -z $AWS_EBS_APPVER ] || [ -z $AWS_S3_BUCKET ] ;
419706
then
420707
log "Build varibale are not updated. Please update the Build variable file"
421708
usage
422709
exit 1
423710
fi
424-
log "EBS_APPLICATION_NAME : $EBS_APPLICATION_NAME"
425-
log "EBS_APPVER : $EBS_APPVER"
711+
log "EBS_APPLICATION_NAME : $AWS_EBS_APPLICATION_NAME"
426712
log "AWS_EBS_APPVER : $AWS_EBS_APPVER"
427713
log "EBS_TAG : $EBS_TAG"
428-
log "IMAGE : $IMAGE"
429714
log "AWS_S3_BUCKET : $AWS_S3_BUCKET"
430715
log "AWS_S3_KEY : $AWS_S3_KEY"
431716
log "AWS_EB_ENV : $AWS_EBS_ENV_NAME"
432717
fi
718+
#CFRONT parameter validation
433719
if [ "$DEPLOYMENT_TYPE" == "CFRONT" ]
434720
then
435-
AWS_S3_BUCKET=$(eval "echo \$${ENV}_AWS_S3_BUCKET")
436-
SOURCE_SYNC_PATH=$(eval "echo \$${ENV}_SOURCE_SYNC_PATH")
437721

438-
if [ -z $AWS_S3_BUCKET ] || [ -z $SOURCE_SYNC_PATH ];
722+
if [ -z $AWS_S3_BUCKET ] || [ -z $AWS_S3_SOURCE_SYNC_PATH ];
439723
then
440724
log "Build varibale are not updated. Please update the Build variable file"
441725
usage
442726
exit 1
443727
fi
444728
log "AWS_S3_BUCKET : $AWS_S3_BUCKET"
445-
log "SOURCE_SYNC_PATH : $SOURCE_SYNC_PATH"
729+
log "AWS_S3_SOURCE_SYNC_PATH : $AWS_S3_SOURCE_SYNC_PATH"
730+
fi
731+
#CFRONT parameter validation
732+
if [ "$DEPLOYMENT_TYPE" == "LAMBDA" ]
733+
then
734+
735+
if [ -z $AWS_LAMBDA_DEPLOY_TYPE ] ;
736+
then
737+
log "Build varibale are not updated. Please update the Build variable file"
738+
usage
739+
exit 1
740+
fi
741+
log "AWS_LAMBDA_DEPLOY_TYPE : $AWS_LAMBDA_DEPLOY_TYPE"
446742
fi
447743
}
448744

@@ -451,14 +747,17 @@ fi
451747
main()
452748
{
453749

454-
input_collection_validation $@
750+
input_parsing_validation $@
455751

456752
if [ "$DEPLOYMENT_TYPE" == "ECS" ]
457753
then
458-
configure_aws_cli
754+
validate_update_loggroup
459755
ECS_push_ecr_image
460-
ECS_update_register_task_definition
461-
AWS_ECS_SERVICE_NAMES=`echo ${AWS_ECS_SERVICE} | sed 's/,/ /g' | sed 'N;s/\n//' `
756+
ECS_template_create_register
757+
echo "value of AWS_ECS_SERVICE " $AWS_ECS_SERVICE
758+
AWS_ECS_SERVICE_NAMES=$(echo ${AWS_ECS_SERVICE} | sed 's/,/ /g')
759+
#AWS_ECS_SERVICE_NAMES=$(echo ${AWS_ECS_SERVICE} | sed 's/,/ /g' | sed 'N;s/\n//')
760+
echo "value of AWS_ECS_SERVICE_NAMES " $AWS_ECS_SERVICE_NAMES
462761
IFS=' ' read -a AWS_ECS_SERVICES <<< $AWS_ECS_SERVICE_NAMES
463762
if [ ${#AWS_ECS_SERVICES[@]} -gt 0 ]; then
464763
echo "${#AWS_ECS_SERVICES[@]} service are going to be updated"
@@ -467,7 +766,7 @@ then
467766
echo "updating ECS Cluster Service - $AWS_ECS_SERVICE_NAME"
468767
ECS_deploy_cluster "$AWS_ECS_SERVICE_NAME"
469768
check_service_status "$AWS_ECS_SERVICE_NAME"
470-
echo $REVISION
769+
#echo $REVISION
471770
done
472771
else
473772
echo "Kindly check the service name in Parameter"
@@ -480,7 +779,7 @@ fi
480779

481780
if [ "$DEPLOYMENT_TYPE" == "EBS" ]
482781
then
483-
configure_aws_cli
782+
#configure_aws_cli
484783
configure_docker_private_login
485784
EBS_push_docker_image
486785
creating_updating_ebs_docker_json
@@ -489,9 +788,14 @@ fi
489788

490789
if [ "$DEPLOYMENT_TYPE" == "CFRONT" ]
491790
then
492-
configure_aws_cli
493791
deploy_s3bucket
494792
fi
793+
794+
if [ "$DEPLOYMENT_TYPE" == "LAMBDA" ]
795+
then
796+
configure_Lambda_template
797+
deploy_lambda_package
798+
fi
495799
}
496800
main $@
497801

‎master_deploy_old.sh

Lines changed: 497 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,497 @@
1+
#!/bin/bash
2+
3+
#Variable Declaration
4+
JQ="jq --raw-output --exit-status"
5+
DEPLOYMENT_TYPE=""
6+
ENV=""
7+
BUILD_VARIABLE_FILE_NAME="./buildvar.conf"
8+
SECRET_FILE_NAME="./buildsecvar.conf"
9+
SHARED_PROPERTY_FILENAME=""
10+
11+
#Common Varibles
12+
AWS_ACCESS_KEY_ID=""
13+
AWS_SECRET_ACCESS_KEY=""
14+
AWS_ACCOUNT_ID=""
15+
AWS_REGION=""
16+
TAG=""
17+
SEC_LOCATION=""
18+
COUNTER_LIMIT=12
19+
#Varibles specific to ECS
20+
AWS_REPOSITORY=""
21+
AWS_ECS_CLUSTER=""
22+
AWS_ECS_SERVICE=""
23+
AWS_ECS_TASK_FAMILY=""
24+
AWS_ECS_CONTAINER_NAME=""
25+
AWS_ECS_TEMPLATE="container.template"
26+
AWS_ECS_VOLUME_TEMPLATE=""
27+
ECS_TAG=""
28+
REVISION=""
29+
ECS_TEMPLATE_TYPE="CONTAINER"
30+
task_def=""
31+
32+
#variable specific to EBS
33+
EBS_APPLICATION_NAME=""
34+
EBS_APPVER=""
35+
EBS_TAG=""
36+
IMAGE=""
37+
AWS_EBS_APPVER=""
38+
AWS_S3_BUCKET=""
39+
AWS_S3_KEY=""
40+
AWS_EB_ENV=""
41+
EBS_TEMPLATE_FILE_NAME=""
42+
AWS_EBS_EB_DOCKERRUN_TEMPLATE_LOCATION=$(eval "echo \$${ENV}_AWS_EBS_EB_DOCKERRUN_TEMPLATE_LOCATION")
43+
AWS_EBS_DOCKERRUN_TEMPLATE=$(eval "echo \$${ENV}_AWS_EBS_DOCKERRUN_TEMPLATE")
44+
AWS_S3_KEY_LOCATION=""
45+
46+
#variable for cloud front
47+
AWS_S3_BUCKET=""
48+
SOURCE_SYNC_PATH=""
49+
NOCACHE="false"
50+
51+
#FUNCTIONS
52+
#usage Function - provides information like how to execute the script
53+
usage()
54+
{
55+
cat << EOF
56+
usage: $0 options
57+
58+
This script need to be executed with below option.
59+
60+
OPTIONS:
61+
-h Show this message
62+
-d Deployment Type [ECS|EBS|CFRONT]
63+
-e Environment [DEV|QA|PROD]
64+
-t ECS Tag Name [mandatatory if ECS ]
65+
-v EBS version [mandatatory if EBS deployment]
66+
-c cache option true [optional : value = true| false]i
67+
-s Security file location GIT|AWS
68+
-p ECS template type
69+
-g Enter common property file which has uploaded in shared-properties folder
70+
EOF
71+
}
72+
#log Function - Used to provide information of execution information with date and time
73+
log()
74+
{
75+
echo "`date +'%D %T'` : $1"
76+
}
77+
#track_error function validates whether the application execute without any error
78+
79+
track_error()
80+
{
81+
if [ $1 != "0" ]; then
82+
log "$2 exited with error code $1"
83+
log "completed execution IN ERROR at `date`"
84+
exit $1
85+
fi
86+
87+
}
88+
89+
90+
#Function for aws login
91+
92+
configure_aws_cli() {
93+
aws --version
94+
aws configure set aws_access_key_id $AWS_ACCESS_KEY_ID
95+
aws configure set aws_secret_access_key $AWS_SECRET_ACCESS_KEY
96+
aws configure set default.region $AWS_REGION
97+
aws configure set default.output json
98+
log "Configured AWS CLI."
99+
}
100+
#Function for private dcoker login
101+
configure_docker_private_login() {
102+
aws s3 cp "s3://appirio-platform-$ENV_CONFIG/services/common/dockercfg" ~/.dockercfg
103+
}
104+
105+
#ECS Deployment Functions
106+
107+
ECS_push_ecr_image() {
108+
log "Pushing Docker Image..."
109+
eval $(aws ecr get-login --region $AWS_REGION --no-include-email)
110+
docker push $AWS_ACCOUNT_ID.dkr.ecr.$AWS_REGION.amazonaws.com/$AWS_REPOSITORY:$ECS_TAG
111+
track_error $? "ECS ECR image push"
112+
log "Docker Image published."
113+
}
114+
115+
ECS_update_register_task_definition() {
116+
#tag name alone need to be updated
117+
if [ "$ECS_TEMPLATE_TYPE" = "CONTAINER" ] ;
118+
then
119+
#. /$AWS_ECS_TEMPLATE_UPDATE_SCRIPT $ENV $ECS_TAG
120+
. $AWS_ECS_TEMPLATE_UPDATE_SCRIPT $ENV $ECS_TAG
121+
#task_def=`cat $AWS_ECS_TASKDEF_FILE`
122+
echo "updating"
123+
if REVISION=$(aws ecs register-task-definition --container-definitions "$task_def" --family $AWS_ECS_TASK_FAMILY | $JQ '.taskDefinition.taskDefinitionArn'); then
124+
log "Revision: $REVISION"
125+
else
126+
track_error 1 "Task Def registration"
127+
log "Failed to register task definition"
128+
return 1
129+
fi
130+
fi
131+
if [ "$ECS_TEMPLATE_TYPE" = "CONTAINERVOLUME" ] ;
132+
then
133+
#. /$AWS_ECS_TEMPLATE_UPDATE_SCRIPT $ENV $ECS_TAG
134+
. $AWS_ECS_TEMPLATE_UPDATE_SCRIPT $ENV $ECS_TAG
135+
#task_def=`cat $AWS_ECS_TASKDEF_FILE`
136+
echo "updating"
137+
#volume_def=`cat $AWS_ECS_VOLUMEDEF_FILE`
138+
if REVISION=$(aws ecs register-task-definition --container-definitions "$task_def" --volumes "$volume_def" --family $AWS_ECS_TASK_FAMILY | $JQ '.taskDefinition.taskDefinitionArn'); then
139+
log "Revision: $REVISION"
140+
else
141+
track_error 1 "Task Def registration"
142+
log "Failed to register task definition"
143+
return 1
144+
fi
145+
fi
146+
if [ "$ECS_TEMPLATE_TYPE" = "TDJSON" ] ;
147+
then
148+
. $AWS_ECS_TEMPLATE_UPDATE_SCRIPT $ENV $ECS_TAG
149+
#task_def=`cat $AWS_ECS_TASKDEF_FILE`
150+
if [ -z $task_def ];
151+
then
152+
track_error 1 "Task Def has not set by taskdef variable"
153+
else
154+
if REVISION=$(aws ecs register-task-definition --cli-input-json "$task_def" | $JQ '.taskDefinition.taskDefinitionArn'); then
155+
log "Revision: $REVISION"
156+
else
157+
track_error 1 "Task Def registration"
158+
log "Failed to register task definition"
159+
return 1
160+
fi
161+
fi
162+
fi
163+
164+
}
165+
166+
ECS_deploy_cluster() {
167+
168+
AWS_ECS_SERVICE=$1
169+
update_result=$(aws ecs update-service --cluster $AWS_ECS_CLUSTER --service $AWS_ECS_SERVICE --task-definition $REVISION )
170+
result=$(echo $update_result | $JQ '.service.taskDefinition' )
171+
log $result
172+
if [[ $result != $REVISION ]]; then
173+
#echo "Error updating service."
174+
track_error 1 "ECS updating service."
175+
return 1
176+
fi
177+
178+
echo "Update service intialised successfully for deployment"
179+
return 0
180+
}
181+
182+
check_service_status() {
183+
AWS_ECS_SERVICE=$1
184+
counter=0
185+
sleep 60
186+
servicestatus=`aws ecs describe-services --service $AWS_ECS_SERVICE --cluster $AWS_ECS_CLUSTER | $JQ '.services[].events[0].message'`
187+
while [[ $servicestatus != *"steady state"* ]]
188+
do
189+
echo "Current event message : $servicestatus"
190+
echo "Waiting for 15 sec to check the service status...."
191+
sleep 15
192+
servicestatus=`aws ecs describe-services --service $AWS_ECS_SERVICE --cluster $AWS_ECS_CLUSTER | $JQ '.services[].events[0].message'`
193+
counter=`expr $counter + 1`
194+
if [[ $counter -gt $COUNTER_LIMIT ]] ; then
195+
echo "Service does not reach steady state with in 180 seconds. Please check"
196+
exit 1
197+
fi
198+
done
199+
echo "$servicestatus"
200+
}
201+
202+
# EBS integration
203+
204+
205+
EBS_push_docker_image() {
206+
207+
echo "pushing docker image: ${IMAGE}"
208+
docker push $IMAGE
209+
track_error $? "docker push failed."
210+
211+
}
212+
213+
creating_updating_ebs_docker_json() {
214+
cd $AWS_EBS_EB_DOCKERRUN_TEMPLATE_LOCATION
215+
cat $AWS_EBS_DOCKERRUN_TEMPLATE | sed -e "s/@IMAGE@/${EBS_TAG}/g" > $DOCKERRUN
216+
jar cMf ${EBS_TAG}.zip $DOCKERRUN .ebextensions
217+
echo "pushing ${EBS_TAG}.zip to S3: ${AWS_S3_BUCKET}/${AWS_S3_KEY}"
218+
aws s3api put-object --bucket "${AWS_S3_BUCKET}" --key "${AWS_S3_KEY}" --body ${EBS_TAG}.zip
219+
track_error $? "aws s3api put-object failed."
220+
}
221+
222+
creating_updating_EBS_appversion() {
223+
224+
echo "creating new application version $AWS_EBS_APPVER in ${EBS_APPLICATION_NAME} from s3:${AWS_S3_BUCKET}/${AWS_S3_KEY}"
225+
aws elasticbeanstalk create-application-version --application-name $EBS_APPLICATION_NAME --version-label $AWS_EBS_APPVER --source-bundle S3Bucket="$AWS_S3_BUCKET",S3Key="$AWS_S3_KEY"
226+
track_error $? "aws elasticbeanstalk create-application-version failed."
227+
228+
echo "updating elastic beanstalk environment ${AWS_EB_ENV} with the version ${AWS_EBS_APPVER}."
229+
# assumes beanstalk app for this service has already been created and configured
230+
aws elasticbeanstalk update-environment --environment-name $AWS_EBS_ENV_NAME --version-label $AWS_EBS_APPVER
231+
track_error $? "aws elasticbeanstalk update-environment failed."
232+
233+
}
234+
235+
#Cloud Front DEPLOYMENT
236+
237+
deploy_s3bucket() {
238+
echo -e "application/font-woff\t\t\t\twoff2" >> /etc/mime.types
239+
echo -e "application/font-sfnt\t\t\t\tttf" >> /etc/mime.types
240+
echo -e "application/json\t\t\t\tmap" >> /etc/mime.types
241+
242+
cat /etc/mime.types | grep -i woff
243+
cat /etc/mime.types | grep -i ico
244+
cat /etc/mime.types | grep -i map
245+
cat /etc/mime.types | grep -i ttf
246+
if [ "$NOCACHE" = "true" ]; then
247+
S3_CACHE_OPTIONS="--cache-control private,no-store,no-cache,must-revalidate,max-age=0"
248+
echo "*** Deploying with Cloudfront Cache disabled ***"
249+
else
250+
S3_CACHE_OPTIONS="--cache-control max-age=0,s-maxage=86400"
251+
fi
252+
253+
S3_OPTIONS="--exclude '*.txt' --exclude '*.js' --exclude '*.css'"
254+
echo aws s3 sync $SOURCE_SYNC_PATH s3://${AWS_S3_BUCKET} ${S3_CACHE_OPTIONS} ${S3_OPTIONS}
255+
eval "aws s3 sync --dryrun $SOURCE_SYNC_PATH s3://${AWS_S3_BUCKET} ${S3_CACHE_OPTIONS} ${S3_OPTIONS}"
256+
result=`eval "aws s3 sync $SOURCE_SYNC_PATH s3://${AWS_S3_BUCKET} ${S3_CACHE_OPTIONS} ${S3_OPTIONS}"`
257+
if [ $? -eq 0 ]; then
258+
echo "All html, font, image, map and media files are Deployed without gzip encoding!"
259+
else
260+
echo "Deployment Failed - $result"
261+
exit 1
262+
fi
263+
264+
S3_OPTIONS="--exclude '*' --include '*.txt' --include '*.js' --include '*.css' --content-encoding gzip"
265+
echo aws s3 sync --dryrun $SOURCE_SYNC_PATH s3://${AWS_S3_BUCKET} ${S3_CACHE_OPTIONS} ${S3_OPTIONS}
266+
eval "aws s3 sync --dryrun $SOURCE_SYNC_PATH s3://${AWS_S3_BUCKET} ${S3_CACHE_OPTIONS} ${S3_OPTIONS}"
267+
result=`eval "aws s3 sync $SOURCE_SYNC_PATH s3://${AWS_S3_BUCKET} ${S3_CACHE_OPTIONS} ${S3_OPTIONS}"`
268+
if [ $? -eq 0 ]; then
269+
echo "All txt, css, and js files are Deployed! with gzip"
270+
else
271+
echo "Deployment Failed - $result"
272+
exit 1
273+
fi
274+
}
275+
276+
# Input Collection and validation
277+
input_collection_validation()
278+
{
279+
while getopts .d:h:e:t:v:s:p:g:c:. OPTION
280+
do
281+
case $OPTION in
282+
d)
283+
DEPLOYMENT_TYPE=$OPTARG
284+
;;
285+
h)
286+
usage
287+
exit 1
288+
;;
289+
e)
290+
ENV=$OPTARG
291+
;;
292+
t)
293+
TAG=$OPTARG
294+
;;
295+
c)
296+
NOCACHE=$OPTARG
297+
;;
298+
v)
299+
EBS_APPVER=$OPTARG
300+
;;
301+
s)
302+
SEC_LOCATION=$OPTARG
303+
;;
304+
p)
305+
ECS_TEMPLATE_TYPE=$OPTARG
306+
;;
307+
g)
308+
SHARED_PROPERTY_FILENAME=$OPTARG
309+
;;
310+
311+
?)
312+
log "additional param required"
313+
usage
314+
exit
315+
;;
316+
esac
317+
done
318+
319+
if [ -z $DEPLOYMENT_TYPE ] || [ -z $ENV ] ;
320+
then
321+
log "Param validation error"
322+
usage
323+
exit 1
324+
fi
325+
326+
log "ENV : $ENV"
327+
log "DEPLOYMENT_TYPE : $DEPLOYMENT_TYPE"
328+
ENV_CONFIG=`echo "$ENV" | tr '[:upper:]' '[:lower:]'`
329+
330+
if [ -z $SHARED_PROPERTY_FILENAME ] ;
331+
then
332+
log "No common proerty file has provided"
333+
else
334+
log "Common proerty file name is $SHARED_PROPERTY_FILENAME"
335+
cp $HOME/buildscript/shared-properties/$SHARED_PROPERTY_FILENAME .
336+
source $SHARED_PROPERTY_FILENAME
337+
fi
338+
339+
source $BUILD_VARIABLE_FILE_NAME
340+
#The secret file download and decryption need to be done here
341+
342+
SECRET_FILE_NAME="${APPNAME}-buildsecvar.conf"
343+
if [ "$SEC_LOCATION" = "GIT" ] ;
344+
then
345+
cp $HOME/buildscript/$APPNAME/$SECRET_FILE_NAME.enc .
346+
else
347+
AWS_ACCESS_KEY_ID=$(eval "echo \$${ENV}_AWS_ACCESS_KEY_ID")
348+
AWS_SECRET_ACCESS_KEY=$(eval "echo \$${ENV}_AWS_SECRET_ACCESS_KEY")
349+
AWS_ACCOUNT_ID=$(eval "echo \$${ENV}_AWS_ACCOUNT_ID")
350+
AWS_REGION=$(eval "echo \$${ENV}_AWS_REGION")
351+
configure_aws_cli
352+
aws s3 cp s3://tc-platform-dev/buildconfiguration/$SECRET_FILE_NAME.enc .
353+
fi
354+
if [ -f "$SECRET_FILE_NAME" ];
355+
then
356+
rm -rf $SECRET_FILE_NAME
357+
fi
358+
#ccdecrypt -f $SECRET_FILE_NAME.cpt -K $SECPASSWD
359+
openssl enc -aes-256-cbc -d -md MD5 -in $SECRET_FILE_NAME.enc -out $SECRET_FILE_NAME -k $SECPASSWD
360+
source $SECRET_FILE_NAME
361+
#decrypt
362+
363+
AWS_ACCESS_KEY_ID=$(eval "echo \$${ENV}_AWS_ACCESS_KEY_ID")
364+
AWS_SECRET_ACCESS_KEY=$(eval "echo \$${ENV}_AWS_SECRET_ACCESS_KEY")
365+
AWS_ACCOUNT_ID=$(eval "echo \$${ENV}_AWS_ACCOUNT_ID")
366+
367+
if [ -z $AWS_ACCESS_KEY_ID ] || [ -z $AWS_SECRET_ACCESS_KEY ] || [ -z $AWS_ACCOUNT_ID ] ;
368+
then
369+
log "Secret Parameters are not updated. Please upload the secret file"
370+
usage
371+
exit 1
372+
fi
373+
374+
AWS_REGION=$(eval "echo \$${ENV}_AWS_REGION")
375+
if [ "$DEPLOYMENT_TYPE" == "ECS" ]
376+
then
377+
AWS_REPOSITORY=$(eval "echo \$${ENV}_AWS_REPOSITORY")
378+
AWS_ECS_CLUSTER=$(eval "echo \$${ENV}_AWS_ECS_CLUSTER")
379+
AWS_ECS_SERVICE=$(eval "echo \$${ENV}_AWS_ECS_SERVICE")
380+
AWS_ECS_TASK_FAMILY=$(eval "echo \$${ENV}_AWS_ECS_TASK_FAMILY")
381+
AWS_ECS_CONTAINER_NAME=$(eval "echo \$${ENV}_AWS_ECS_CONTAINER_NAME")
382+
AWS_ECS_TEMPLATE_UPDATE_SCRIPT=$(eval "echo \$${ENV}_AWS_ECS_TEMPLATE_UPDATE_SCRIPT")
383+
#AWS_ECS_TASKDEF_FILE=$(eval "echo \$${ENV}_AWS_ECS_TASKDEF_FILE")
384+
#AWS_ECS_VOLUMEDEF_FILE=$(eval "echo \$${ENV}_AWS_ECS_VOLUMEDEF_FILE")
385+
ECS_TAG=$TAG
386+
if [ -z $AWS_REGION ] || [ -z $AWS_REPOSITORY ] || [ -z $AWS_ECS_CLUSTER ] || [ -z $AWS_ECS_SERVICE ] || [ -z $AWS_ECS_TASK_FAMILY ] || [ -z $AWS_ECS_CONTAINER_NAME ] || [ -z $AWS_ECS_TEMPLATE_UPDATE_SCRIPT ] || [ -z $ECS_TAG ];
387+
then
388+
log "Build varibale are not updated. Please update the Build variable file"
389+
usage
390+
exit 1
391+
fi
392+
log "AWS_REPOSITORY : $AWS_REPOSITORY"
393+
log "AWS_ECS_CLUSTER : $AWS_ECS_CLUSTER"
394+
log "AWS_ECS_SERVICE : $AWS_ECS_SERVICE"
395+
log "AWS_ECS_TASK_FAMILY : $AWS_ECS_TASK_FAMILY"
396+
log "AWS_ECS_CONTAINER_NAME : $AWS_ECS_CONTAINER_NAME"
397+
log "AWS_ECS_TEMPLATE_UPDATE_SCRIPT : $AWS_ECS_TEMPLATE_UPDATE_SCRIPT"
398+
log "ECS_TAG : $ECS_TAG"
399+
fi
400+
401+
if [ "$DEPLOYMENT_TYPE" == "EBS" ]
402+
then
403+
EBS_APPLICATION_NAME=$(eval "echo \$${ENV}_EBS_APPLICATION_NAME")
404+
AWS_EBS_ENV_NAME=$(eval "echo \$${ENV}_AWS_EBS_ENV_NAME")
405+
AWS_EBS_APPVER="${AWS_EBS_ENV_NAME}-${EBS_APPVER}"
406+
EBS_TAG="${IMAGE_NAME}:${ENV_CONFIG}.${EBS_APPVER}"
407+
IMAGE="${DOCKER_REGISTRY_NAME}/${EBS_TAG}"
408+
AWS_S3_BUCKET=$(eval "echo \$${ENV}_AWS_S3_BUCKET")
409+
AWS_S3_KEY_LOCATION=$(eval "echo \$${ENV}_AWS_S3_KEY_LOCATION")
410+
if [ "$AWS_S3_KEY_LOCATION" = "" ] ;
411+
then
412+
AWS_S3_KEY="${EBS_TAG}"
413+
else
414+
AWS_S3_KEY="$AWS_S3_KEY_LOCATION/${EBS_TAG}"
415+
fi
416+
AWS_EBS_EB_DOCKERRUN_TEMPLATE_LOCATION=$(eval "echo \$${ENV}_AWS_EBS_EB_DOCKERRUN_TEMPLATE_LOCATION")
417+
AWS_EBS_DOCKERRUN_TEMPLATE=$(eval "echo \$${ENV}_AWS_EBS_DOCKERRUN_TEMPLATE")
418+
if [ -z $EBS_APPLICATION_NAME ] || [ -z $AWS_EBS_ENV_NAME ] || [ -z $EBS_APPVER ] || [ -z $AWS_EBS_APPVER ] || [ -z $EBS_TAG ] || [ -z $IMAGE ] || [ -z $AWS_S3_BUCKET ] || [ -z $AWS_EBS_EB_DOCKERRUN_TEMPLATE_LOCATION ] || [ -z $AWS_EBS_DOCKERRUN_TEMPLATE ];
419+
then
420+
log "Build varibale are not updated. Please update the Build variable file"
421+
usage
422+
exit 1
423+
fi
424+
log "EBS_APPLICATION_NAME : $EBS_APPLICATION_NAME"
425+
log "EBS_APPVER : $EBS_APPVER"
426+
log "AWS_EBS_APPVER : $AWS_EBS_APPVER"
427+
log "EBS_TAG : $EBS_TAG"
428+
log "IMAGE : $IMAGE"
429+
log "AWS_S3_BUCKET : $AWS_S3_BUCKET"
430+
log "AWS_S3_KEY : $AWS_S3_KEY"
431+
log "AWS_EB_ENV : $AWS_EBS_ENV_NAME"
432+
fi
433+
if [ "$DEPLOYMENT_TYPE" == "CFRONT" ]
434+
then
435+
AWS_S3_BUCKET=$(eval "echo \$${ENV}_AWS_S3_BUCKET")
436+
SOURCE_SYNC_PATH=$(eval "echo \$${ENV}_SOURCE_SYNC_PATH")
437+
438+
if [ -z $AWS_S3_BUCKET ] || [ -z $SOURCE_SYNC_PATH ];
439+
then
440+
log "Build varibale are not updated. Please update the Build variable file"
441+
usage
442+
exit 1
443+
fi
444+
log "AWS_S3_BUCKET : $AWS_S3_BUCKET"
445+
log "SOURCE_SYNC_PATH : $SOURCE_SYNC_PATH"
446+
fi
447+
}
448+
449+
# Main
450+
451+
main()
452+
{
453+
454+
input_collection_validation $@
455+
456+
if [ "$DEPLOYMENT_TYPE" == "ECS" ]
457+
then
458+
configure_aws_cli
459+
ECS_push_ecr_image
460+
ECS_update_register_task_definition
461+
AWS_ECS_SERVICE_NAMES=`echo ${AWS_ECS_SERVICE} | sed 's/,/ /g' | sed 'N;s/\n//' `
462+
IFS=' ' read -a AWS_ECS_SERVICES <<< $AWS_ECS_SERVICE_NAMES
463+
if [ ${#AWS_ECS_SERVICES[@]} -gt 0 ]; then
464+
echo "${#AWS_ECS_SERVICES[@]} service are going to be updated"
465+
for AWS_ECS_SERVICE_NAME in "${AWS_ECS_SERVICES[@]}"
466+
do
467+
echo "updating ECS Cluster Service - $AWS_ECS_SERVICE_NAME"
468+
ECS_deploy_cluster "$AWS_ECS_SERVICE_NAME"
469+
check_service_status "$AWS_ECS_SERVICE_NAME"
470+
echo $REVISION
471+
done
472+
else
473+
echo "Kindly check the service name in Parameter"
474+
usage
475+
exit 1
476+
fi
477+
478+
fi
479+
480+
481+
if [ "$DEPLOYMENT_TYPE" == "EBS" ]
482+
then
483+
configure_aws_cli
484+
configure_docker_private_login
485+
EBS_push_docker_image
486+
creating_updating_ebs_docker_json
487+
creating_updating_EBS_appversion
488+
fi
489+
490+
if [ "$DEPLOYMENT_TYPE" == "CFRONT" ]
491+
then
492+
configure_aws_cli
493+
deploy_s3bucket
494+
fi
495+
}
496+
main $@
497+

0 commit comments

Comments
 (0)
Please sign in to comment.