on:
  push:
    tags:
      - '[0-9]+\.[0-9]+\.[0-9]+unlighthouse[0-9]+'
      - '[0-9]+\.[0-9]+\.[0-9]+ulh[0-9]+'

jobs:
  unlighthouse:
    runs-on: docker
    container: forgejo.neshweb.net/ci-docker-images/unlighthouse:latest
    steps:
      - name: Checkout repository
        uses: https://code.forgejo.org/actions/checkout@v3 
      - name: Run unlighthouse
        run: unlighthouse-ci --site "https://preview.fgo-ta.com/"
      - name: Prepare artifacts
        run: cp serve.json unlighthouse-reports
      - name: Upload reports
        uses: actions/upload-artifact@v3
        with:
          name: unlighthouse-reports
          path: unlighthouse-reports/

  deploy-unlighthouse-files:
    needs: [ unlighthouse ]
    runs-on: docker
    env: 
      DEPLOY_USER: ${{ secrets.DEPLOY_USER }}
      DEPLOY_HOST: ${{ secrets.DEPLOY_HOST }}
    steps:
      - name: Install and update ssh + rsync
        run: |
            which rsync || ( apt update -y && apt install rsync -y)
            which ssh-agent || ( apt update -y && apt install openssh-client -y)            
      - name: Downloading static site artifacts
        uses: actions/download-artifact@v3
        with:
          name: unlighthouse-reports
          path: public
      - name: Install SSH Key
        uses: https://github.com/shimataro/ssh-key-action@v2
        with:
          key: ${{ secrets.SSH_PRIVATE_KEY }}
          known_hosts: unnecessary
      - name: Adding Known Hosts
        run: ssh-keyscan -H ${{ secrets.DEPLOY_HOST }} >> ~/.ssh/known_hosts
      - name: Stop screen session, delete old files
        uses: https://github.com/appleboy/ssh-action@master
        with:
          host: ${{ env.DEPLOY_HOST }}
          username: ${{ env.DEPLOY_USER }}
          key: ${{ secrets.SSH_PRIVATE_KEY }}
          script: |
            screen -X -S fgo_ta_com-unlighthouse kill
            rm -r -f fgo_ta_com/unlighthouse/*            
      - name: Copy files using rsync
        run: rsync -az --stats public/* ${{ env.DEPLOY_USER }}@${{ env.DEPLOY_HOST }}:~/fgo_ta_com/unlighthouse
      - name: Check files on deploy target
        uses: https://github.com/appleboy/ssh-action@master
        with:
          host: ${{ env.DEPLOY_HOST }}
          username: ${{ env.DEPLOY_USER }}
          key: ${{ secrets.SSH_PRIVATE_KEY }}
          script: |
            cd fgo_ta_com
            find unlighthouse -maxdepth 1 -printf "%p\n"            

  deploy-unlighthouse-site:
    needs: [ deploy-unlighthouse-files ]
    runs-on: docker
    env: 
      DEPLOY_USER: ${{ secrets.DEPLOY_USER }}
      DEPLOY_HOST: ${{ secrets.DEPLOY_HOST }}
    steps:
      - name: Install and update ssh + rsync
        run: |
            which rsync || ( apt update -y && apt install rsync -y)
            which ssh-agent || ( apt update -y && apt install openssh-client -y)            
      - name: Install SSH Key
        uses: https://github.com/shimataro/ssh-key-action@v2
        with:
          key: ${{ secrets.SSH_PRIVATE_KEY }}
          known_hosts: unnecessary
      - name: Adding Known Hosts
        run: ssh-keyscan -H ${{ secrets.DEPLOY_HOST }} >> ~/.ssh/known_hosts
      - name: Start new screen session
        uses: https://github.com/appleboy/ssh-action@master
        with:
          host: ${{ env.DEPLOY_HOST }}
          username: ${{ env.DEPLOY_USER }}
          key: ${{ secrets.SSH_PRIVATE_KEY }}
          script: |
            PATH="$HOME/.local/bin:$PATH"
            screen -ls | grep 'fgo_ta_com-unlighthouse' | awk '{print $1}' | xargs -I % -t screen -X -S % quit
            cd fgo_ta_com
            screen -S fgo_ta_com-unlighthouse -dm serve unlighthouse/ -p ${{ secrets.UNLIGHTHOUSE_DEPLOY_PORT }}   
