name: Setup build env

description: Clone repo, unshallow, setup go, cache and install tools.

inputs:
  unshallow:
    description: git unshallow
    default: 'true'
  build-cache-key:
    description: build cache prefix

runs:
  using: composite
  steps:
    - shell: bash
      if: ${{ inputs.unshallow == 'true' }}
      run: |
        git fetch --prune --unshallow
    - uses: actions/setup-go@6edd4406fa81c3da01a34fa6f6343087c207a568 # v3.5.0
      with:
        go-version: ~1.19.4
    - uses: actions/cache@4723a57e26efda3a62cbde1812113b730952852d # v3.2.2
      with:
        path: ~/go/pkg/mod
        key: ${{ runner.os }}-go-pkg-mod-${{ hashFiles('**/go.sum') }}-${{ hashFiles('Makefile') }}
    - uses: actions/cache@4723a57e26efda3a62cbde1812113b730952852d # v3.2.2
      with:
        path: ~/.cache/kyverno/tools
        key: ${{ runner.os }}-cache-kyverno-tools-${{ hashFiles('**/go.sum') }}-${{ hashFiles('Makefile') }}
    - uses: actions/cache@4723a57e26efda3a62cbde1812113b730952852d # v3.2.2
      if: ${{ inputs.build-cache-key }}
      with:
        path: ~/.cache/go-build
        key: ${{ runner.os }}-build-cache-${{ inputs.build-cache-key }}-${{ hashFiles('**/go.sum') }}-${{ hashFiles('Makefile') }}
    - shell: bash
      run: |
        go mod download
    - shell: bash
      run: |
        GOCACHE=~/.cache/kyverno/tools make install-tools
