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

on:
  push:
    branches:
      - master 
  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 run --rm -d -p 4000:8080 clyde/backend && docker image prune -f"
    - run: echo "The backend has been deployed. running at https://clyde.herisson.ovh/api"