name: Build Nightly

on:
  push:
    branches:
      - main
  release:
    types:
      - published

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

  deploy:
    name: "Deploy Nightly to Fly.io"
    runs-on: ubuntu-latest
    needs:
      - backend-tests
      - frontend-tests
    steps:
      - uses: actions/checkout@v3
      - uses: superfly/flyctl-actions/setup-flyctl@master
      - run: flyctl deploy --remote-only

  publish-nightly:
    name: "Publish Nightly"
    if: github.event_name != 'release'
    needs:
      - backend-tests
      - frontend-tests
    uses: hay-kot/homebox/.github/workflows/partial-publish.yaml@main
    with:
      tag: nightly
    secrets:
      GH_TOKEN: ${{ secrets.CR_PAT }}

  publish-tag:
    name: "Publish Tag"
    if: github.event_name == 'release'
    needs:
      - backend-tests
      - frontend-tests
    uses: hay-kot/homebox/.github/workflows/partial-publish.yaml@main
    with:
      release: true
      tag: ${{ github.event.release.tag_name }}
    secrets:
      GH_TOKEN: ${{ secrets.CR_PAT }}

  deploy-docs:
    name: Deploy docs
    needs:
      - publish-tag
    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