mirror of https://github.com/coder/coder.git
chore: validate queries using sqlc-vet in github actions (#11163)
This commit is contained in:
parent
dba0dfa859
commit
e52d848d05
|
@ -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
|
||||
|
|
5
Makefile
5
Makefile
|
@ -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.
|
||||
|
|
|
@ -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"
|
||||
|
|
Loading…
Reference in New Issue