@@ -69,76 +69,32 @@ jobs:
6969 build_for_aws :
7070 name : Build for AWS
7171 runs-on : ubuntu-latest
72- if : false
73- permissions :
74- contents : read
75- packages : write
76- steps :
77- - uses : actions/checkout@v4
78- - name : Set up Docker Buildx
79- uses : docker/setup-buildx-action@v3
80- - name : Log in to GitHub container registry
81- uses : docker/login-action@v3
82- with :
83- registry : ghcr.io
84- username : ${{ github.actor }}
85- password : ${{ github.token }}
86- - name : Lowercase the repo name and username
87- run : echo "REPO=${GITHUB_REPOSITORY,,}" >>${GITHUB_ENV}
88- - name : Build and push container image to registry
89- uses : docker/build-push-action@v6
90- with :
91- push : true
92- tags : |
93- ghcr.io/${{ env.REPO }}-aws:${{ github.sha }}
94- ghcr.io/${{ env.REPO }}-aws:latest
95- file : ./Dockerfile
96- build-args : |
97- MYSQL_HOST=${{ vars.AWS_MYSQL_HOST }}
98- MYSQL_TCP_PORT=${{ vars.AWS_MYSQL_TCP_PORT }}
99- MYSQL_USER=${{ vars.AWS_MYSQL_USER }}
100- MYSQL_PASSWORD=${{ secrets.AWS_MYSQL_PASSWORD }}
101- MYSQL_DATABASE=${{ vars.AWS_MYSQL_DATABASE }}
102- REDIS_HOST=${{ vars.AWS_REDIS_HOST }}
103- REDIS_AUTH=${{ secrets.AWS_REDIS_AUTH }}
104- HASH_SALT=${{ secrets.AWS_HASH_SALT }}
105-
106- build_for_azure :
107- name : Build for Azure
108- runs-on : ubuntu-latest
10972 if : github.ref_name == 'main'
11073 permissions :
11174 contents : read
112- packages : write
75+ id-token : write
11376 steps :
11477 - uses : actions/checkout@v4
11578 - name : Set up Docker Buildx
11679 uses : docker/setup-buildx-action@v3
117- - name : Log in to GitHub container registry
118- uses : docker/login-action@v3
80+ - name : Configure AWS credentials
81+ uses : aws-actions/configure-aws-credentials@v4
82+ with :
83+ aws-access-key-id : ${{ vars.AWS_ACCESS_KEY_ID }}
84+ aws-secret-access-key : ${{ secrets.AWS_SECRET_ACCESS_KEY }}
85+ aws-region : ${{ vars.AWS_REGION }}
86+ - name : Log in to Amazon ECR
87+ uses : aws-actions/amazon-ecr-login@v2
11988 with :
120- registry : ghcr.io
121- username : ${{ github.actor }}
122- password : ${{ github.token }}
123- - name : Lowercase the repo name and username
124- run : echo "REPO=${GITHUB_REPOSITORY,,}" >>${GITHUB_ENV}
125- - name : Build and push container image to registry
89+ mask-password : ' true'
90+ - name : Build and push container image to ECR
12691 uses : docker/build-push-action@v6
12792 with :
12893 push : true
12994 tags : |
130- ghcr.io/ ${{ env.REPO }}-azure :${{ github.sha }}
131- ghcr.io/ ${{ env.REPO }}-azure :latest
95+ ${{ vars.ECR_REPOSITORY_URL }}:${{ github.sha }}
96+ ${{ vars.ECR_REPOSITORY_URL }}:latest
13297 file : ./Dockerfile
133- build-args : |
134- MYSQL_HOST=${{ vars.AZURE_MYSQL_HOST }}
135- MYSQL_TCP_PORT=${{ vars.AZURE_MYSQL_TCP_PORT }}
136- MYSQL_USER=${{ vars.AZURE_MYSQL_USER }}
137- MYSQL_PASSWORD=${{ secrets.AZURE_MYSQL_PASSWORD }}
138- MYSQL_DATABASE=${{ vars.AZURE_MYSQL_DATABASE }}
139- REDIS_HOST=${{ vars.AZURE_REDIS_HOST }}
140- REDIS_AUTH=${{ secrets.AZURE_REDIS_AUTH }}
141- HASH_SALT=${{ secrets.AZURE_HASH_SALT }}
14298
14399 lint :
144100 name : Check lint
@@ -312,36 +268,43 @@ jobs:
312268 if : github.ref_name == 'main'
313269 runs-on : ubuntu-latest
314270 needs : [build_for_aws]
271+ permissions :
272+ contents : read
315273 steps :
316- - name : Deploy to AWS
317- run : echo "Hello, world!"
318-
319- deploy_to_azure :
320- name : Deploy to Azure
321- if : github.ref_name == 'main'
322- runs-on : ubuntu-latest
323- needs : [build_for_azure]
324- environment :
325- name : ' Development'
326- url : ${{ steps.deploy-to-webapp.outputs.webapp-url }}
327- steps :
328- - name : Lowercase the repo name and username
329- run : echo "REPO=${GITHUB_REPOSITORY,,}" >>${GITHUB_ENV}
330- - name : Deploy to Azure Web App
331- id : deploy-to-webapp
332- uses : azure/webapps-deploy@v2
274+ - name : Configure AWS credentials
275+ uses : aws-actions/configure-aws-credentials@v4
333276 with :
334- app-name : ${{ env.AZURE_WEBAPP_NAME }}
335- publish-profile : ${{ secrets.AZURE_WEBAPP_PUBLISH_PROFILE }}
336- images : ' ghcr.io/ ${{ env.REPO }}-azure:${{ github.sha }} '
337- - name : Drush deploy
277+ aws-access-key-id : ${{ vars.AWS_ACCESS_KEY_ID }}
278+ aws-secret-access-key : ${{ secrets.AWS_SECRET_ACCESS_KEY }}
279+ aws-region : ${{ vars.AWS_REGION }}
280+ - name : Update ECS service with new image
338281 run : |
339- az webapp create-remote-connection \
340- --resource-group drupal-example-stirred-dove \
341- --name drupal-example-precious-seasnail \
342- --port 16385 &
343- sleep 30
344- sshpass -pDocker\! ssh root@127.0.0.1 -m hmac-sha1 -p 16385 -o "StrictHostKeyChecking no" /var/www/vendor/bin/drush deploy
282+ # Get the current task definition
283+ TASK_DEF=$(aws ecs describe-task-definition \
284+ --task-definition ${{ vars.AWS_ECS_TASK_DEFINITION }} \
285+ --region ${{ vars.AWS_REGION }} \
286+ --query 'taskDefinition' --output json)
287+
288+ # Update the image in the task definition
289+ NEW_TASK_DEF=$(echo "$TASK_DEF" | jq \
290+ --arg IMAGE "${{ vars.ECR_REPOSITORY_URL }}:${{ github.sha }}" \
291+ '.containerDefinitions[0].image = $IMAGE |
292+ del(.taskDefinitionArn, .revision, .status, .requiresAttributes, .compatibilities, .registeredAt, .registeredBy)')
293+
294+ # Register the new task definition
295+ NEW_TASK_DEF_ARN=$(aws ecs register-task-definition \
296+ --region ${{ vars.AWS_REGION }} \
297+ --cli-input-json "$(echo "$NEW_TASK_DEF" | jq -c .)" \
298+ --query 'taskDefinition.taskDefinitionArn' \
299+ --output text)
300+
301+ # Update the ECS service to use the new task definition
302+ aws ecs update-service \
303+ --cluster ${{ vars.AWS_ECS_CLUSTER }} \
304+ --service ${{ vars.AWS_ECS_SERVICE }} \
305+ --task-definition "$NEW_TASK_DEF_ARN" \
306+ --region ${{ vars.AWS_REGION }} \
307+ --force-new-deployment
345308
346309 e2e_test :
347310 name : Feature tests
0 commit comments