diff --git a/.github/workflows/check_generated_code_drift.yml b/.github/workflows/check_generated_code_drift.yml index ad8b6404f..8b4baf921 100644 --- a/.github/workflows/check_generated_code_drift.yml +++ b/.github/workflows/check_generated_code_drift.yml @@ -3,13 +3,9 @@ on: push: branches: - main - paths: - - 'resources/services/**/*' pull_request: branches: - main - paths: - - 'resources/services/**/*' jobs: check_generated_code_drift: name: Check Generated Code for Drift @@ -49,6 +45,10 @@ jobs: key: ${{ runner.os }}-go-${{ matrix.go }}-${{ hashFiles('**/go.sum') }} restore-keys: | ${{ runner.os }}-go-${{ matrix.go }}- + - name: Fail if new cq-gen config file is missing //check-for-changes + if: steps.changes.outputs.src == 'true' || github.event_name != 'pull_request' + run: | + ./scripts/check-new-files-have-check-for-changes.sh - name: Run go generate on changed service directories if: steps.changes.outputs.src == 'true' || github.event_name != 'pull_request' run: | diff --git a/scripts/check-new-files-have-check-for-changes-flag.sh b/scripts/check-new-files-have-check-for-changes-flag.sh new file mode 100755 index 000000000..7142b7ab5 --- /dev/null +++ b/scripts/check-new-files-have-check-for-changes-flag.sh @@ -0,0 +1,17 @@ +set -x +set -e + +for d in ./resources/services/*/ ; do + # check if there is a new cq-gen .hcl config file + if git diff --name-status origin/main HEAD -- $d | grep -q '^A.*\.hcl$'; then + # .hcl file was newly added + if grep -q '//check-for-changes' "$d"*.hcl; then + echo "cq-gen config files in $d are OK"; + else + echo "//check-for-changes must be present in all new cq-gen config files"; + exit 1; + fi; + else + echo "No new cq-gen config files found in $d" + fi; +done \ No newline at end of file