77 - ' frontend-service/**'
88 - ' product-service/**'
99 - ' order-service/**'
10+ - ' api-gateway/**'
1011 workflow_dispatch :
1112
1213env :
1314 AWS_REGION : us-west-2
1415
1516jobs :
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
0 commit comments