name: Build and Publish

on:
  push:
    branches:
      - master

env:
  ZOLA_VERSION: "0.19.2"
  HOST: "receptty.org"
  HOST_DIR: "/srv/www/receptty.org/"
  SSH_USERNAME: ${{ secrets.SSH_USERNAME }}
  SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }}

jobs:
  build:
    runs-on: ubuntu-latest
    outputs:
      artifact-name: build-output

    steps:
      - name: Checkout repository
        uses: actions/checkout@v4

      - name: Install Zola
        run: |
          wget https://github.com/getzola/zola/releases/download/v${ZOLA_VERSION}/zola-v${ZOLA_VERSION}-x86_64-unknown-linux-gnu.tar.gz
          tar -xvzf *.tar.gz

      - name: Build
        run: ./zola build

      - name: Upload site artifact
        uses: actions/upload-artifact@v4
        with:
          name: build-output
          path: public/

  publish:
    runs-on: ubuntu-latest
    needs: build

    steps:
      - name: Download site artifact
        uses: actions/download-artifact@v4
        with:
          name: build-output
          path: public

      - name: Deploy via rsync over SSH
        run: |
          apt update -y && apt-get install -y --no-install-recommends rsync
          eval "$(ssh-agent -s)"
          ssh-add - <<< "${SSH_PRIVATE_KEY}"
          mkdir -p ~/.ssh/
          ssh-keyscan -H ${HOST} >> ~/.ssh/known_hosts
          rsync -r --delete-after public/* "${SSH_USERNAME}@${HOST}:${HOST_DIR}"