@@ -40,6 +40,8 @@ volcount=0
40
40
template=" "
41
41
TEMPLATE_SKELETON_FILE=" base_template_v2.json"
42
42
APP_IMAGE_NAME=" "
43
+ DEPLOYCATEGORY=" "
44
+ ECSCLI_ENVFILE=" api.env"
43
45
44
46
# variable specific to EBS
45
47
DOCKERRUN=" Dockerrun.aws.json"
@@ -140,7 +142,45 @@ ECS_push_ecr_image() {
140
142
track_error $? " ECS ECR image push"
141
143
log " Docker Image published."
142
144
}
145
+ # ===============
146
+ ECSCLI_push_ecr_image () {
147
+ ECS_REPONAME=$1
148
+ IMAGE_NAME=$2
149
+ if [ -z " $IMAGE_NAME " ];
150
+ then
151
+ log " Image has followed standard format"
152
+ else
153
+ log " Image does not follow stanard format. Modifying the image and updating the ECS_TAG"
154
+ docker tag $IMAGE_NAME :$ECS_TAG $AWS_ACCOUNT_ID .dkr.ecr.$AWS_REGION .amazonaws.com/$ECS_REPONAME :$CIRCLE_BUILD_NUM
155
+ ECS_TAG=$CIRCLE_BUILD_NUM
156
+ fi
157
+ log " Pushing Docker Image..."
158
+ eval $( aws ecr get-login --region $AWS_REGION --no-include-email)
159
+ docker push $AWS_ACCOUNT_ID .dkr.ecr.$AWS_REGION .amazonaws.com/$ECS_REPONAME :$ECS_TAG
160
+ track_error $? " ECS ECR image push"
161
+ log " Docker Image published."
162
+ }
163
+ # ================
164
+ ECSCLI_update_env ()
165
+ {
166
+ Buffer_seclist=$( echo $SEC_LIST | sed ' s/,/ /g' )
167
+ for listname in $Buffer_seclist ;
168
+ do
169
+ local o=$IFS
170
+ IFS=$( echo -en " \n\b" )
171
+ envvars=$( cat $listname .json | jq -r ' . ' | jq ' . | to_entries[] | { "name": .key , "value": .value } ' | jq -s . )
172
+ log " vars are fetched"
143
173
174
+ for s in $( echo $envvars | jq -c " .[]" ) ; do
175
+ # echo $envvars
176
+ varname=$( echo $s | jq -r " .name" )
177
+ varvalue=$( echo $s | jq -r " .value" )
178
+ envaddition " $varname " " $varvalue "
179
+ echo " $varname " =" \" $varvalue \" " >> $ECSCLI_ENVFILE
180
+ done
181
+ IFS=$o
182
+ done
183
+ }
144
184
# ================
145
185
portmapping () {
146
186
hostport=$1
@@ -633,7 +673,7 @@ deploy_lambda_package()
633
673
# Input Collection and validation
634
674
input_parsing_validation ()
635
675
{
636
- while getopts .d:h:i:e:t:v:s:p:g:c:. OPTION
676
+ while getopts .d:h:i:e:t:v:s:p:g:c:m: . OPTION
637
677
do
638
678
case $OPTION in
639
679
d)
667
707
g)
668
708
SHARED_PROPERTY_FILENAME=$OPTARG
669
709
;;
670
-
710
+ m)
711
+ DEPLOYCATEGORY=$OPTARG
712
+ ;;
671
713
? )
672
714
log " additional param required"
673
715
usage
@@ -719,21 +761,34 @@ download_envfile
719
761
if [ " $DEPLOYMENT_TYPE " == " ECS" ]
720
762
then
721
763
ECS_TAG=$TAG
722
- cp $HOME /buildscript/$TEMPLATE_SKELETON_FILE .
764
+ if [ " $DEPLOYCATEGORY " == " CLI" ]
765
+ then
766
+ if [ -z $AWS_REPOSITORY ] || [ -z $AWS_ECS_CLUSTER ] || [ -z $AWS_ECS_SERVICE ] || [ -z $ECS_TAG ];
767
+ then
768
+ 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"
769
+ usage
770
+ exit 1
771
+ fi
772
+ DEPLOYCATEGORYNAME=" ECSCLI"
773
+ else
774
+ cp $HOME /buildscript/$TEMPLATE_SKELETON_FILE .
723
775
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
776
+ 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 ];
777
+ then
778
+ 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"
779
+ usage
780
+ exit 1
781
+ fi
782
+ DEPLOYCATEGORYNAME=" AWSCLI"
783
+ fi
730
784
log " AWS_REPOSITORY : $AWS_REPOSITORY "
731
785
log " AWS_ECS_CLUSTER : $AWS_ECS_CLUSTER "
732
786
log " AWS_ECS_SERVICE_NAMES : $AWS_ECS_SERVICE "
733
787
log " AWS_ECS_TASK_FAMILY : $AWS_ECS_TASK_FAMILY "
734
788
log " AWS_ECS_CONTAINER_NAME : $AWS_ECS_CONTAINER_NAME "
735
789
log " AWS_ECS_PORTS : $AWS_ECS_PORTS "
736
790
log " ECS_TAG : $ECS_TAG "
791
+ log " DEPLOY TYPE : $DEPLOYCATEGORYNAME "
737
792
fi
738
793
# EBS parameter validation
739
794
if [ " $DEPLOYMENT_TYPE " == " EBS" ]
@@ -811,29 +866,102 @@ input_parsing_validation $@
811
866
812
867
if [ " $DEPLOYMENT_TYPE " == " ECS" ]
813
868
then
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
869
+ if [ " $DEPLOYCATEGORY " == " CLI" ]
870
+ then
871
+ eval $( aws ecr get-login --region $AWS_REGION --no-include-email)
872
+ # Moving image to repository
873
+ if [ -z $APP_IMAGE_NAME ];
874
+ then
875
+ echo " value of AWS_REPOSITORY " $AWS_REPOSITORY
876
+ AWS_REPOSITORY_NAMES=$( echo ${AWS_REPOSITORY} | sed ' s/,/ /g' )
877
+ echo " value of AWS_REPOSITORY_NAMES " $AWS_REPOSITORY_NAMES
878
+ IFS=' ' read -a AWS_REPOSITORY_NAMES_ARRAY <<< $AWS_REPOSITORY_NAMES
879
+ if [ ${# AWS_REPOSITORY_NAMES_ARRAY[@]} -gt 0 ]; then
880
+ echo " ${# AWS_REPOSITORY_NAMES_ARRAY[@]} repo push initalisation"
881
+ for AWS_ECS_REPO_NAME in " ${AWS_REPOSITORY_NAMES_ARRAY[@]} "
882
+ do
883
+ echo " updating reposioty - $AWS_ECS_REPO_NAME "
884
+ ECSCLI_push_ecr_image $AWS_ECS_REPO_NAME
885
+ # echo $REVISION
886
+ done
887
+ else
888
+ echo " Kindly check the Repository name has Parameter"
889
+ usage
890
+ exit 1
891
+ fi
892
+ else
893
+ # if appp images details are provided
894
+
895
+ echo " value of AWS_REPOSITORY " $AWS_REPOSITORY
896
+ AWS_REPOSITORY_NAMES=$( echo ${AWS_REPOSITORY} | sed ' s/,/ /g' )
897
+ echo " value of AWS_REPOSITORY_NAMES " $AWS_REPOSITORY_NAMES
898
+ echo " value of image name provided " $APP_IMAGE_NAME
899
+ APP_IMAGE_NAMES=$( echo ${APP_IMAGE_NAME} | sed ' s/,/ /g' )
900
+ IFS=' ' read -a AWS_REPOSITORY_NAMES_ARRAY <<< $AWS_REPOSITORY_NAMES
901
+ IFS=' ' read -a APP_IMAGE_NAMES_ARRAY <<< $APP_IMAGE_NAMES
902
+ echo " AWS REPO COUNT NEED TO BE UPDATE ${# AWS_REPOSITORY_NAMES_ARRAY[@]} , APP image count provided in option ${# APP_IMAGE_NAMES_ARRAY[@]} "
903
+ if [ " ${# AWS_REPOSITORY_NAMES_ARRAY[@]} " = " ${# APP_IMAGE_NAMES_ARRAY[@]} " ];
904
+ then
905
+ ecstempcount=0
906
+ while [ $ecstempcount -lt ${# AWS_REPOSITORY_NAMES_ARRAY[@]} ]
907
+ do
908
+ echo " ${AWS_REPOSITORY_NAMES_ARRAY[$count]} , ${APP_IMAGE_NAMES_ARRAY[$count]} "
909
+ ECSCLI_push_ecr_image " ${AWS_REPOSITORY_NAMES_ARRAY[$count]} " " ${APP_IMAGE_NAMES_ARRAY[$count]} "
910
+ ecstempcount=` expr $ecstempcount + 1`
911
+ done
912
+ else
913
+ echo " Kindly check the image name in Parameter"
914
+ usage
915
+ exit 1
916
+ fi
917
+ fi
918
+ # env file updation
919
+ ECSCLI_update_env
920
+ # Configurong cluster
921
+ ecs-cli configure --region us-east-1 --cluster $AWS_ECS_CLUSTER
922
+ # updating service
923
+ echo " value of AWS_ECS_SERVICE " $AWS_ECS_SERVICE
924
+ AWS_ECS_SERVICE_NAMES=$( echo ${AWS_ECS_SERVICE} | sed ' s/,/ /g' )
925
+ # AWS_ECS_SERVICE_NAMES=$(echo ${AWS_ECS_SERVICE} | sed 's/,/ /g' | sed 'N;s/\n//')
926
+ echo " value of AWS_ECS_SERVICE_NAMES " $AWS_ECS_SERVICE_NAMES
927
+ IFS=' ' read -a AWS_ECS_SERVICES <<< $AWS_ECS_SERVICE_NAMES
928
+ if [ ${# AWS_ECS_SERVICES[@]} -gt 0 ]; then
929
+ echo " ${# AWS_ECS_SERVICES[@]} service are going to be updated"
930
+ for AWS_ECS_SERVICE_NAME in " ${AWS_ECS_SERVICES[@]} "
931
+ do
932
+ echo " updating ECS Cluster Service - $AWS_ECS_SERVICE_NAME "
933
+ ecs-cli compose --project-name " $AWS_ECS_SERVICE_NAME " service up
934
+ # echo $REVISION
935
+ done
936
+ else
937
+ echo " Kindly check the service name in Parameter"
938
+ usage
939
+ exit 1
940
+ fi
941
+ else
942
+ validate_update_loggroup
943
+ ECS_push_ecr_image
944
+ ECS_template_create_register
945
+ echo " value of AWS_ECS_SERVICE " $AWS_ECS_SERVICE
946
+ AWS_ECS_SERVICE_NAMES=$( echo ${AWS_ECS_SERVICE} | sed ' s/,/ /g' )
947
+ # AWS_ECS_SERVICE_NAMES=$(echo ${AWS_ECS_SERVICE} | sed 's/,/ /g' | sed 'N;s/\n//')
948
+ echo " value of AWS_ECS_SERVICE_NAMES " $AWS_ECS_SERVICE_NAMES
949
+ IFS=' ' read -a AWS_ECS_SERVICES <<< $AWS_ECS_SERVICE_NAMES
950
+ if [ ${# AWS_ECS_SERVICES[@]} -gt 0 ]; then
951
+ echo " ${# AWS_ECS_SERVICES[@]} service are going to be updated"
952
+ for AWS_ECS_SERVICE_NAME in " ${AWS_ECS_SERVICES[@]} "
953
+ do
954
+ echo " updating ECS Cluster Service - $AWS_ECS_SERVICE_NAME "
955
+ ECS_deploy_cluster " $AWS_ECS_SERVICE_NAME "
956
+ check_service_status " $AWS_ECS_SERVICE_NAME "
957
+ # echo $REVISION
958
+ done
959
+ else
960
+ echo " Kindly check the service name in Parameter"
961
+ usage
962
+ exit 1
963
+ fi
835
964
fi
836
-
837
965
fi
838
966
839
967
0 commit comments