name: Validate ARC

on:
  pull_request:
    branches:
      - master
    paths-ignore:
      - '**.md'
      - '.github/ISSUE_TEMPLATE/**'
      - '.github/workflows/publish-canary.yaml'
      - '.github/workflows/validate-chart.yaml'
      - '.github/workflows/publish-chart.yaml'
      - '.github/workflows/runners.yaml'
      - '.github/workflows/publish-arc.yaml'
      - '.github/workflows/validate-entrypoint.yaml'
      - '.github/renovate.*'
      - 'runner/**'
      - '.gitignore'
      - 'PROJECT'
      - 'LICENSE'
      - 'Makefile'

permissions:
  contents: read

jobs:
  test-controller:
    name: Test ARC
    runs-on: ubuntu-latest
    steps:
    - name: Checkout
      uses: actions/checkout@v3

    - name: Set-up Go
      uses: actions/setup-go@v3
      with:
        go-version: '1.19'
        check-latest: false

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

    - name: Install kubebuilder
      run: |
        curl -L -O https://github.com/kubernetes-sigs/kubebuilder/releases/download/v2.3.2/kubebuilder_2.3.2_linux_amd64.tar.gz
        tar zxvf kubebuilder_2.3.2_linux_amd64.tar.gz
        sudo mv kubebuilder_2.3.2_linux_amd64 /usr/local/kubebuilder

    - name: Run tests
      run: |
        make test

    - name: Verify manifests are up-to-date
      run: |
        make manifests
        git diff --exit-code
