@@ -43,18 +43,20 @@ jobs:
4343 build :
4444 name : Build & Push Docker Image
4545 runs-on : ubuntu-latest
46+ permissions :
47+ id-token : write # Needed for OIDC authentication to AWS
4648 needs : [setup_env]
4749 steps :
4850 - name : Checkout
4951 uses : actions/checkout@v4
5052 with :
5153 ref : ${{ github.event.inputs.ref }}
5254 - name : Configure AWS credentials
53- uses : aws-actions/configure-aws-credentials@v4
55+ uses : aws-actions/configure-aws-credentials@v3 # Sets AWS credentials for CLI
5456 with :
55- aws-access-key-id : ${{ secrets.INCUBATOR_AWS_ACCESS_KEY_ID }}
56- aws-secret-access-key : ${{ secrets.INCUBATOR_AWS_SECRET_ACCESS_KEY }}
57- aws-region : ${{ env.AWS_REGION }}
57+ role-to-assume : arn:aws:iam::035866691871:role/incubator-cicd-vrms # IAM role for deploy
58+ role-session-name : incubator-cicd-vrms-gha # Session name for audit
59+ aws-region : us-west-2 # AWS region
5860 - name : Login to Amazon ECR
5961 id : login-ecr
6062 uses : aws-actions/amazon-ecr-login@v2
@@ -94,33 +96,16 @@ jobs:
9496 needs : [setup_env, build]
9597 steps :
9698 - name : Configure AWS credentials
97- uses : aws-actions/configure-aws-credentials@v4
99+ uses : aws-actions/configure-aws-credentials@v3 # Sets AWS credentials for CLI
98100 with :
99- aws-access-key-id : ${{ secrets.INCUBATOR_AWS_ACCESS_KEY_ID }}
100- aws-secret-access-key : ${{ secrets.INCUBATOR_AWS_SECRET_ACCESS_KEY }}
101- aws-region : ${{ env.AWS_REGION }}
102- - name : Login to Amazon ECR
103- id : login-ecr
104- uses : aws-actions/amazon-ecr-login@v2
105- - name : Pull Task Definition & write to file
106- id : aws-task-definition
101+ role-to-assume : arn:aws:iam::035866691871:role/incubator-cicd-vrms # IAM role for deploy
102+ role-session-name : incubator-cicd-vrms-gha # Session name for audit
103+ aws-region : us-west-2 # AWS region
104+ - name : Restart ECS Service
105+ id : redeploy-service
106+ env :
107+ SERVICE_NAME : ${{env.AWS_APP_NAME}}-${{ github.event.inputs.env }} # ECS service name
108+ # Force a new deployment of the ECS service to use the latest Docker image
107109 run : |
108- aws ecs describe-task-definition \
109- --task-definition ${{ needs.setup_env.outputs.AWS_APPENV }} \
110- --query taskDefinition | \
111- jq 'del(.taskDefinitionArn,.revision,.status,.registeredBy,.registeredAt,.compatibilities,.requiresAttributes)' > task-def.json
112- - name : Interpolate new Docker Image into Task Definition
113- id : task-definition
114- uses : aws-actions/amazon-ecs-render-task-definition@v1
115- with :
116- task-definition : task-def.json
117- container-name : ${{ needs.setup_env.outputs.AWS_APPENV }}
118- image : ${{ steps.login-ecr.outputs.registry }}/${{ needs.setup_env.outputs.AWS_APPENV }}:${{ needs.setup_env.outputs.IMAGE_TAG }}
119- - name : Deploy Amazon ECS
120- uses : aws-actions/amazon-ecs-deploy-task-definition@v1
121- with :
122- task-definition : ${{ steps.task-definition.outputs.task-definition }}
123- service : ${{ needs.setup_env.outputs.AWS_APPENV }}
124- cluster : ${{ env.AWS_SHARED_CLUSTER }}
125- wait-for-service-stability : true
126- wait-for-minutes : 5
110+ aws ecs update-service --force-new-deployment --service $SERVICE_NAME --cluster $AWS_SHARED_CLUSTER
111+
0 commit comments