-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathbuildspec.yml
More file actions
111 lines (96 loc) · 6.41 KB
/
Copy pathbuildspec.yml
File metadata and controls
111 lines (96 loc) · 6.41 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
version: 0.2
phases:
install:
commands:
- echo "Install Phase - Nothing to do using latest Amazon Linux Docker Image for CodeBuild which has all AWS Tools - https://github.com/aws/aws-codebuild-docker-images/blob/master/al2/x86_64/standard/3.0/Dockerfile"
pre_build:
commands:
# Docker Image Tag with Date Time & Code Buiild Resolved Source Version
- TAG="$(date +%Y-%m-%d.%H.%M.%S).$(echo $CODEBUILD_RESOLVED_SOURCE_VERSION | head -c 8)"
# Update Image tag in our Kubernetes Deployment Manifest
- echo "Update Image tags in k8s..."
- sed -i 's@CONTAINER_IMAGE_ANNOUNCEMENTS@'"$REPOSITORY_ANNOUNCEMENTS_URI:$TAG"'@' infra/aws/k8s/00-rc-announcements-depl.yml
- sed -i 's@CONTAINER_IMAGE_APARTMENTS@'"$REPOSITORY_APARTMENTS_URI:$TAG"'@' infra/aws/k8s/01-rc-apartments-depl.yml
- sed -i 's@CONTAINER_IMAGE_ADVERTS@'"$REPOSITORY_ADVERTS_URI:$TAG"'@' infra/aws/k8s/02-rc-buyandsell-depl.yml
- sed -i 's@CONTAINER_IMAGE_CARPOOL@'"$REPOSITORY_CARPOOL_URI:$TAG"'@' infra/aws/k8s/03-rc-carpooling-depl.yml
- sed -i 's@CONTAINER_IMAGE_CLASSIFIEDS@'"$REPOSITORY_CLASSIFIEDS_URI:$TAG"'@' infra/aws/k8s/04-rc-classifieds-depl.yml
- sed -i 's@CONTAINER_IMAGE_CONTACTS@'"$REPOSITORY_CONTACTS_URI:$TAG"'@' infra/aws/k8s/05-rc-contactsinfo-depl.yml
- sed -i 's@CONTAINER_IMAGE_PAYMENTS@'"$REPOSITORY_PAYMENTS_URI:$TAG"'@' infra/aws/k8s/06-rc-payments-depl.yml
- sed -i 's@CONTAINER_IMAGE_POLLING@'"$REPOSITORY_POLLING_URI:$TAG"'@' infra/aws/k8s/07-rc-polling-depl.yml
- sed -i 's@CONTAINER_IMAGE_USERS@'"$REPOSITORY_USERS_URI:$TAG"'@' infra/aws/k8s/08-rc-users-depl.yml
- sed -i 's@CONTAINER_IMAGE_EVENTS@'"$REPOSITORY_EVENTS_URI:$TAG"'@' infra/aws/k8s/09-rc-eventsmgmt-depl.yml
# Verify AWS CLI Version
- echo "Verify AWS CLI Version..."
- aws --version
# Login to ECR Registry for docker to push the image to ECR Repository
- echo "Login in to Amazon ECR..."
- $(aws ecr get-login --no-include-email)
# Update Kube config Home Directory
- export KUBECONFIG=$HOME/.kube/config
build:
commands:
# Build Docker Image
- echo "Build started on `date`"
- echo "Building the Docker images..."
- docker build --file announcements-api/Dockerfile --tag $REPOSITORY_ANNOUNCEMENTS_URI:$TAG .
- docker build --file apartments-api/Dockerfile --tag $REPOSITORY_APARTMENTS_URI:$TAG .
- docker build --file buyandsell-api/Dockerfile --tag $REPOSITORY_ADVERTS_URI:$TAG .
- docker build --file carpooling-api/Dockerfile --tag $REPOSITORY_CARPOOL_URI:$TAG .
- docker build --file classifieds-api/Dockerfile --tag $REPOSITORY_CLASSIFIEDS_URI:$TAG .
- docker build --file contactinfo-api/Dockerfile --tag $REPOSITORY_CONTACTS_URI:$TAG .
- docker build --file payments-api/Dockerfile --tag $REPOSITORY_PAYMENTS_URI:$TAG .
- docker build --file polling-api/Dockerfile --tag $REPOSITORY_POLLING_URI:$TAG .
- docker build --file userinfo-api/Dockerfile --tag $REPOSITORY_USERS_URI:$TAG .
- docker build --file eventsmgmt-api/Dockerfile --tag $REPOSITORY_EVENTS_URI:$TAG .
post_build:
commands:
# Push Docker Image to ECR Repository
- echo "Build completed on `date`"
- echo "Pushing the Docker images to ECR Repository"
- docker push $REPOSITORY_ANNOUNCEMENTS_URI:$TAG
- echo "Docker Image Push to ECR Completed - $REPOSITORY_ANNOUNCEMENTS_URI:$TAG"
- docker push $REPOSITORY_APARTMENTS_URI:$TAG
- echo "Docker Image Push to ECR Completed - $REPOSITORY_APARTMENTS_URI:$TAG"
- docker push $REPOSITORY_ADVERTS_URI:$TAG
- echo "Docker Image Push to ECR Completed - $REPOSITORY_ADVERTS_URI:$TAG"
- docker push $REPOSITORY_CARPOOL_URI:$TAG
- echo "Docker Image Push to ECR Completed - $REPOSITORY_CARPOOL_URI:$TAG"
- docker push $REPOSITORY_CLASSIFIEDS_URI:$TAG
- echo "Docker Image Push to ECR Completed - $REPOSITORY_CLASSIFIEDS_URI:$TAG"
- docker push $REPOSITORY_CONTACTS_URI:$TAG
- echo "Docker Image Push to ECR Completed - $REPOSITORY_CONTACTS_URI:$TAG"
- docker push $REPOSITORY_PAYMENTS_URI:$TAG
- echo "Docker Image Push to ECR Completed - $REPOSITORY_PAYMENTS_URI:$TAG"
- docker push $REPOSITORY_POLLING_URI:$TAG
- echo "Docker Image Push to ECR Completed - $REPOSITORY_POLLING_URI:$TAG"
- docker push $REPOSITORY_USERS_URI:$TAG
- echo "Docker Image Push to ECR Completed - $REPOSITORY_USERS_URI:$TAG"
- docker push $REPOSITORY_EVENTS_URI:$TAG
- echo "Docker Image Push to ECR Completed - $REPOSITORY_EVENTS_URI:$TAG"
# Extracting AWS Credential Information using STS Assume Role for kubectl
- echo "Setting Environment Variables related to AWS CLI for Kube Config Setup"
- CREDENTIALS=$(aws sts assume-role --role-arn $EKS_KUBECTL_ROLE_ARN --role-session-name codebuild-kubectl --duration-seconds 900)
- export AWS_ACCESS_KEY_ID="$(echo ${CREDENTIALS} | jq -r '.Credentials.AccessKeyId')"
- export AWS_SECRET_ACCESS_KEY="$(echo ${CREDENTIALS} | jq -r '.Credentials.SecretAccessKey')"
- export AWS_SESSION_TOKEN="$(echo ${CREDENTIALS} | jq -r '.Credentials.SessionToken')"
- export AWS_EXPIRATION=$(echo ${CREDENTIALS} | jq -r '.Credentials.Expiration')
# Setup kubectl with our EKS Cluster
- echo "Update Kube Config"
- aws eks update-kubeconfig --name $EKS_CLUSTER_NAME
# Apply changes to our Application using kubectl
- echo "Apply changes to k8s"
- kubectl apply -f infra/aws/k8s/
- echo "Completed applying changes to Kubernetes Objects"
# Create Artifacts which we can use if we want to continue our pipeline for other stages
#- printf '[{"name":"01-DEVOPS-Nginx-Deployment.yml","imageUri":"%s"}]' $REPOSITORY_URI:$TAG > build.json
# Additional Commands to view your credentials
#- echo "Credentials Value is.. ${CREDENTIALS}"
#- echo "AWS_ACCESS_KEY_ID... ${AWS_ACCESS_KEY_ID}"
#- echo "AWS_SECRET_ACCESS_KEY... ${AWS_SECRET_ACCESS_KEY}"
#- echo "AWS_SESSION_TOKEN... ${AWS_SESSION_TOKEN}"
#- echo "AWS_EXPIRATION... $AWS_EXPIRATION"
#- echo "EKS_CLUSTER_NAME... $EKS_CLUSTER_NAME"
artifacts:
files:
#- build.json
- infra/aws/k8s/*