@@ -40,6 +40,7 @@ volcount=0
40
40
template=" "
41
41
TEMPLATE_SKELETON_FILE=" base_template_v2.json"
42
42
APP_IMAGE_NAME=" "
43
+ DEPLOYCATEGORY=" "
43
44
44
45
# variable specific to EBS
45
46
DOCKERRUN=" Dockerrun.aws.json"
@@ -140,7 +141,24 @@ ECS_push_ecr_image() {
140
141
track_error $? " ECS ECR image push"
141
142
log " Docker Image published."
142
143
}
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
+ }
144
162
# ================
145
163
portmapping () {
146
164
hostport=$1
667
685
g)
668
686
SHARED_PROPERTY_FILENAME=$OPTARG
669
687
;;
670
-
688
+ m)
689
+ DEPLOYCATEGORY=$OPTARG
690
+ ;;
671
691
? )
672
692
log " additional param required"
673
693
usage
@@ -719,21 +739,34 @@ download_envfile
719
739
if [ " $DEPLOYMENT_TYPE " == " ECS" ]
720
740
then
721
741
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 .
723
753
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
730
762
log " AWS_REPOSITORY : $AWS_REPOSITORY "
731
763
log " AWS_ECS_CLUSTER : $AWS_ECS_CLUSTER "
732
764
log " AWS_ECS_SERVICE_NAMES : $AWS_ECS_SERVICE "
733
765
log " AWS_ECS_TASK_FAMILY : $AWS_ECS_TASK_FAMILY "
734
766
log " AWS_ECS_CONTAINER_NAME : $AWS_ECS_CONTAINER_NAME "
735
767
log " AWS_ECS_PORTS : $AWS_ECS_PORTS "
736
768
log " ECS_TAG : $ECS_TAG "
769
+ log " DEPLOY TYPE : $DEPLOYCATEGORYNAME "
737
770
fi
738
771
# EBS parameter validation
739
772
if [ " $DEPLOYMENT_TYPE " == " EBS" ]
@@ -811,29 +844,100 @@ input_parsing_validation $@
811
844
812
845
if [ " $DEPLOYMENT_TYPE " == " ECS" ]
813
846
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
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
835
940
fi
836
-
837
941
fi
838
942
839
943
0 commit comments