1+ name : Deploy Application Docker Image to EC2 instance
2+
3+ on :
4+ push :
5+ branches : [main]
6+
7+ jobs :
8+ Continuous-Integration :
9+ runs-on : ubuntu-latest
10+
11+ steps :
12+ - name : Checkout
13+ uses : actions/checkout@v2
14+
15+ - name : Configure AWS credentials
16+ uses : aws-actions/configure-aws-credentials@v1
17+ with :
18+ aws-access-key-id : ${{ secrets.AWS_ACCESS_KEY_ID }}
19+ aws-secret-access-key : ${{ secrets.AWS_SECRET_ACCESS_KEY }}
20+ aws-region : ${{ secrets.AWS_DEFAULT_REGION }}
21+
22+ - name : Login to Amazon ECR
23+ id : login-ecr
24+ uses : aws-actions/amazon-ecr-login@v1
25+
26+ - name : Build, tag, and push image to Amazon ECR
27+ id : build-image
28+ env :
29+ ECR_REGISTRY : ${{ steps.login-ecr.outputs.registry }}
30+ ECR_REPOSITORY : ${{ secrets.ECR_REPO }}
31+ IMAGE_TAG : latest
32+ run : |
33+ docker build -t $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG .
34+ docker push $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG
35+ echo "::set-output name=image::$ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG"
36+
37+ Continuous-Deployment :
38+ needs : Continuous-Integration
39+ runs-on : self-hosted
40+ steps :
41+ - name : Checkout
42+ uses : actions/checkout@v3
43+
44+ - name : Configure AWS credentials
45+ uses : aws-actions/configure-aws-credentials@v1
46+ with :
47+ aws-access-key-id : ${{ secrets.AWS_ACCESS_KEY_ID }}
48+ aws-secret-access-key : ${{ secrets.AWS_SECRET_ACCESS_KEY }}
49+ aws-region : ${{ secrets.AWS_DEFAULT_REGION }}
50+
51+ - name : Login to Amazon ECR
52+ id : login-ecr
53+ uses : aws-actions/amazon-ecr-login@v1
54+
55+ - name : Run Docker Image to serve users
56+ run : |
57+ docker run -d -e AWS_ACCESS_KEY_ID="${{ secrets.AWS_ACCESS_KEY_ID }}" -e AWS_SECRET_ACCESS_KEY="${{ secrets.AWS_SECRET_ACCESS_KEY }}" -e AWS_DEFAULT_REGION="${{ secrets.AWS_DEFAULT_REGION }}" -e MONGODB_CLUSTER_URI="${{ secrets.MONGODB_CLUSTER_URI}}" -p 8080:8080 "${{ steps.login-ecr.outputs.registry }}"/"${{ secrets.ECR_REPO }}":latest
0 commit comments