ci: add sqlc generation gate to PR workflow
New sqlc-check Makefile target runs sqlc generate and fails if generated code differs from committed files (git diff --exit-code). CI job installs sqlc and runs the check after fmt-check, preventing schema/query drift.
This commit is contained in:
parent
e126808864
commit
db0ec104cd
2 changed files with 50 additions and 1 deletions
18
.github/workflows/pr.yml
vendored
18
.github/workflows/pr.yml
vendored
|
|
@ -20,6 +20,24 @@ jobs:
|
||||||
make fmt
|
make fmt
|
||||||
git diff --exit-code || (echo "::error::Code is not formatted. Run 'make fmt' and commit the changes." && exit 1)
|
git diff --exit-code || (echo "::error::Code is not formatted. Run 'make fmt' and commit the changes." && exit 1)
|
||||||
|
|
||||||
|
sqlc-check:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
needs: fmt-check
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Setup Go
|
||||||
|
uses: actions/setup-go@v5
|
||||||
|
with:
|
||||||
|
go-version-file: go.mod
|
||||||
|
|
||||||
|
- name: Install sqlc
|
||||||
|
run: go install github.com/sqlc-dev/sqlc/cmd/sqlc@latest
|
||||||
|
|
||||||
|
- name: Check sqlc generated code
|
||||||
|
run: make sqlc-check
|
||||||
|
|
||||||
vet:
|
vet:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
needs: fmt-check
|
needs: fmt-check
|
||||||
|
|
|
||||||
33
Makefile
33
Makefile
|
|
@ -1,4 +1,5 @@
|
||||||
.PHONY: all build install uninstall clean help test
|
.PHONY: all build install uninstall clean help test \
|
||||||
|
fantasy-check fantasy-diff fantasy-sync fantasy-patch
|
||||||
|
|
||||||
# Build variables
|
# Build variables
|
||||||
BINARY_NAME=picoclaw
|
BINARY_NAME=picoclaw
|
||||||
|
|
@ -144,6 +145,36 @@ update-deps:
|
||||||
@$(GO) get -u ./...
|
@$(GO) get -u ./...
|
||||||
@$(GO) mod tidy
|
@$(GO) mod tidy
|
||||||
|
|
||||||
|
## sqlc-check: Verify sqlc-generated code is up to date
|
||||||
|
sqlc-check:
|
||||||
|
@echo "Checking sqlc generation..."
|
||||||
|
@sqlc generate -f pkg/memory/sqlc/sqlc.yaml
|
||||||
|
@git diff --exit-code -- pkg/memory/sqlc/ || (echo "::error::sqlc generated code is stale. Run 'sqlc generate -f pkg/memory/sqlc/sqlc.yaml' and commit." && exit 1)
|
||||||
|
@echo "sqlc OK"
|
||||||
|
|
||||||
|
# ---------------------------------------------------------------------------
|
||||||
|
# Fantasy SDK vendor management
|
||||||
|
# Usage: make fantasy-diff FANTASY_VERSION=v0.9.0
|
||||||
|
# make fantasy-sync FANTASY_VERSION=v0.9.0
|
||||||
|
# ---------------------------------------------------------------------------
|
||||||
|
FANTASY_VERSION ?=
|
||||||
|
|
||||||
|
## fantasy-check: Compare vendored Fantasy SDK against latest upstream
|
||||||
|
fantasy-check:
|
||||||
|
@./scripts/sync-fantasy.sh --check
|
||||||
|
|
||||||
|
## fantasy-diff: Show diff between vendored and upstream (optional FANTASY_VERSION=vX.Y.Z)
|
||||||
|
fantasy-diff:
|
||||||
|
@./scripts/sync-fantasy.sh --diff $(FANTASY_VERSION)
|
||||||
|
|
||||||
|
## fantasy-sync: Full sync of vendored Fantasy SDK (optional FANTASY_VERSION=vX.Y.Z)
|
||||||
|
fantasy-sync:
|
||||||
|
@./scripts/sync-fantasy.sh --sync $(FANTASY_VERSION)
|
||||||
|
|
||||||
|
## fantasy-patch: Save local modifications as a patch (requires NAME=description)
|
||||||
|
fantasy-patch:
|
||||||
|
@./scripts/sync-fantasy.sh --save-patch $(NAME)
|
||||||
|
|
||||||
## check: Run vet, fmt, and verify dependencies
|
## check: Run vet, fmt, and verify dependencies
|
||||||
check: deps fmt vet test
|
check: deps fmt vet test
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue