Merge pull request #16308 from barrettj12/k3s-operator-update #875
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: "Generate" | |
on: | |
push: | |
pull_request: | |
types: [opened, synchronize, reopened, ready_for_review] | |
paths: | |
- '**.go' | |
- 'go.mod' | |
- '.github/workflows/gen.yml' | |
workflow_dispatch: | |
permissions: | |
contents: read | |
jobs: | |
Generate: | |
name: Generate | |
runs-on: [self-hosted, linux, arm64, aws, xxlarge] | |
if: github.event.pull_request.draft == false | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: Set up Go | |
uses: actions/setup-go@v3 | |
with: | |
go-version-file: 'go.mod' | |
cache: true | |
- name: go get dependencies | |
run: go get ./... | |
- name: Delete all mocks | |
shell: bash | |
run: | | |
for FILE in $(grep '// Code generated by MockGen. DO NOT EDIT.' -r . -l --include \*.go); do | |
rm $FILE | |
done | |
- name: Regenerate code | |
shell: bash | |
run: | | |
# Running go generate by itself is slow over a large codebase, where | |
# all generate directives are dispersed over many files. Instead, the | |
# following uses tools for locating and extracting the directives, | |
# before piping them to go generate in parallel. | |
# | |
# 1. grep for go generate directive in the go files recursively. | |
# 2. Grab the file name of each select file. | |
# 3. Unique every file, so we only go generate the file once. | |
# 4. Using xargs perform go generate in parallel. | |
# | |
grep -ir "//go:generate" . | awk -F : '{ print $1 }' | uniq | xargs -n 1 -P 2 -I% go generate -x $(realpath %) | |
- name: Check diff | |
if: success() || failure() | |
shell: bash | |
run: | | |
# The generation sometimes adds things to go.sum. Tidy to remove these. | |
go mod tidy | |
git add -A | |
if [[ -n $(git diff HEAD) ]]; then | |
# Print the full diff for debugging purposes | |
git diff HEAD | |
echo "*****" | |
echo "The following generated files have been modified:" | |
git diff --name-status HEAD | |
echo "Please regenerate these files and check in the changes." | |
echo "*****" | |
exit 1 | |
fi |