Skip to content

update AWS settings, try again #1

update AWS settings, try again

update AWS settings, try again #1

Workflow file for this run

name: Backend CICD
on:
push:
branches: ["main"]
jobs:
build-test-deploy:
runs-on: ubuntu-latest
env:
MYSQL_DATABASE: deepwork
MYSQL_USER: django
MYSQL_PASSWORD: ${{ secrets.MYSQL_DJANGO_PASSWORD }}
MYSQL_HOST: db
MYSQL_PORT: 3306
services:
mysql:
image: mysql:5.7
env:
MYSQL_ROOT_PASSWORD: ${{ secrets.MYSQL_DJANGO_PASSWORD }}
MYSQL_DATABASE: deepwork
ports:
- "3306:3306"
options: >-
--health-cmd="mysqladmin ping --silent"
--health-interval=10s
--health-timeout=5s
--health-retries=3
steps:
- name: Check out repository
uses: actions/checkout@v4.2.2
- name: Set up Python
uses: actions/setup-python@v5.4.0
with:
python-version: "3.10"
- name: Install requirements
run: |
pip install --upgrade pip
pip install -r requirements.txt
- name: Install Docker Compose
run: |
sudo apt-get update
sudo apt-get install -y docker-compose
- name: Build images
run: docker-compose -f docker-compose.yml build
- name: Start services
run: docker-compose -f docker-compose.yml up -d
- name: Wait for DB
run: sleep 15
- name: Database Migrate
run: docker-compose exec -T django python manage.py migrate
- name: Run Tests
run: docker-compose exec -T django python manage.py test
- name: Shut down
if: always()
run: docker-compose -f docker-compose.yml down
- name: Configure AWS Credentials
uses: aws-actions/configure-aws-credentials@v4
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: ${{ secrets.AWS_REGION }}
- name: Login to Amazon ECR
uses: aws-actions/amazon-ecr-login@v2
- name: Build Docker image
run: |
docker build -t ${{ secrets.ECR_REPO }}:latest .
- name: Push Docker image to Amazon ECR
run: |
docker push ${{ secrets.ECR_REPO }}:latest
- name: Deploy via SSH to EC2
uses: appleboy/ssh-action@v1.2.0
with:
host: ${{ secrets.EC2_HOST }}
username: ubuntu
key: ${{ secrets.SSH_PRIVATE_KEY_EC2 }}
script: |
aws ecr get-login-password --region ${{ secrets.AWS_REGION }} | \
docker login --username AWS --password-stdin ${{ secrets.ECR_REPO }}
docker-compose pull
docker-compose up -d --force-recreate