1
1
#! /bin/bash
2
2
3
+
3
4
# Variable Declaration
4
5
JQ=" jq --raw-output --exit-status"
5
6
DEPLOYMENT_TYPE=" "
@@ -14,22 +15,32 @@ AWS_SECRET_ACCESS_KEY=""
14
15
AWS_ACCOUNT_ID=" "
15
16
AWS_REGION=" "
16
17
TAG=" "
17
- SEC_LOCATION =" "
18
+ SEC_LIST =" "
18
19
COUNTER_LIMIT=12
20
+
19
21
# Varibles specific to ECS
20
22
AWS_REPOSITORY=" "
21
23
AWS_ECS_CLUSTER=" "
22
24
AWS_ECS_SERVICE=" "
23
25
AWS_ECS_TASK_FAMILY=" "
24
26
AWS_ECS_CONTAINER_NAME=" "
25
- AWS_ECS_TEMPLATE=" container.template"
26
- AWS_ECS_VOLUME_TEMPLATE=" "
27
27
ECS_TAG=" "
28
28
REVISION=" "
29
- ECS_TEMPLATE_TYPE=" CONTAINER "
29
+ ECS_TEMPLATE_TYPE=" EC2 "
30
30
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=" "
31
38
32
39
# 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"
33
44
EBS_APPLICATION_NAME=" "
34
45
EBS_APPVER=" "
35
46
EBS_TAG=" "
@@ -39,14 +50,17 @@ AWS_S3_BUCKET=""
39
50
AWS_S3_KEY=" "
40
51
AWS_EB_ENV=" "
41
52
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")
44
55
AWS_S3_KEY_LOCATION=" "
45
56
46
57
# variable for cloud front
47
58
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=" "
50
64
51
65
# FUNCTIONS
52
66
# usage Function - provides information like how to execute the script
@@ -105,62 +119,241 @@ configure_docker_private_login() {
105
119
# ECS Deployment Functions
106
120
107
121
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
108
130
log " Pushing Docker Image..."
109
131
eval $( aws ecr get-login --region $AWS_REGION --no-include-email)
110
132
docker push $AWS_ACCOUNT_ID .dkr.ecr.$AWS_REGION .amazonaws.com/$AWS_REPOSITORY :$ECS_TAG
111
133
track_error $? " ECS ECR image push"
112
134
log " Docker Image published."
113
135
}
114
136
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 ];
118
310
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' )
130
316
fi
131
- if [ " $ECS_TEMPLATE_TYPE " = " CONTAINERVOLUME" ] ;
317
+ # Updating Fargate Memory
318
+ if [ -z $AWS_ECS_FARGATE_MEMORY ];
132
319
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' )
145
325
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 ];
147
332
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 " ];
151
344
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
153
347
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
155
350
log " Revision: $REVISION "
156
351
else
157
352
track_error 1 " Task Def registration"
158
353
log " Failed to register task definition"
159
354
return 1
160
355
fi
161
- fi
162
- fi
163
-
356
+ fi
164
357
}
165
358
166
359
ECS_deploy_cluster () {
@@ -199,36 +392,59 @@ check_service_status() {
199
392
echo " $servicestatus "
200
393
}
201
394
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
+ }
202
408
# EBS integration
203
409
204
410
205
411
EBS_push_docker_image () {
206
412
207
413
echo " pushing docker image: ${IMAGE} "
414
+ IMAGE=" ${DOCKER_REGISTRY_NAME} /${IMG_WITH_EBS_TAG} "
208
415
docker push $IMAGE
209
416
track_error $? " docker push failed."
210
417
211
418
}
212
419
213
420
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
220
436
}
221
437
222
438
creating_updating_EBS_appversion () {
223
439
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."
227
443
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."
232
448
233
449
}
234
450
@@ -243,17 +459,17 @@ deploy_s3bucket() {
243
459
cat /etc/mime.types | grep -i ico
244
460
cat /etc/mime.types | grep -i map
245
461
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
247
465
S3_CACHE_OPTIONS=" --cache-control private,no-store,no-cache,must-revalidate,max-age=0"
248
466
echo " *** Deploying with Cloudfront Cache disabled ***"
249
- else
250
- S3_CACHE_OPTIONS=" --cache-control max-age=0,s-maxage=86400"
251
467
fi
252
468
253
469
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} " `
257
473
if [ $? -eq 0 ]; then
258
474
echo " All html, font, image, map and media files are Deployed without gzip encoding!"
259
475
else
@@ -262,21 +478,110 @@ deploy_s3bucket() {
262
478
fi
263
479
264
480
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} " `
268
484
if [ $? -eq 0 ]; then
269
485
echo " All txt, css, and js files are Deployed! with gzip"
270
486
else
271
487
echo " Deployment Failed - $result "
272
488
exit 1
273
489
fi
274
490
}
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
+ # }
275
580
276
581
# Input Collection and validation
277
- input_collection_validation ()
582
+ input_parsing_validation ()
278
583
{
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
280
585
do
281
586
case $OPTION in
282
587
d)
286
591
usage
287
592
exit 1
288
593
;;
594
+ i)
595
+ APP_IMAGE_NAME=$OPTARG
596
+ ;;
289
597
e)
290
598
ENV=$OPTARG
291
599
;;
292
600
t)
293
601
TAG=$OPTARG
294
602
;;
295
603
c)
296
- NOCACHE =$OPTARG
604
+ CFCACHE =$OPTARG
297
605
;;
298
606
v)
299
607
EBS_APPVER=$OPTARG
300
608
;;
301
609
s)
302
- SEC_LOCATION =$OPTARG
610
+ SEC_LIST =$OPTARG
303
611
;;
304
612
p)
305
613
ECS_TEMPLATE_TYPE=$OPTARG
@@ -325,124 +633,112 @@ fi
325
633
326
634
log " ENV : $ENV "
327
635
log " DEPLOYMENT_TYPE : $DEPLOYMENT_TYPE "
636
+ log " app variable list : $SEC_LIST "
328
637
ENV_CONFIG=` echo " $ENV " | tr ' [:upper:]' ' [:lower:]' `
329
638
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
338
640
339
- source $BUILD_VARIABLE_FILE_NAME
340
- # The secret file download and decryption need to be done here
341
641
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
362
643
363
644
AWS_ACCESS_KEY_ID=$( eval " echo \$ ${ENV} _AWS_ACCESS_KEY_ID" )
364
645
AWS_SECRET_ACCESS_KEY=$( eval " echo \$ ${ENV} _AWS_SECRET_ACCESS_KEY" )
365
646
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 ] ;
368
649
then
369
- log " Secret Parameters are not updated. Please upload the secret file "
650
+ log " AWS Secret Parameters are not configured in circleci/environment "
370
651
usage
371
652
exit 1
653
+ else
654
+ configure_aws_cli
655
+ # aws configure list
372
656
fi
373
657
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
375
667
if [ " $DEPLOYMENT_TYPE " == " ECS" ]
376
668
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
669
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 ];
387
673
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 "
389
675
usage
390
676
exit 1
391
677
fi
392
678
log " AWS_REPOSITORY : $AWS_REPOSITORY "
393
679
log " AWS_ECS_CLUSTER : $AWS_ECS_CLUSTER "
394
- log " AWS_ECS_SERVICE : $AWS_ECS_SERVICE "
680
+ log " AWS_ECS_SERVICE_NAMES : $AWS_ECS_SERVICE "
395
681
log " AWS_ECS_TASK_FAMILY : $AWS_ECS_TASK_FAMILY "
396
682
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 "
399
685
fi
400
-
686
+ # EBS parameter validation
401
687
if [ " $DEPLOYMENT_TYPE " == " EBS" ]
402
688
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
+
410
697
if [ " $AWS_S3_KEY_LOCATION " = " " ] ;
411
698
then
412
- AWS_S3_KEY=" ${EBS_TAG } "
699
+ AWS_S3_KEY=" ${IMG_WITH_EBS_TAG } "
413
700
else
414
- AWS_S3_KEY=" $AWS_S3_KEY_LOCATION /${EBS_TAG } "
701
+ AWS_S3_KEY=" $AWS_S3_KEY_LOCATION /${IMG_WITH_EBS_TAG } "
415
702
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 ] ;
419
706
then
420
707
log " Build varibale are not updated. Please update the Build variable file"
421
708
usage
422
709
exit 1
423
710
fi
424
- log " EBS_APPLICATION_NAME : $EBS_APPLICATION_NAME "
425
- log " EBS_APPVER : $EBS_APPVER "
711
+ log " EBS_APPLICATION_NAME : $AWS_EBS_APPLICATION_NAME "
426
712
log " AWS_EBS_APPVER : $AWS_EBS_APPVER "
427
713
log " EBS_TAG : $EBS_TAG "
428
- log " IMAGE : $IMAGE "
429
714
log " AWS_S3_BUCKET : $AWS_S3_BUCKET "
430
715
log " AWS_S3_KEY : $AWS_S3_KEY "
431
716
log " AWS_EB_ENV : $AWS_EBS_ENV_NAME "
432
717
fi
718
+ # CFRONT parameter validation
433
719
if [ " $DEPLOYMENT_TYPE " == " CFRONT" ]
434
720
then
435
- AWS_S3_BUCKET=$( eval " echo \$ ${ENV} _AWS_S3_BUCKET" )
436
- SOURCE_SYNC_PATH=$( eval " echo \$ ${ENV} _SOURCE_SYNC_PATH" )
437
721
438
- if [ -z $AWS_S3_BUCKET ] || [ -z $SOURCE_SYNC_PATH ];
722
+ if [ -z $AWS_S3_BUCKET ] || [ -z $AWS_S3_SOURCE_SYNC_PATH ];
439
723
then
440
724
log " Build varibale are not updated. Please update the Build variable file"
441
725
usage
442
726
exit 1
443
727
fi
444
728
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 "
446
742
fi
447
743
}
448
744
451
747
main ()
452
748
{
453
749
454
- input_collection_validation $@
750
+ input_parsing_validation $@
455
751
456
752
if [ " $DEPLOYMENT_TYPE " == " ECS" ]
457
753
then
458
- configure_aws_cli
754
+ validate_update_loggroup
459
755
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
462
761
IFS=' ' read -a AWS_ECS_SERVICES <<< $AWS_ECS_SERVICE_NAMES
463
762
if [ ${# AWS_ECS_SERVICES[@]} -gt 0 ]; then
464
763
echo " ${# AWS_ECS_SERVICES[@]} service are going to be updated"
467
766
echo " updating ECS Cluster Service - $AWS_ECS_SERVICE_NAME "
468
767
ECS_deploy_cluster " $AWS_ECS_SERVICE_NAME "
469
768
check_service_status " $AWS_ECS_SERVICE_NAME "
470
- echo $REVISION
769
+ # echo $REVISION
471
770
done
472
771
else
473
772
echo " Kindly check the service name in Parameter"
480
779
481
780
if [ " $DEPLOYMENT_TYPE " == " EBS" ]
482
781
then
483
- configure_aws_cli
782
+ # configure_aws_cli
484
783
configure_docker_private_login
485
784
EBS_push_docker_image
486
785
creating_updating_ebs_docker_json
489
788
490
789
if [ " $DEPLOYMENT_TYPE " == " CFRONT" ]
491
790
then
492
- configure_aws_cli
493
791
deploy_s3bucket
494
792
fi
793
+
794
+ if [ " $DEPLOYMENT_TYPE " == " LAMBDA" ]
795
+ then
796
+ configure_Lambda_template
797
+ deploy_lambda_package
798
+ fi
495
799
}
496
800
main $@
497
801
0 commit comments