name: Build Tagged Release Image
on:
  push:
    tags:
      - '*'

env:
  FULL_TAG: git.mrmeeb.stream/mrmeeb/snmptrap

jobs:
  "Build Image":
    runs-on: [ubuntu-docker-latest, linux/amd64]
    steps:
      - name: Set up QEMU
        uses: docker/setup-qemu-action@v3
      - name: Set up Docker Buildx
        uses: docker/setup-buildx-action@v3
      - name: Login to Gitea Container Registry
        uses: docker/login-action@v3
        with:
          registry: git.mrmeeb.stream
          username: ${{ env.GITHUB_ACTOR }}
          password: ${{ secrets.GTCR_TOKEN }}
      - name: Docker metadata
        id: meta
        uses: docker/metadata-action@v5
        with:
          images: ${{ env.FULL_TAG }}
          tags: |
            type=pep440,pattern={{version}}                        
      - name: Build and push
        uses: docker/build-push-action@v5
        with:
          push: true
          platforms: linux/amd64,linux/arm64
          tags: ${{ steps.meta.outputs.tags }}
          provenance: false
      - name: Notify on failure
        uses: rjstone/discord-webhook-notify@v1
        if: failure()
        with:
          severity: error
          details: Build failed!
          webhookUrl: ${{ secrets.DISCORD_WEBHOOK }}
          username: Gitea
          avatarUrl: ${{ vars.RUNNER_ICON_URL }}
  "Create Release":
    runs-on: ubuntu-latest
    needs: ["Build Image"]
    steps:
      - name: Checkout
        uses: actions/checkout@v4
        with:
          fetch-depth: 0
      - name: Set up Go
        uses: actions/setup-go@v4
        with: 
          go-version: 1.25.0
      - name: Run GoReleaser
        uses: goreleaser/goreleaser-action@v5
        with:
          distribution: goreleaser
          version: latest
          args: release --clean -f .goreleaser-gitea.yaml
        env:
          GITEA_TOKEN: ${{ secrets.GORELEASER_TOKEN }}

  "Notify":
    runs-on: [ubuntu-docker-latest, linux/amd64]
    needs: ["Build Image", "Create Release"]
    steps:
      - name: Notify of success
        uses: rjstone/discord-webhook-notify@v1
        if: success()
        with:
          severity: info
          details: Build succeeded!
          webhookUrl: ${{ secrets.DISCORD_WEBHOOK }}
          username: Gitea
          avatarUrl: ${{ vars.RUNNER_ICON_URL }}