name: Build & Push Docker Images
run-name: ${{ gitea.actor }} - ${{ gitea.ref }}

on:
  push:
    branches:
    - main

jobs:
  test-backend:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v3
    - name: Install dependencies
      run: cd backend && npm ci
    - name: Run tests
      run: cd backend && npm test

  test-frontend:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v3
    - name: Install dependencies
      run: cd frontend && npm ci
    - name: Run tests
      run: cd frontend && npm test

  build-backend:
    needs: [ test-backend, test-frontend ]
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v3
    - name: Log in to Gitea registry
      uses: docker/login-action@v3
      with:
        registry: git.hacecalor.net
        username: ${{ secrets.DOCKER_USERNAME }}
        password: ${{ secrets.DOCKER_PASSWORD }}
    - name: Build and push backend image
      uses: docker/build-push-action@v5
      with:
        context: .
        file: ./backend/Dockerfile
        push: true
        tags: |
          git.hacecalor.net/ichitux/farmafinder-backend:latest
          git.hacecalor.net/ichitux/farmafinder-backend:${{ gitea.sha }}

  build-frontend:
    needs: [ test-backend, test-frontend ]
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v3
    - name: Log in to Gitea registry
      uses: docker/login-action@v3
      with:
        registry: git.hacecalor.net
        username: ${{ secrets.DOCKER_USERNAME }}
        password: ${{ secrets.DOCKER_PASSWORD }}
    - name: Build and push frontend image
      uses: docker/build-push-action@v5
      with:
        context: ./frontend
        push: true
        tags: |
          git.hacecalor.net/ichitux/farmafinder-frontend:latest
          git.hacecalor.net/ichitux/farmafinder-frontend:${{ gitea.sha }}
