Skip to content

Commit fb40fa2

Browse files
committed
ci: adds formatting and generated files checks (#180)
Adds a go formatting check to the CI pipeline to ensure code style consistency. Also, adds a check to validate that generated files (openapi client, docs, schema) are up-to-date before allowing a PR to be merged. This prevents merge conflicts and ensures that the generated code is always current. Signed-off-by: Kris Coleman <[email protected]>
1 parent e314979 commit fb40fa2

File tree

3 files changed

+80
-8
lines changed

3 files changed

+80
-8
lines changed

.github/workflows/pr-lint.yml

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,26 @@ permissions:
1515
checks: write
1616

1717
jobs:
18+
format-check:
19+
name: check formatting
20+
runs-on: ubuntu-latest
21+
steps:
22+
- uses: actions/checkout@v4
23+
with:
24+
fetch-depth: 0
25+
- uses: actions/setup-go@v5
26+
with:
27+
go-version-file: 'go.mod'
28+
- name: Check Go formatting
29+
run: |
30+
unformatted=$(go fmt ./...)
31+
if [ -n "$unformatted" ]; then
32+
echo "::error ::The following files need formatting. Please run 'go fmt ./...' or 'make fmt'"
33+
echo "$unformatted"
34+
exit 1
35+
fi
36+
echo "✅ All Go files are properly formatted"
37+
1838
golangci:
1939
name: lint
2040
runs-on: ubuntu-latest

.github/workflows/pr-test.yml

Lines changed: 38 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,8 @@ jobs:
2424
- name: Run tests
2525
run: go test ./...
2626

27-
docs-check:
28-
name: Validate docs
27+
generated-files-check:
28+
name: Validate generated files
2929
runs-on: ubuntu-latest
3030
steps:
3131
- uses: actions/checkout@v4
@@ -36,11 +36,44 @@ jobs:
3636
with:
3737
go-version-file: 'go.mod'
3838

39-
- run: make generate-docs
40-
- name: Check no diff
39+
- name: Generate OpenAPI client
40+
run: make generate-api
41+
- name: Check OpenAPI client is up-to-date
42+
run: |
43+
if [ ! -z "$(git status --porcelain internal/api/client/)" ]; then
44+
echo "::error ::OpenAPI client generation produced diff. Run 'make generate-api' and commit results."
45+
git diff internal/api/client/
46+
exit 1
47+
fi
48+
49+
- name: Generate documentation
50+
run: make generate-docs
51+
- name: Check documentation is up-to-date
52+
run: |
53+
if [ ! -z "$(git status --porcelain docs/)" ]; then
54+
echo "::error ::Documentation generation produced diff. Run 'make generate-docs' and commit results."
55+
git diff docs/
56+
exit 1
57+
fi
58+
59+
- name: Generate schema
60+
run: make generate-schema
61+
- name: Check schema is up-to-date
62+
run: |
63+
if [ ! -z "$(git status --porcelain schema/)" ]; then
64+
echo "::error ::Schema generation produced diff. Run 'make generate-schema' and commit results."
65+
git diff schema/
66+
exit 1
67+
fi
68+
69+
- name: Final check for any uncommitted changes
4170
run: |
4271
if [ ! -z "$(git status --porcelain)" ]; then
43-
echo "::error file=Makefile::Doc generation produced diff. Run 'make generate-docs' and commit results."
72+
echo "::error ::Generation produced uncommitted changes. Please run 'make generate' and commit all changes."
73+
echo "Changed files:"
74+
git status --porcelain
75+
echo ""
76+
echo "Diff:"
4477
git diff
4578
exit 1
4679
fi

lefthook.yml

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,32 @@ pre-commit:
88
stage_fixed: true
99
pre-push:
1010
commands:
11-
generate-docs:
11+
check-generated-files:
1212
run: |
13+
echo "Checking all generated files are up-to-date..."
14+
15+
# Check OpenAPI client
16+
make generate-api
17+
if ! git diff --quiet internal/api/client/; then
18+
echo "❌ OpenAPI client is outdated. Please run 'make generate-api' and commit the changes."
19+
exit 1
20+
fi
21+
22+
# Check documentation
1323
make generate-docs
14-
if ! git diff --quiet; then
15-
echo "Documentation is outdated. Please run 'make generate-docs' and commit the changes."
24+
if ! git diff --quiet docs/; then
25+
echo "❌ Documentation is outdated. Please run 'make generate-docs' and commit the changes."
26+
exit 1
27+
fi
28+
29+
# Check schema
30+
make generate-schema
31+
if ! git diff --quiet schema/; then
32+
echo "❌ Schema is outdated. Please run 'make generate-schema' and commit the changes."
1633
exit 1
1734
fi
35+
36+
echo "✅ All generated files are up-to-date"
1837
skip: false
1938
tests:
2039
run: make test

0 commit comments

Comments
 (0)