name: Docker Build Production

on:
  release:
    types: [published]

jobs:
  backend-tests:
    name: "Backend Server Tests"
    uses: ./.github/workflows/partial-backend.yml

  frontend-tests:
    name: "Frontend and End-to-End Tests"
    uses: ./.github/workflows/partial-frontend.yml

  build-release:
    permissions:
      contents: read
      packages: write
      # The id-token write permission is needed to connect to Depot.dev
      # as part of the partial-builder.yml action. It needs to be declared
      # in the parent action, as noted here:
      # https://github.com/orgs/community/discussions/76409#discussioncomment-8131390
      id-token: write
    name: Build Tagged Release
    uses: ./.github/workflows/partial-builder.yml
    needs:
      - backend-tests
      - frontend-tests
    with:
      tag: ${{ github.event.release.tag_name }}
      tags: |
          hkotel/mealie:latest
          ghcr.io/${{ github.repository }}:latest
    secrets:
      DOCKERHUB_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }}
      DOCKERHUB_TOKEN: ${{ secrets.DOCKERHUB_TOKEN }}

  notify-discord:
    name: Notify Discord
    needs:
      - build-release
    runs-on: ubuntu-latest
    steps:
      - name: Discord notification
        env:
          DISCORD_WEBHOOK: ${{ secrets.DISCORD_RELEASE_WEBHOOK }}
        uses: Ilshidur/action-discord@0.3.2
        with:
          args: "🚀  Version {{ EVENT_PAYLOAD.release.tag_name }} of Mealie has been released. See the release notes https://github.com/mealie-recipes/mealie/releases/tag/{{ EVENT_PAYLOAD.release.tag_name }}"

  update-image-tags:
    name: Update image tag in sample docker-compose files
    needs:
      - build-release
    runs-on: ubuntu-latest
    permissions:
      contents: write
      pull-requests: write
    steps:
      - name: Checkout 🛎
        uses: actions/checkout@v4

      - name: Modify version strings
        run: |
          sed -i 's/:v[0-9]*.[0-9]*.[0-9]*/:${{ github.event.release.tag_name }}/' docs/docs/documentation/getting-started/installation/sqlite.md
          sed -i 's/:v[0-9]*.[0-9]*.[0-9]*/:${{ github.event.release.tag_name }}/' docs/docs/documentation/getting-started/installation/postgres.md

      - name: Create Pull Request
        uses: peter-evans/create-pull-request@v6
        # This doesn't currently work for us because it creates the PR but the workflows don't run.
        # TODO: Provide a personal access token as a parameter here, that solves that problem.
        # https://github.com/peter-evans/create-pull-request
        with:
          commit-message: "Update image tag, for release ${{ github.event.release.tag_name }}"
          branch: "docs/newrelease-update-version-${{ github.event.release.tag_name }}"
          delete-branch: true
          base: mealie-next
          title: "docs(auto): Update image tag, for release ${{ github.event.release.tag_name }}"
          body: "Auto-generated by `.github/workflows/release.yml`, on publish of release ${{ github.event.release.tag_name }}"
