name: Go
  
on:
  push:
    branches:
      - "master"
  pull_request:
    branches:
      - "master"

jobs:
  build:
    name: Build
    runs-on: ubuntu-latest
    environment: docker
    strategy:
      fail-fast: true
      matrix:
        go: ["1.20.x"]

    steps:
        - name: Set up Go ${{ matrix.go }}
          uses: actions/setup-go@v4
          with:
            go-version: ${{ matrix.go }}
          id: go

        - name: Check out code into the Go module directory
          uses: actions/checkout@v3.3.0

        - uses: actions/cache@v3
          with:
            path: |
              ~/go/pkg/mod
              ~/.cache/go-build
            key: ${{ runner.os }}-go-${{ matrix.go-version }}-${{ hashFiles('**/go.sum') }}
            restore-keys: |
              ${{ runner.os }}-go-${{ matrix.go-version }}-

        - name: Run GoReleaser
          uses: goreleaser/goreleaser-action@v4
          with:
            # either 'goreleaser' (default) or 'goreleaser-pro'
            distribution: goreleaser
            version: latest
            args: release --snapshot
          env:
            GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

        - name: Build and push Docker image to docker.io
          uses: mr-smithers-excellent/docker-build-push@v6.2
          with:
            registry: docker.io
            image: sophos/nginx-vtx-exporter
            multiPlatform: true
            addLatest: false
            directory: .
            dockerfile: Dockerfile
            username: ${{ secrets.DOCKER_USER }}
            password: ${{ secrets.DOCKER_PASS }}

        - name: Build and push Docker image to ghcr.io
          uses: mr-smithers-excellent/docker-build-push@v6.2
          with:
            registry: ghcr.io
            image: nginx-vtx-exporter
            multiPlatform: true
            addLatest: false
            directory: .
            dockerfile: Dockerfile
            username: ${{ github.actor }}
            password: ${{ secrets.GITHUB_TOKEN }}