---
name: CI
on:
  pull_request:
  push:
jobs:
  test:
    name: Test
    runs-on: ubuntu-latest
    # Whenever the Go version is updated here, .promu.yml
    # should also be updated.
    container:
      image: quay.io/prometheus/golang-builder:1.22-base
    steps:
      - uses: actions/checkout@v4
      - uses: prometheus/promci@v0.4.7
      - uses: ./.github/promci/actions/setup_environment
      - run: make

  build:
    name: Build
    runs-on: ubuntu-latest
    strategy:
      matrix:
        thread: [ 0, 1, 2 ]
    steps:
      - uses: actions/checkout@v4
      - uses: prometheus/promci@v0.4.7
      - uses: ./.github/promci/actions/build
        with:
          parallelism: 3
          thread: ${{ matrix.thread }}

  golangci:
    name: golangci-lint
    runs-on: ubuntu-latest
    steps:
      - name: Checkout repository
        uses: actions/checkout@v4
      - name: Install Go
        uses: actions/setup-go@v5
        with:
          go-version: '<1.22'
      - name: Lint
        uses: golangci/golangci-lint-action@v6.1.1
        with:
          # Keep in sync with Makefile.common
          version: v1.56.2

  # modified from the original as this repo still using master, insteead of main
  publish_master:
    name: Publish master branch artifacts
    runs-on: ubuntu-latest
    needs: [test, build]
    if: github.event_name == 'push' && github.event.ref == 'refs/heads/master'
    steps:
      - uses: actions/checkout@v4
      - uses: prometheus/promci@v0.4.7
      - uses: ./.github/promci/actions/publish_main
        with:
          docker_hub_organization: lusotycoon
          docker_hub_login: ${{ secrets.docker_hub_login }}
          docker_hub_password: ${{ secrets.docker_hub_password }}
          quay_io_organization: lusitaniae
          quay_io_login: ${{ secrets.quay_io_login }}
          quay_io_password: ${{ secrets.quay_io_password }}

  publish_release:
    name: Publish release arfefacts
    runs-on: ubuntu-latest
    needs: [test, build]
    if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v')
    steps:
      - uses: actions/checkout@v4
      - uses: prometheus/promci@v0.4.7
      - uses: ./.github/promci/actions/publish_release
        with:
          docker_hub_organization: lusotycoon
          docker_hub_login: ${{ secrets.docker_hub_login }}
          docker_hub_password: ${{ secrets.docker_hub_password }}
          quay_io_organization: lusitaniae
          quay_io_login: ${{ secrets.quay_io_login }}
          quay_io_password: ${{ secrets.quay_io_password }}
          github_token: ${{ secrets.PROMBOT_GITHUB_TOKEN }}
