name: release

on:
  push:
    tags:
      - "v*"

permissions:
  contents: write

jobs:
  build-mac:
    runs-on: macos-latest
    steps:
      - name: Code checkout
        uses: actions/checkout@v4
        with:
          fetch-depth: 0
      - name: Set up Go
        uses: actions/setup-go@v5
        with:
          go-version: 1.19
      - name: Run GoReleaser
        uses: goreleaser/goreleaser-action@v5
        with:
          version: v0.184.0
          args: release -f .goreleaser/mac.yml --rm-dist
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          GORELEASER_GITHUB_TOKEN: ${{ secrets.GORELEASER_GITHUB_TOKEN }}

  build-linux:
    runs-on: ubuntu-latest
    env:
      # https://goreleaser.com/customization/docker_manifest/
      DOCKER_CLI_EXPERIMENTAL: "enabled"

    steps:
      - name: Code checkout
        uses: actions/checkout@v4
        with:
          fetch-depth: 0
      -
        name: Docker Login
        env:
          DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
          DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }}
        run: |
          echo "${DOCKER_PASSWORD}" | docker login --username "${DOCKER_USERNAME}" --password-stdin
      - name: Set up Docker Buildx
        uses: docker/setup-buildx-action@v3
      - name: Set up Go
        uses: actions/setup-go@v5
        with:
          go-version: 1.19
      - name: Run GoReleaser
        uses: goreleaser/goreleaser-action@v5
        with:
          version: v0.184.0
          args: release -f .goreleaser/linux.yml --rm-dist
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          ARTIFACTORY_SECRET: ${{ secrets.ARTIFACTORY_SECRET }}

  build-windows:
    runs-on: windows-latest
    steps:
      - name: Code checkout
        uses: actions/checkout@v4
        with:
          fetch-depth: 0
      - name: Set up Go
        uses: actions/setup-go@v5
        with:
          go-version: 1.19
      - name: Run GoReleaser
        uses: goreleaser/goreleaser-action@v2
        with:
          version: v0.184.0
          args: release -f .goreleaser/windows.yml --rm-dist
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          GORELEASER_GITHUB_TOKEN: ${{ secrets.GORELEASER_GITHUB_TOKEN }}

  upload-to-virustotal:
    needs: [build-windows]
    runs-on: ubuntu-latest
    steps:
      - name: Code checkout
        uses: actions/checkout@v4
      - name: Upload to VirusTotal
        run: scripts/upload-zip-to-virustotal.sh
        shell: bash
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          VIRUSTOTAL_API_KEY: ${{ secrets.VIRUSTOTAL_API_KEY }}
