Skip to content

Commit 5d04887

Browse files
author
Satej Sawant
committed
Consolidate all services into parallel deployment workflow
1 parent ba47448 commit 5d04887

File tree

3 files changed

+85
-56
lines changed

3 files changed

+85
-56
lines changed

.github/workflows/deploy-api-gateway.yml

Lines changed: 0 additions & 43 deletions
This file was deleted.

.github/workflows/deploy.yml

Lines changed: 84 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -7,17 +7,20 @@ on:
77
- 'frontend-service/**'
88
- 'product-service/**'
99
- 'order-service/**'
10+
- 'api-gateway/**'
1011
workflow_dispatch:
1112

1213
env:
1314
AWS_REGION: us-west-2
1415

1516
jobs:
16-
deploy:
17+
build:
1718
runs-on: ubuntu-latest
1819
permissions:
1920
id-token: write
2021
contents: read
22+
outputs:
23+
image-tag: ${{ github.sha }}
2124

2225
steps:
2326
- uses: actions/checkout@v4
@@ -33,38 +36,106 @@ jobs:
3336

3437
- name: Build and push images
3538
run: |
36-
docker build -t ${{ secrets.AWS_ACCOUNT_ID }}.dkr.ecr.us-west-2.amazonaws.com/spookymart-frontend:${{ github.sha }} ./frontend-service
37-
docker push ${{ secrets.AWS_ACCOUNT_ID }}.dkr.ecr.us-west-2.amazonaws.com/spookymart-frontend:${{ github.sha }}
39+
docker build -t ${{ secrets.AWS_ACCOUNT_ID }}.dkr.ecr.us-west-2.amazonaws.com/spookymart-frontend:${{ github.sha }} ./frontend-service &
40+
docker build -t ${{ secrets.AWS_ACCOUNT_ID }}.dkr.ecr.us-west-2.amazonaws.com/spookymart-product-service:${{ github.sha }} ./product-service &
41+
docker build -t ${{ secrets.AWS_ACCOUNT_ID }}.dkr.ecr.us-west-2.amazonaws.com/spookymart-order-service:${{ github.sha }} ./order-service &
42+
docker build -t ${{ secrets.AWS_ACCOUNT_ID }}.dkr.ecr.us-west-2.amazonaws.com/spookymart-api-gateway:${{ github.sha }} ./api-gateway &
43+
wait
3844
39-
docker build -t ${{ secrets.AWS_ACCOUNT_ID }}.dkr.ecr.us-west-2.amazonaws.com/spookymart-product-service:${{ github.sha }} ./product-service
40-
docker push ${{ secrets.AWS_ACCOUNT_ID }}.dkr.ecr.us-west-2.amazonaws.com/spookymart-product-service:${{ github.sha }}
45+
docker push ${{ secrets.AWS_ACCOUNT_ID }}.dkr.ecr.us-west-2.amazonaws.com/spookymart-frontend:${{ github.sha }} &
46+
docker push ${{ secrets.AWS_ACCOUNT_ID }}.dkr.ecr.us-west-2.amazonaws.com/spookymart-product-service:${{ github.sha }} &
47+
docker push ${{ secrets.AWS_ACCOUNT_ID }}.dkr.ecr.us-west-2.amazonaws.com/spookymart-order-service:${{ github.sha }} &
48+
docker push ${{ secrets.AWS_ACCOUNT_ID }}.dkr.ecr.us-west-2.amazonaws.com/spookymart-api-gateway:${{ github.sha }} &
49+
wait
50+
51+
deploy-frontend:
52+
needs: build
53+
runs-on: ubuntu-latest
54+
permissions:
55+
id-token: write
56+
contents: read
57+
58+
steps:
59+
- name: Configure AWS credentials
60+
uses: aws-actions/configure-aws-credentials@v5
61+
with:
62+
role-to-assume: ${{ secrets.AWS_ROLE_ARN }}
63+
aws-region: ${{ env.AWS_REGION }}
4164

42-
docker build -t ${{ secrets.AWS_ACCOUNT_ID }}.dkr.ecr.us-west-2.amazonaws.com/spookymart-order-service:${{ github.sha }} ./order-service
43-
docker push ${{ secrets.AWS_ACCOUNT_ID }}.dkr.ecr.us-west-2.amazonaws.com/spookymart-order-service:${{ github.sha }}
65+
- name: Deploy Frontend
66+
uses: aws-actions/amazon-ecs-deploy-express-service@v1
67+
with:
68+
service-name: spookymart-frontend
69+
image: ${{ secrets.AWS_ACCOUNT_ID }}.dkr.ecr.us-west-2.amazonaws.com/spookymart-frontend:${{ needs.build.outputs.image-tag }}
70+
execution-role-arn: ${{ secrets.ECS_EXECUTION_ROLE_ARN }}
71+
infrastructure-role-arn: ${{ secrets.ECS_INFRASTRUCTURE_ROLE_ARN }}
72+
container-port: 8080
73+
74+
deploy-product:
75+
needs: build
76+
runs-on: ubuntu-latest
77+
permissions:
78+
id-token: write
79+
contents: read
80+
81+
steps:
82+
- name: Configure AWS credentials
83+
uses: aws-actions/configure-aws-credentials@v5
84+
with:
85+
role-to-assume: ${{ secrets.AWS_ROLE_ARN }}
86+
aws-region: ${{ env.AWS_REGION }}
4487

4588
- name: Deploy Product Service
4689
uses: aws-actions/amazon-ecs-deploy-express-service@v1
4790
with:
4891
service-name: spookymart-product-service
49-
image: ${{ secrets.AWS_ACCOUNT_ID }}.dkr.ecr.us-west-2.amazonaws.com/spookymart-product-service:${{ github.sha }}
92+
image: ${{ secrets.AWS_ACCOUNT_ID }}.dkr.ecr.us-west-2.amazonaws.com/spookymart-product-service:${{ needs.build.outputs.image-tag }}
5093
execution-role-arn: ${{ secrets.ECS_EXECUTION_ROLE_ARN }}
5194
infrastructure-role-arn: ${{ secrets.ECS_INFRASTRUCTURE_ROLE_ARN }}
5295
container-port: 3001
96+
97+
deploy-order:
98+
needs: build
99+
runs-on: ubuntu-latest
100+
permissions:
101+
id-token: write
102+
contents: read
103+
104+
steps:
105+
- name: Configure AWS credentials
106+
uses: aws-actions/configure-aws-credentials@v5
107+
with:
108+
role-to-assume: ${{ secrets.AWS_ROLE_ARN }}
109+
aws-region: ${{ env.AWS_REGION }}
53110

54111
- name: Deploy Order Service
55112
uses: aws-actions/amazon-ecs-deploy-express-service@v1
56113
with:
57114
service-name: spookymart-order-service
58-
image: ${{ secrets.AWS_ACCOUNT_ID }}.dkr.ecr.us-west-2.amazonaws.com/spookymart-order-service:${{ github.sha }}
115+
image: ${{ secrets.AWS_ACCOUNT_ID }}.dkr.ecr.us-west-2.amazonaws.com/spookymart-order-service:${{ needs.build.outputs.image-tag }}
59116
execution-role-arn: ${{ secrets.ECS_EXECUTION_ROLE_ARN }}
60117
infrastructure-role-arn: ${{ secrets.ECS_INFRASTRUCTURE_ROLE_ARN }}
61118
container-port: 3002
119+
120+
deploy-api-gateway:
121+
needs: build
122+
runs-on: ubuntu-latest
123+
permissions:
124+
id-token: write
125+
contents: read
126+
127+
steps:
128+
- name: Configure AWS credentials
129+
uses: aws-actions/configure-aws-credentials@v5
130+
with:
131+
role-to-assume: ${{ secrets.AWS_ROLE_ARN }}
132+
aws-region: ${{ env.AWS_REGION }}
62133

63-
- name: Deploy Frontend
134+
- name: Deploy API Gateway
64135
uses: aws-actions/amazon-ecs-deploy-express-service@v1
65136
with:
66-
service-name: spookymart-frontend
67-
image: ${{ secrets.AWS_ACCOUNT_ID }}.dkr.ecr.us-west-2.amazonaws.com/spookymart-frontend:${{ github.sha }}
137+
service-name: spookymart-api-gateway
138+
image: ${{ secrets.AWS_ACCOUNT_ID }}.dkr.ecr.us-west-2.amazonaws.com/spookymart-api-gateway:${{ needs.build.outputs.image-tag }}
68139
execution-role-arn: ${{ secrets.ECS_EXECUTION_ROLE_ARN }}
69140
infrastructure-role-arn: ${{ secrets.ECS_INFRASTRUCTURE_ROLE_ARN }}
70-
container-port: 8080
141+
container-port: 3000

api-gateway/README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ The API Gateway service acts as the central entry point for the SpookyMart ecomm
88
- **Rate Limiting**: Protects backend services from abuse
99
- **Security**: Implements CORS, Helmet security headers
1010
- **Logging**: Comprehensive request/response logging with Winston
11+
- **Auto-deployment**: Deployed via GitHub Actions on changes
1112
- **Health Checks**: Monitors downstream service health
1213
- **Compression**: Reduces response payload sizes
1314
- **Error Handling**: Graceful error responses and service unavailability handling

0 commit comments

Comments
 (0)