Diff check and manifest generation GitHub Actions

For Go projects it’s crucial that you don’t forget to run go mod tidy from time to time. Combine that with a project that includes Kubernetes controllers and the other thing people tend to forget is running make manifest && make generate.

To check for these I added a small GitHub action that looks like this:

name: Check for diff after manifest and generated targets

on:
  pull_request: {}

jobs:
  diff-check-manifests:
    name: Check for diff
    runs-on: ubuntu-latest
    steps:
    - name: Checkout
      uses: actions/checkout@v3
      with:
        fetch-depth: 0
    - name: Make manifests && generate
      run: |
        make manifests && make generate        
    - name: Setup Go
      uses: actions/setup-go@v3
      with:
        go-version-file: '${{ github.workspace }}/go.mod'
    - name: Restore Go cache
      uses: actions/cache@v3
      with:
        path: /home/runner/work/_temp/_github_home/go/pkg/mod
        key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
        restore-keys: |
          ${{ runner.os }}-go-          
    - name: go mod tidy
      run: |
        go mod tidy        
    - name: Check for diff
      run: |
        git diff --exit-code --shortstat        

Small but effective and saved my behind a couple times now.

That is all.