@@ -40,6 +40,7 @@ volcount=0
4040template=" "
4141TEMPLATE_SKELETON_FILE=" base_template_v2.json"
4242APP_IMAGE_NAME=" "
43+ DEPLOYCATEGORY=" "
4344
4445# variable specific to EBS
4546DOCKERRUN=" Dockerrun.aws.json"
@@ -140,7 +141,24 @@ ECS_push_ecr_image() {
140141 track_error $? " ECS ECR image push"
141142 log " Docker Image published."
142143}
143-
144+ # ===============
145+ ECSCLI_push_ecr_image () {
146+ ECS_REPONAME=$1
147+ IMAGE_NAME=$2
148+ if [ -z " $IMAGE_NAME " ];
149+ then
150+ log " Image has followed standard format"
151+ else
152+ log " Image does not follow stanard format. Modifying the image and updating the ECS_TAG"
153+ docker tag $IMAGE_NAME :$ECS_TAG $AWS_ACCOUNT_ID .dkr.ecr.$AWS_REGION .amazonaws.com/$ECS_REPONAME :$CIRCLE_BUILD_NUM
154+ ECS_TAG=$CIRCLE_BUILD_NUM
155+ fi
156+ log " Pushing Docker Image..."
157+ eval $( aws ecr get-login --region $AWS_REGION --no-include-email)
158+ docker push $AWS_ACCOUNT_ID .dkr.ecr.$AWS_REGION .amazonaws.com/$ECS_REPONAME :$ECS_TAG
159+ track_error $? " ECS ECR image push"
160+ log " Docker Image published."
161+ }
144162# ================
145163portmapping () {
146164hostport=$1
667685 g)
668686 SHARED_PROPERTY_FILENAME=$OPTARG
669687 ;;
670-
688+ m)
689+ DEPLOYCATEGORY=$OPTARG
690+ ;;
671691 ? )
672692 log " additional param required"
673693 usage
@@ -719,21 +739,34 @@ download_envfile
719739if [ " $DEPLOYMENT_TYPE " == " ECS" ]
720740then
721741 ECS_TAG=$TAG
722- cp $HOME /buildscript/$TEMPLATE_SKELETON_FILE .
742+ if [ " $DEPLOYCATEGORY " == " CLI" ]
743+ then
744+ if [ -z $AWS_REPOSITORY ] || [ -z $AWS_ECS_CLUSTER ] || [ -z $AWS_ECS_SERVICE ] || [ -z $ECS_TAG ];
745+ then
746+ 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"
747+ usage
748+ exit 1
749+ fi
750+ DEPLOYCATEGORYNAME=" ECSCLI"
751+ else
752+ cp $HOME /buildscript/$TEMPLATE_SKELETON_FILE .
723753
724- 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 ];
725- then
726- 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"
727- usage
728- exit 1
729- fi
754+ 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 ];
755+ then
756+ 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"
757+ usage
758+ exit 1
759+ fi
760+ DEPLOYCATEGORYNAME=" AWSCLI"
761+ fi
730762 log " AWS_REPOSITORY : $AWS_REPOSITORY "
731763 log " AWS_ECS_CLUSTER : $AWS_ECS_CLUSTER "
732764 log " AWS_ECS_SERVICE_NAMES : $AWS_ECS_SERVICE "
733765 log " AWS_ECS_TASK_FAMILY : $AWS_ECS_TASK_FAMILY "
734766 log " AWS_ECS_CONTAINER_NAME : $AWS_ECS_CONTAINER_NAME "
735767 log " AWS_ECS_PORTS : $AWS_ECS_PORTS "
736768 log " ECS_TAG : $ECS_TAG "
769+ log " DEPLOY TYPE : $DEPLOYCATEGORYNAME "
737770fi
738771# EBS parameter validation
739772if [ " $DEPLOYMENT_TYPE " == " EBS" ]
@@ -811,29 +844,100 @@ input_parsing_validation $@
811844
812845if [ " $DEPLOYMENT_TYPE " == " ECS" ]
813846then
814- validate_update_loggroup
815- ECS_push_ecr_image
816- ECS_template_create_register
817- echo " value of AWS_ECS_SERVICE " $AWS_ECS_SERVICE
818- AWS_ECS_SERVICE_NAMES=$( echo ${AWS_ECS_SERVICE} | sed ' s/,/ /g' )
819- # AWS_ECS_SERVICE_NAMES=$(echo ${AWS_ECS_SERVICE} | sed 's/,/ /g' | sed 'N;s/\n//')
820- echo " value of AWS_ECS_SERVICE_NAMES " $AWS_ECS_SERVICE_NAMES
821- IFS=' ' read -a AWS_ECS_SERVICES <<< $AWS_ECS_SERVICE_NAMES
822- if [ ${# AWS_ECS_SERVICES[@]} -gt 0 ]; then
823- echo " ${# AWS_ECS_SERVICES[@]} service are going to be updated"
824- for AWS_ECS_SERVICE_NAME in " ${AWS_ECS_SERVICES[@]} "
825- do
826- echo " updating ECS Cluster Service - $AWS_ECS_SERVICE_NAME "
827- ECS_deploy_cluster " $AWS_ECS_SERVICE_NAME "
828- check_service_status " $AWS_ECS_SERVICE_NAME "
829- # echo $REVISION
830- done
831- else
832- echo " Kindly check the service name in Parameter"
833- usage
834- exit 1
847+ if [ " $DEPLOYCATEGORY " == " CLI" ]
848+ then
849+ eval $( aws ecr get-login --region $AWS_REGION --no-include-email)
850+ # Moving image to repository
851+ if [ -z $APP_IMAGE_NAME ];
852+ then
853+ echo " value of AWS_REPOSITORY " $AWS_REPOSITORY
854+ AWS_REPOSITORY_NAMES=$( echo ${AWS_REPOSITORY} | sed ' s/,/ /g' )
855+ echo " value of AWS_REPOSITORY_NAMES " $AWS_REPOSITORY_NAMES
856+ IFS=' ' read -a AWS_REPOSITORY_NAMES_ARRAY <<< $AWS_REPOSITORY_NAMES
857+ if [ ${# AWS_REPOSITORY_NAMES_ARRAY[@]} -gt 0 ]; then
858+ echo " ${# AWS_REPOSITORY_NAMES_ARRAY[@]} repo push initalisation"
859+ for AWS_ECS_REPO_NAME in " ${AWS_REPOSITORY_NAMES_ARRAY[@]} "
860+ do
861+ echo " updating reposioty - $AWS_ECS_REPO_NAME "
862+ ECSCLI_push_ecr_image $AWS_ECS_REPO_NAME
863+ # echo $REVISION
864+ done
865+ else
866+ echo " Kindly check the Repository name has Parameter"
867+ usage
868+ exit 1
869+ fi
870+ else
871+ # if appp images details are provided
872+
873+ echo " value of AWS_REPOSITORY " $AWS_REPOSITORY
874+ AWS_REPOSITORY_NAMES=$( echo ${AWS_REPOSITORY} | sed ' s/,/ /g' )
875+ echo " value of AWS_REPOSITORY_NAMES " $AWS_REPOSITORY_NAMES
876+ echo " value of image name provided " $APP_IMAGE_NAME
877+ APP_IMAGE_NAMES=$( echo ${APP_IMAGE_NAME} | sed ' s/,/ /g' )
878+ IFS=' ' read -a AWS_REPOSITORY_NAMES_ARRAY <<< $AWS_REPOSITORY_NAMES
879+ IFS=' ' read -a APP_IMAGE_NAMES_ARRAY <<< $APP_IMAGE_NAMES
880+ echo " AWS REPO COUNT NEED TO BE UPDATE ${# AWS_REPOSITORY_NAMES_ARRAY[@]} , APP image count provided in option ${# APP_IMAGE_NAMES_ARRAY[@]} "
881+ if [ " ${# AWS_REPOSITORY_NAMES_ARRAY[@]} " = " ${# APP_IMAGE_NAMES_ARRAY[@]} " ];
882+ then
883+ ecstempcount=0
884+ while [ $ecstempcount -lt ${# AWS_REPOSITORY_NAMES_ARRAY[@]} ]
885+ do
886+ echo " ${AWS_REPOSITORY_NAMES_ARRAY[$count]} , ${APP_IMAGE_NAMES_ARRAY[$count]} "
887+ ECSCLI_push_ecr_image " ${AWS_REPOSITORY_NAMES_ARRAY[$count]} " " ${APP_IMAGE_NAMES_ARRAY[$count]} "
888+ ecstempcount=` expr $ecstempcount + 1`
889+ done
890+ else
891+ echo " Kindly check the image name in Parameter"
892+ usage
893+ exit 1
894+ fi
895+ fi
896+ # Configurong cluster
897+ ecs-cli configure --region us-east-1 --cluster $AWS_ECS_CLUSTER
898+ # updating service
899+ echo " value of AWS_ECS_SERVICE " $AWS_ECS_SERVICE
900+ AWS_ECS_SERVICE_NAMES=$( echo ${AWS_ECS_SERVICE} | sed ' s/,/ /g' )
901+ # AWS_ECS_SERVICE_NAMES=$(echo ${AWS_ECS_SERVICE} | sed 's/,/ /g' | sed 'N;s/\n//')
902+ echo " value of AWS_ECS_SERVICE_NAMES " $AWS_ECS_SERVICE_NAMES
903+ IFS=' ' read -a AWS_ECS_SERVICES <<< $AWS_ECS_SERVICE_NAMES
904+ if [ ${# AWS_ECS_SERVICES[@]} -gt 0 ]; then
905+ echo " ${# AWS_ECS_SERVICES[@]} service are going to be updated"
906+ for AWS_ECS_SERVICE_NAME in " ${AWS_ECS_SERVICES[@]} "
907+ do
908+ echo " updating ECS Cluster Service - $AWS_ECS_SERVICE_NAME "
909+ ecs-cli compose --project-name " $AWS_ECS_SERVICE_NAME " service up
910+ # echo $REVISION
911+ done
912+ else
913+ echo " Kindly check the service name in Parameter"
914+ usage
915+ exit 1
916+ fi
917+ else
918+ validate_update_loggroup
919+ ECS_push_ecr_image
920+ ECS_template_create_register
921+ echo " value of AWS_ECS_SERVICE " $AWS_ECS_SERVICE
922+ AWS_ECS_SERVICE_NAMES=$( echo ${AWS_ECS_SERVICE} | sed ' s/,/ /g' )
923+ # AWS_ECS_SERVICE_NAMES=$(echo ${AWS_ECS_SERVICE} | sed 's/,/ /g' | sed 'N;s/\n//')
924+ echo " value of AWS_ECS_SERVICE_NAMES " $AWS_ECS_SERVICE_NAMES
925+ IFS=' ' read -a AWS_ECS_SERVICES <<< $AWS_ECS_SERVICE_NAMES
926+ if [ ${# AWS_ECS_SERVICES[@]} -gt 0 ]; then
927+ echo " ${# AWS_ECS_SERVICES[@]} service are going to be updated"
928+ for AWS_ECS_SERVICE_NAME in " ${AWS_ECS_SERVICES[@]} "
929+ do
930+ echo " updating ECS Cluster Service - $AWS_ECS_SERVICE_NAME "
931+ ECS_deploy_cluster " $AWS_ECS_SERVICE_NAME "
932+ check_service_status " $AWS_ECS_SERVICE_NAME "
933+ # echo $REVISION
934+ done
935+ else
936+ echo " Kindly check the service name in Parameter"
937+ usage
938+ exit 1
939+ fi
835940 fi
836-
837941fi
838942
839943
0 commit comments