From 36406f5a77126163248b27fd13b4efac6c27ba46 Mon Sep 17 00:00:00 2001 From: Hugo Shaka Date: Tue, 5 Nov 2024 12:11:46 -0500 Subject: [PATCH] [v17] Improve 'Please run' messages in the CI (#48409) * Improve 'Please run error' * add missing file * fix script * Apply suggestions from code review Co-authored-by: Alan Parra * address alan's feedback * Update Makefile Co-authored-by: Alan Parra * Update build.assets/please-run.sh Co-authored-by: Alan Parra --------- Co-authored-by: Alan Parra --- Makefile | 17 +++++---------- build.assets/please-run.sh | 40 ++++++++++++++++++++++++++++++++++ integrations/operator/Makefile | 3 +++ 3 files changed, 49 insertions(+), 11 deletions(-) create mode 100755 build.assets/please-run.sh diff --git a/Makefile b/Makefile index 21d98a24bacd2..cf01a1527efee 100644 --- a/Makefile +++ b/Makefile @@ -1543,8 +1543,7 @@ derive: .PHONY: derive-up-to-date derive-up-to-date: must-start-clean/host derive @if ! git diff --quiet; then \ - echo 'Please run make derive.'; \ - git diff; \ + ./build.assets/please-run.sh "derived functions" "make derive"; \ exit 1; \ fi @@ -1579,15 +1578,14 @@ endif .PHONY: protos-up-to-date/host protos-up-to-date/host: must-start-clean/host grpc/host @if ! git diff --quiet; then \ - echo 'Please run make grpc.'; \ - git diff; \ + ./build.assets/please-run.sh "protos gRPC" "make grpc"; \ exit 1; \ fi .PHONY: must-start-clean/host must-start-clean/host: @if ! git diff --quiet; then \ - echo 'This must be run from a repo with no unstaged commits.'; \ + @echo 'This must be run from a repo with no unstaged commits.'; \ git diff; \ exit 1; \ fi @@ -1597,14 +1595,12 @@ must-start-clean/host: crds-up-to-date: must-start-clean/host $(MAKE) -C integrations/operator manifests @if ! git diff --quiet; then \ - echo 'Please run make -C integrations/operator manifests.'; \ - git diff; \ + ./build.assets/please-run.sh "operator CRD manifests" "make -C integrations/operator crd"; \ exit 1; \ fi $(MAKE) -C integrations/operator crd-docs @if ! git diff --quiet; then \ - echo 'Please run make -C integrations/operator crd-docs.'; \ - git diff; \ + ./build.assets/please-run.sh "operator CRD docs" "make -C integrations/operator crd"; \ exit 1; \ fi @@ -1613,8 +1609,7 @@ crds-up-to-date: must-start-clean/host terraform-resources-up-to-date: must-start-clean/host $(MAKE) -C integrations/terraform docs @if ! git diff --quiet; then \ - echo 'Please run make -C integrations/terraform docs.'; \ - git diff; \ + ./build.assets/please-run.sh "TF provider docs" "make -C integrations/terraform docs"; \ exit 1; \ fi diff --git a/build.assets/please-run.sh b/build.assets/please-run.sh new file mode 100755 index 0000000000000..236684efbb2b1 --- /dev/null +++ b/build.assets/please-run.sh @@ -0,0 +1,40 @@ +#!/bin/sh + +# This script is a helper that tells developers what generated content is out of date +# and which command to run. +# When running on GitHub actions, the script will also create an error in the PR and +# collapse the diff to improve readability. + +set -eu + +# only echoes the string if we are in GitHub Actions +echo_gha() { + [ -n "${GITHUB_ACTIONS+x}" ] && echo "$@" +} + +main() { + if [ $# -ne 2 ]; then + echo "Usage: $0 " >&2 + exit 1 + fi + + KIND="$1" + GENERATE_COMMAND="$2" + + TITLE="$KIND are out-of-date" + MESSAGE="Please run the command \`$GENERATE_COMMAND\`" + + # Create a GitHub error + echo_gha "::error file=Makefile,title=$TITLE::$MESSAGE" + + echo "=============" + echo "$TITLE" + echo "$MESSAGE" + echo "=============" + + echo_gha "::group::Diff output" + git diff || true + echo_gha "::endgroup::" +} + +main "$@" \ No newline at end of file diff --git a/integrations/operator/Makefile b/integrations/operator/Makefile index d57f12e166a26..4073de70029df 100644 --- a/integrations/operator/Makefile +++ b/integrations/operator/Makefile @@ -72,6 +72,9 @@ help: ## Display this help. ##@ Development +.PHONY: crd ## Single command to generate anything CRD-related (manifests and docs) +crd: crdgen crd-docs + .PHONY: crdgen crdgen: ## Generate CRDs make -C crdgen