name: checks
on:
  pull_request:
  push:
    branches:
      - 'release-*'
      - 'master'
      - 'main'
    tags:
      - 'v*'
jobs:
  generate:
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        os:
          - macos-latest
          - ubuntu-latest
    name: Generate and format
    steps:
    - uses: actions/checkout@v4
    - name: Import environment variables from file
      run: cat ".github/env" >> $GITHUB_ENV
    - uses: actions/setup-go@v4
      with:
        go-version: '${{ env.golang-version }}'
        check-latest: true
    - run: make --always-make format generate && git diff --exit-code

  check-docs:
    runs-on: ubuntu-latest
    name: Check Documentation formatting and links
    steps:
    - uses: actions/checkout@v4
    - name: Import environment variables from file
      run: cat ".github/env" >> $GITHUB_ENV
    - uses: actions/setup-go@v4
      with:
        go-version: '${{ env.golang-version }}'
        check-latest: true
    - run: make check-docs

  check-golang:
    runs-on: ubuntu-latest
    name: Golang linter
    steps:
      - uses: actions/checkout@v4
      - name: Import environment variables from file
        run: cat ".github/env" >> $GITHUB_ENV
      - uses: actions/setup-go@v4
        with:
          go-version: '${{ env.golang-version }}'
          check-latest: true
      - name: go.mod
        run: make tidy && git diff --exit-code
      - name: golangci-lint
        uses: golangci/golangci-lint-action@v3.7.0
        with:
          version: v1.55.2
          args: --timeout 10m0s

  check-metrics:
    runs-on: ubuntu-latest
    name: Check prometheus metrics
    steps:
    - uses: actions/checkout@v4
    - name: Import environment variables from file
      run: cat ".github/env" >> $GITHUB_ENV
    - uses: actions/setup-go@v4
      with:
        go-version: '${{ env.golang-version }}'
        check-latest: true
    - run: make check-metrics

  build:
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        os:
          - macos-latest
          - ubuntu-latest
    name: Build operator binary
    steps:
    - uses: actions/checkout@v4
    - name: Import environment variables from file
      run: cat ".github/env" >> $GITHUB_ENV
    - uses: actions/setup-go@v4
      with:
        go-version: '${{ env.golang-version }}'
        check-latest: true
    - run: make operator
  po-rule-migration:
    runs-on: ubuntu-latest
    name: Build Prometheus Operator rule config map to rule file CRDs CLI tool
    steps:
    - uses: actions/checkout@v4
    - name: Import environment variables from file
      run: cat ".github/env" >> $GITHUB_ENV
    - uses: actions/setup-go@v4
      with:
        go-version: '${{ env.golang-version }}'
        check-latest: true
    - run: cd cmd/po-rule-migration && go install

