chore: validate queries using sqlc-vet in github actions (#11163)

This commit is contained in:
Steven Masley 2023-12-12 15:53:26 -06:00 committed by GitHub
parent dba0dfa859
commit e52d848d05
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 42 additions and 0 deletions

View File

@ -36,6 +36,7 @@ jobs:
ts: ${{ steps.filter.outputs.ts }}
k8s: ${{ steps.filter.outputs.k8s }}
ci: ${{ steps.filter.outputs.ci }}
db: ${{ steps.filter.outputs.db }}
offlinedocs-only: ${{ steps.filter.outputs.offlinedocs_count == steps.filter.outputs.all_count }}
offlinedocs: ${{ steps.filter.outputs.offlinedocs }}
steps:
@ -57,6 +58,12 @@ jobs:
- "examples/web-server/**"
- "examples/monitoring/**"
- "examples/lima/**"
db:
- "**.sql"
- "coderd/database/queries/**"
- "coderd/database/migrations"
- "coderd/database/sqlc.yaml"
- "coderd/database/dump.sql"
go:
- "**.sql"
- "**.go"
@ -618,6 +625,7 @@ jobs:
- test-js
- test-e2e
- offlinedocs
- sqlc-vet
# Allow this job to run even if the needed jobs fail, are skipped or
# cancelled.
if: always()
@ -908,3 +916,26 @@ jobs:
echo "::endgroup::"
done
# sqlc-vet runs a postgres docker container, runs Coder migrations, and then
# runs sqlc-vet to ensure all queries are valid. This catches any mistakes
# in migrations or sqlc queries that makes a query unable to be prepared.
sqlc-vet:
runs-on: ${{ github.repository_owner == 'coder' && 'buildjet-8vcpu-ubuntu-2204' || 'ubuntu-latest' }}
needs: changes
if: needs.changes.outputs.db == 'true' || github.ref == 'refs/heads/main'
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 1
# We need golang to run the migration main.go
- name: Setup Go
uses: ./.github/actions/setup-go
- name: Setup sqlc
uses: ./.github/actions/setup-sqlc
- name: Setup and run sqlc vet
run: |
make sqlc-vet

View File

@ -708,6 +708,11 @@ test:
gotestsum --format standard-quiet -- -v -short -count=1 ./...
.PHONY: test
sqlc-vet: test-postgres-docker
echo "--- sqlc vet"
SQLC_DATABASE_URL="postgresql://postgres:postgres@localhost:5432/$(shell go run scripts/migrate-ci/main.go)" \
sqlc vet -f coderd/database/sqlc.yaml && echo "Passed sqlc vet"
# When updating -timeout for this test, keep in sync with
# test-go-postgres (.github/workflows/coder.yaml).
# Do add coverage flags so that test caching works.

View File

@ -82,6 +82,12 @@ sql:
- schema: "./dump.sql"
queries: "./queries"
engine: "postgresql"
# This only works if you are running a local postgres database with the
# schema loaded and migrations run. Run `make sqlc-vet` to run the linter.
database:
uri: "${SQLC_DATABASE_URL}"
rules:
- sqlc/db-prepare
gen:
go:
package: "database"