Skip to content

Merge pull request #49 from MoigeMatino/fix-image-tagging-ci #36

Merge pull request #49 from MoigeMatino/fix-image-tagging-ci

Merge pull request #49 from MoigeMatino/fix-image-tagging-ci #36

Workflow file for this run

name: Flask-Stripe-CI
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
jobs:
build-and-test:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.10'
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt
- name: Create docker.env file
run: |
echo "STRIPE_SECRET_KEY=${{ secrets.STRIPE_SECRET_KEY }}" >> docker.env
echo "STRIPE_PUBLISHABLE_KEY=${{ secrets.STRIPE_PUBLISHABLE_KEY }}" >> docker.env
echo "BASE_URL=${{ secrets.BASE_URL }}" >> docker.env
echo "POSTGRES_DB=${{ secrets.POSTGRES_DB }}" >> docker.env
echo "POSTGRES_PASSWORD=${{ secrets.POSTGRES_PASSWORD }}" >> docker.env
echo "POSTGRES_USER=${{ secrets.POSTGRES_USER }}" >> docker.env
echo "POSTGRES_TEST_DB=${{ secrets.POSTGRES_TEST_DB }}" >> docker.env
- name: Build and run Docker Compose
run: |
docker compose --env-file docker.env up -d --build
- name: Wait for services to start
run: sleep 30
- name: Run tests
run: |
docker compose exec -T flask_app pytest -v
- name: Shut down Docker Compose
if: always()
run: |
docker compose down
deploy:
needs: build-and-test
runs-on: ubuntu-latest
if: github.ref == 'refs/heads/main'
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Log in to Docker Hub
run: echo "${{ secrets.DOCKER_HUB_ACCESS_TOKEN }}" | docker login -u ${{ secrets.DOCKER_HUB_USERNAME }} --password-stdin
- name: Build Docker image
run: |
docker build -t my-fastapi-app .
- name: Tag and push Docker image
run: |
docker tag my-fastapi-app ${{ secrets.DOCKER_HUB_USERNAME }}/my-fastapi-app:latest
docker push ${{ secrets.DOCKER_HUB_USERNAME }}/my-fastapi-app:latest