name: deploy to production
run-name: ${{ gitea.actor }} has pushed to production

on:
  push:
    branches:
      - master 
  workflow_run:
    workflows:
      - Build and test backend 
      - Build and test frontend 
    types:
      - completed
  workflow_dispatch:

jobs:
  deploy-frontend:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v4
    - name: Use Node.js ${{ matrix.node-version }}
      uses: actions/setup-node@v3
      working-directory: ./frontend
    - run: npm ci 
      name: clean install
      working-directory: ./frontend
    - name: building 
      working-directory: ./frontend
      run: npm run build
    - name: pushing to the server
      working-directory: ./frontend
      run: |
        echo "${{ secrets.SSH_KEY }}" > key
        chmod 0600 key
        scp -o "StrictHostKeyChecking=no" -o "LogLevel=ERROR" -i key -r dist/ ${{ secrets.SSH_USER }}@${{ secrets.SSH_HOST }}:
    - run: echo "The website has been deployed. visit https://clyde.herisson.ovh/"

  deploy-backend:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v4
    - uses: actions/setup-java@v3
      with:
        java-version: '21'
        distribution: 'temurin'
    - uses: gradle/gradle-build-action@v3
    - name: building
      run: ./gradlew backend:build
    - name: pushing to the server
      run: |
        echo "${{ secrets.SSH_KEY }}" > key
        chmod 0600 key
        scp -o "StrictHostKeyChecking=no" -o "LogLevel=ERROR" -i key -r * ${{ secrets.SSH_USER }}@${{ secrets.SSH_HOST }}:api/
    - name: restarting the backend 
      run: |
        ssh -o "StrictHostKeyChecking=no" -o "LogLevel=ERROR" -i key ${{ secrets.SSH_USER }}@${{ secrets.SSH_HOST }} 'cd api/backend && docker build -t clyde/backend . && docker rm clyde_backend_prod -f || true && docker run --rm -d -u $(id -u clyde):$(id -g clyde) -v /var/run/postgresql:/var/run/postgresql --name clyde_backend_prod -p 4000:8080 clyde/backend && docker image prune -f'
    - run: echo "The backend has been deployed. running at https://clyde.herisson.ovh/api"
