name: Publish Release

on:
  push:
    tags:
      - v*

env:
  FLY_API_TOKEN: ${{ secrets.FLY_API_TOKEN }}

jobs:
  backend-tests:
    name: "Backend Server Tests"
    uses: hay-kot/homebox/.github/workflows/partial-backend.yaml@main

  frontend-tests:
    name: "Frontend and End-to-End Tests"
    uses: hay-kot/homebox/.github/workflows/partial-frontend.yaml@main

  goreleaser:
    name: goreleaser
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v3
        with:
          fetch-depth: 0

      - name: Set up Go
        uses: actions/setup-go@v4

      - uses: pnpm/action-setup@v2
        with:
          version: 7.30.1

      - name: Build Frontend and Copy to Backend
        working-directory: frontend
        run: |
          pnpm install --shamefully-hoist
          pnpm run build
          cp -r ./.output/public ../backend/app/api/static/

      - name: Run GoReleaser
        uses: goreleaser/goreleaser-action@v4
        with:
          workdir: "backend"
          distribution: goreleaser
          version: latest
          args: release --clean
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

  publish-tag:
    name: "Publish Tag"
    uses: hay-kot/homebox/.github/workflows/partial-publish.yaml@main
    with:
      release: true
      tag: ${{ github.ref_name }}
    secrets:
      GH_TOKEN: ${{ secrets.CR_PAT }}

  deploy-docs:
    name: Deploy docs
    needs:
      - publish-tag
      - goreleaser
    runs-on: ubuntu-latest
    steps:
      - name: Checkout main
        uses: actions/checkout@v3

      - name: Deploy docs
        uses: mhausenblas/mkdocs-deploy-gh-pages@master
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          CONFIG_FILE: docs/mkdocs.yml
          EXTRA_PACKAGES: build-base