name: basebuild

on:
  pull_request:
  push:

jobs:
  goreleaser:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v3
        with:
          fetch-depth: 0

      - name: Set up Node.js
        uses: actions/setup-node@v3
        with:
          node-version: latest

      - name: Set up Go
        uses: actions/setup-go@v3
        with:
          go-version: '>=1.19.5'

      # This step usually is not needed because the /ui/dist is pregenerated locally
      # but its here to ensure that each release embeds the latest admin ui artifacts.
      # If the artificats differs, a "dirty error" is thrown - https://goreleaser.com/errors/dirty/
      - name: Build Admin dashboard UI
        run: npm --prefix=./ui ci && npm --prefix=./ui run build

      # The prebuilt golangci-lint doesn't support go 1.18+ yet
      # https://github.com/golangci/golangci-lint/issues/2649
      # - name: Run linter
      #   uses: golangci/golangci-lint-action@v3

      - name: Run tests
        run: go test ./...

      - name: Run GoReleaser
        uses: goreleaser/goreleaser-action@v3
        with:
          distribution: goreleaser
          version: latest
          args: release --rm-dist
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
