1- # Based on https://github.com/actions/starter-workflows/blob/main/ci/django.yml
1+ # AWS ECS Deployment Workflow
22name : AWS Deployment
33
44on :
5- # CI must pass on the master branch
65 workflow_run :
76 workflows : ["Continuous Integration"]
87 branches : [master]
98 types :
109 - completed
1110
1211env :
13- PYTHON_TARGET : 3.11
14- # Django
15- DJANGO_SETTINGS_MODULE : tcf_core.settings.prod
16- SECRET_KEY : ${{ secrets.SECRET_KEY }}
17- DEBUG : 0
18- ENVIRONMENT : production
19- # database
20- AWS_RDS_NAME : ${{ secrets.AWS_RDS_NAME }}
21- AWS_RDS_USER : ${{ secrets.AWS_RDS_USER }}
22- AWS_RDS_PASSWORD : ${{ secrets.AWS_DS_PASSWORD }}
23- AWS_RDS_HOST : ${{ secrets.AWS_RDS_HOST }}
24- AWS_RDS_PORT : ${{ secrets.AWS_RDS_PORT }}
25- # AWS Cognito
26- COGNITO_USER_POOL_ID : ${{ secrets.COGNITO_USER_POOL_ID }}
27- COGNITO_APP_CLIENT_ID : ${{ secrets.COGNITO_APP_CLIENT_ID }}
28- COGNITO_APP_CLIENT_SECRET : ${{ secrets.COGNITO_APP_CLIENT_SECRET }}
29- COGNITO_DOMAIN : ${{ secrets.COGNITO_DOMAIN }}
30- COGNITO_REGION_NAME : ${{ secrets.COGNITO_REGION_NAME }}
31- # email for account verification
32- EMAIL_HOST_USER : ${{ secrets.EMAIL_HOST_USER }}
33- EMAIL_HOST_PASSWORD : ${{ secrets.EMAIL_HOST_PASSWORD }}
34- # review drive account information
35- REVIEW_DRIVE_ID : ${{ secrets.REVIEW_DRIVE_ID }}
36- REVIEW_DRIVE_EMAIL : ${{ secrets.REVIEW_DRIVE_EMAIL }}
37- REVIEW_DRIVE_PASSWORD : ${{ secrets.REVIEW_DRIVE_PASSWORD }}
38- # aws ecs image
3912 AWS_REGION : us-east-1
4013 ECS_SERVICE : barrett-fogle-love-v1
4114 ECS_CLUSTER : tcf-fargate-cluster
4215 ECR_REPO : tcf/thecourseforum2
4316 ECR_CONTAINER_NAME : tcf-container
44- AWS_ACCESS_KEY_ID : ${{ secrets.AWS_ACCESS_KEY_ID }}
45- AWS_SECRET_ACCESS_KEY : ${{ secrets.AWS_SECRET_ACCESS_KEY }}
46- AWS_ACCOUNT_ID : ${{ secrets.AWS_ACCOUNT_ID }}
47- AWS_STORAGE_BUCKET_NAME : ${{ secrets.AWS_STORAGE_BUCKET_NAME }}
48- AWS_S3_CUSTOM_DOMAIN : ${{ secrets.AWS_S3_CUSTOM_DOMAIN }}
4917
5018jobs :
5119 deploy :
52- # if: ${{ github.event.workflow_run.conclusion == 'success' }}
20+ if : ${{ github.event.workflow_run.conclusion == 'success' }}
5321 runs-on : ubuntu-latest
5422 steps :
55- - name : Checkout ` master`
23+ - name : Checkout master
5624 uses : actions/checkout@v4
5725 with :
5826 ref : ${{ github.event.workflow_run.head_sha }}
5927
60- - name : Set up Python ${{ env.PYTHON_TARGET }}
61- uses : actions/setup-python@v5
62- with :
63- python-version : ${{ env.PYTHON_TARGET }}
64- cache : ' pip'
65-
66- - name : Install Python packages
67- run : |
68- python -m pip install --upgrade pip
69- pip install django django-environ django-storages boto3 django-cachalot djangorestframework django-filter psycopg2-binary
70-
71- - name : Collect static files
72- run : python manage.py collectstatic --no-input
73-
7428 - name : Configure AWS credentials
7529 uses : aws-actions/configure-aws-credentials@v4
7630 with :
@@ -79,38 +33,37 @@ jobs:
7933 aws-region : ${{ env.AWS_REGION }}
8034
8135 - name : Login to Amazon ECR
82- id : login-ecr
8336 uses : aws-actions/amazon-ecr-login@v2
8437
8538 - name : Set up Docker Buildx
8639 uses : docker/setup-buildx-action@v3
8740
88- - name : Build and push
41+ - name : Build and push Docker image
8942 uses : docker/build-push-action@v6
9043 with :
9144 context : .
9245 file : ./Dockerfile
9346 push : true
94- tags : ${{ secrets.AWS_ACCOUNT_ID }}.dkr.ecr.${{ env.AWS_REGION }}.amazonaws.com/${{ env.ECR_REPO }}:${{github.sha}}
47+ tags : ${{ secrets.AWS_ACCOUNT_ID }}.dkr.ecr.${{ env.AWS_REGION }}.amazonaws.com/${{ env.ECR_REPO }}:${{ github.sha }}
9548 cache-from : type=registry,ref=${{ secrets.AWS_ACCOUNT_ID }}.dkr.ecr.${{ env.AWS_REGION }}.amazonaws.com/${{ env.ECR_REPO }}:buildcache
9649 cache-to : type=registry,ref=${{ secrets.AWS_ACCOUNT_ID }}.dkr.ecr.${{ env.AWS_REGION }}.amazonaws.com/${{ env.ECR_REPO }}:buildcache,mode=max
9750 provenance : false
9851
99- - name : Get latest task definition
52+ - name : Get current task definition
10053 run : |
10154 aws ecs describe-task-definition \
10255 --task-definition tcf-prod-task \
10356 --query taskDefinition > task-definition.json
10457
105- - name : Add image in ECS task definition
58+ - name : Update task definition with new image
10659 id : task-def
10760 uses : aws-actions/amazon-ecs-render-task-definition@v1
10861 with :
10962 task-definition : task-definition.json
11063 container-name : ${{ env.ECR_CONTAINER_NAME }}
111- image : ${{ env .AWS_ACCOUNT_ID }}.dkr.ecr.${{ env.AWS_REGION }}.amazonaws.com/${{ env.ECR_REPO }}:${{github.sha}}
64+ image : ${{ secrets .AWS_ACCOUNT_ID }}.dkr.ecr.${{ env.AWS_REGION }}.amazonaws.com/${{ env.ECR_REPO }}:${{ github.sha }}
11265
113- - name : Deploy Amazon ECS task definition
66+ - name : Deploy to Amazon ECS
11467 uses : aws-actions/amazon-ecs-deploy-task-definition@v2
11568 with :
11669 task-definition : ${{ steps.task-def.outputs.task-definition }}
0 commit comments