1+ name : Deploy Audit Service
2+
3+ on :
4+ push :
5+ tags :
6+ - ' audit-service-*'
7+
8+ env :
9+ AWS_REGION : us-east-1
10+ ECR_REPOSITORY : expense-pilot/audit-service
11+ ECS_CLUSTER : expense-pilot-cluster
12+ ECS_SERVICE : audit-service
13+
14+ jobs :
15+ deploy :
16+ name : Deploy Audit Service
17+ runs-on : ubuntu-latest
18+
19+ steps :
20+ - name : Checkout
21+ uses : actions/checkout@v4
22+
23+ - name : Configure AWS credentials
24+ uses : aws-actions/configure-aws-credentials@v4
25+ with :
26+ aws-access-key-id : ${{ secrets.AWS_ACCESS_KEY_ID }}
27+ aws-secret-access-key : ${{ secrets.AWS_SECRET_ACCESS_KEY }}
28+ aws-region : ${{ env.AWS_REGION }}
29+
30+ - name : Login to Amazon ECR
31+ id : login-ecr
32+ uses : aws-actions/amazon-ecr-login@v2
33+
34+ - name : Build, tag, and push image to Amazon ECR
35+ id : build-image
36+ env :
37+ ECR_REGISTRY : ${{ steps.login-ecr.outputs.registry }}
38+ IMAGE_TAG : ${{ github.sha }}
39+ run : |
40+ cd audit-service
41+ docker build -t $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG .
42+ docker tag $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG $ECR_REGISTRY/$ECR_REPOSITORY:latest
43+ docker push $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG
44+ docker push $ECR_REGISTRY/$ECR_REPOSITORY:latest
45+ echo "image=$ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG" >> $GITHUB_OUTPUT
46+
47+ - name : Create task definition
48+ run : |
49+ cat > task-definition.json << EOF
50+ {
51+ "family": "${{ env.ECS_SERVICE }}",
52+ "networkMode": "awsvpc",
53+ "requiresCompatibilities": ["FARGATE"],
54+ "cpu": "256",
55+ "memory": "512",
56+ "executionRoleArn": "arn:aws:iam::170107269579:role/ecsTaskExecutionRole",
57+ "containerDefinitions": [
58+ {
59+ "name": "${{ env.ECS_SERVICE }}",
60+ "image": "${{ steps.build-image.outputs.image }}",
61+ "portMappings": [
62+ {
63+ "containerPort": 3000,
64+ "protocol": "tcp"
65+ }
66+ ],
67+ "environment": [
68+ {
69+ "name": "RAILS_ENV",
70+ "value": "production"
71+ },
72+ {
73+ "name": "RAILS_MASTER_KEY",
74+ "value": "${{ secrets.RAILS_MASTER_KEY }}"
75+ },
76+ {
77+ "name": "API_SECRET_KEY",
78+ "value": "${{ secrets.API_SECRET_KEY }}"
79+ },
80+ {
81+ "name": "NEW_RELIC_API_KEY",
82+ "value": "${{ secrets.NEW_RELIC_API_KEY }}"
83+ },
84+ {
85+ "name": "NEW_RELIC_APP_NAME",
86+ "value": "audit-service"
87+ },
88+ {
89+ "name": "NEW_RELIC_ACCOUNT_ID",
90+ "value": "${{ secrets.NEW_RELIC_ACCOUNT_ID }}"
91+ }
92+ ],
93+ "logConfiguration": {
94+ "logDriver": "awslogs",
95+ "options": {
96+ "awslogs-group": "/ecs/${{ env.ECS_SERVICE }}",
97+ "awslogs-region": "${{ env.AWS_REGION }}",
98+ "awslogs-stream-prefix": "ecs"
99+ }
100+ }
101+ }
102+ ]
103+ }
104+ EOF
105+
106+ - name : Deploy to Amazon ECS
107+ uses : aws-actions/amazon-ecs-deploy-task-definition@v1
108+ with :
109+ task-definition : task-definition.json
110+ service : ${{ env.ECS_SERVICE }}
111+ cluster : ${{ env.ECS_CLUSTER }}
112+ wait-for-service-stability : true
0 commit comments