few fixes v4 #35
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: CI/CD Pipeline | |
on: | |
push: | |
branches: | |
- main | |
pull_request: | |
branches: | |
- main | |
jobs: | |
build: | |
runs-on: ubuntu-latest | |
services: | |
postgres: | |
image: postgres:latest | |
env: | |
POSTGRES_USER: postgres | |
POSTGRES_PASSWORD: postgres | |
POSTGRES_DB: postgres | |
ports: | |
- 5432:5432 | |
options: >- | |
--health-cmd pg_isready | |
--health-interval 10s | |
--health-timeout 5s | |
--health-retries 5 | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v2 | |
- name: Set up Docker Buildx | |
uses: docker/setup-buildx-action@v1 | |
- name: Cache Docker layers | |
uses: actions/cache@v2 | |
with: | |
path: /tmp/.buildx-cache | |
key: ${{ runner.os }}-buildx-${{ github.sha }} | |
restore-keys: | | |
${{ runner.os }}-buildx- | |
- name: Install Docker Compose | |
run: | | |
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose | |
sudo chmod +x /usr/local/bin/docker-compose | |
docker-compose --version | |
- name: Install Firefox | |
run: | | |
sudo apt-get update | |
sudo apt-get install -y firefox | |
- name: Build and push Docker image | |
uses: docker/build-push-action@v2 | |
with: | |
context: . | |
file: ./Dockerfile | |
push: false | |
tags: my-django-app:latest | |
- name: Run Docker Compose | |
run: docker-compose up -d --build | |
env: | |
IS_CI_CD: true | |
EMAIL_HOST_USER: ${{ secrets.EMAIL_HOST_USER }} | |
EMAIL_HOST_PASSWORD: ${{ secrets.EMAIL_HOST_PASSWORD }} | |
AFRICASTALKING_USERNAME: ${{ secrets.AFRICASTALKING_USERNAME }} | |
AFRICASTALKING_API_KEY: ${{ secrets.AFRICASTALKING_API_KEY }} | |
GOOGLE_CLIENT_ID: ${{ secrets.GOOGLE_CLIENT_ID }} | |
GOOGLE_CLIENT_SECRET: ${{ secrets.GOOGLE_CLIENT_SECRET }} | |
DB_NAME: ${{ secrets.DB_NAME }} | |
DB_USER: ${{ secrets.DB_USER }} | |
DB_PASSWORD: ${{ secrets.DB_PASSWORD }} | |
DB_HOST: ${{ secrets.DB_HOST }} | |
DB_PORT: ${{ secrets.DB_PORT }} | |
- name: Check Docker Compose services | |
run: docker-compose ps | |
- name: Check web service logs | |
run: docker-compose logs web | |
- name: Run tests with coverage | |
run: docker-compose exec -T web python -m coverage run --source='.' manage.py test --exclude-tag=e2e | |
- name: Stop Docker Compose | |
run: docker-compose down | |
- name: Install AWS CLI | |
run: | | |
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" | |
unzip awscliv2.zip | |
sudo ./aws/install --update | |
- name: Configure AWS credentials | |
uses: aws-actions/configure-aws-credentials@v1 | |
with: | |
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} | |
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} | |
aws-region: eu-north-1 | |
- name: Make deploy and clean script executable | |
run: | | |
chmod +x scripts/deploy.sh | |
chmod +x scripts/clean.sh | |
- name: Deploy to CodeDeploy | |
run: | | |
aws deploy create-deployment \ | |
--application-name Savannah \ | |
--deployment-group-name MyDjangoAppDeploymentGroup \ | |
--deployment-config-name CodeDeployDefault.OneAtATime \ | |
--github-location repository=philiptitus/Savannah,commitId=${{ github.sha }} | |
env: | |
AWS_DEFAULT_REGION: eu-north-1 | |
AWS_REGION: eu-north-1 |