Go codegen for ClickHouse, DuckDB, Spanner and SQL Server under database/sql #6688
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: go | |
| on: | |
| push: | |
| branches: | |
| - main | |
| pull_request: | |
| jobs: | |
| build: | |
| strategy: | |
| matrix: | |
| goos: [darwin, linux, windows] | |
| goarch: [amd64, arm64] | |
| name: build ${{ matrix.goos }}/${{ matrix.goarch }} | |
| runs-on: ubuntu-24.04 | |
| steps: | |
| - uses: actions/checkout@v7 | |
| - uses: actions/setup-go@v7 | |
| with: | |
| go-version: '1.26.5' | |
| - run: go build ./... | |
| env: | |
| CGO_ENABLED: "0" | |
| GOOS: ${{ matrix.goos }} | |
| GOARCH: ${{ matrix.goarch }} | |
| # sqlc's own tests: the end-to-end suite needs PostgreSQL and MySQL, which | |
| # sqlc-test-setup installs on the runner. | |
| test: | |
| runs-on: ubuntu-24.04 | |
| steps: | |
| - uses: actions/checkout@v7 | |
| - uses: actions/setup-go@v7 | |
| with: | |
| go-version: '1.26.5' | |
| - name: install gotestsum | |
| run: go install gotest.tools/gotestsum@latest | |
| - name: install sqlc-gen-test | |
| run: go install github.com/sqlc-dev/sqlc-gen-test@v0.1.0 | |
| - name: install test-json-process-plugin | |
| run: go install ./scripts/test-json-process-plugin/ | |
| - name: install ./... | |
| run: go install ./... | |
| env: | |
| CGO_ENABLED: "0" | |
| # The DuckDB driver the generated code imports is cgo, so this build | |
| # keeps cgo on. | |
| - name: build internal/endtoend | |
| run: go build ./... | |
| working-directory: internal/endtoend/testdata | |
| - name: install databases | |
| run: go run ./cmd/sqlc-test-setup install postgresql mysql | |
| - name: start databases | |
| run: go run ./cmd/sqlc-test-setup start postgresql mysql | |
| - name: test ./... | |
| run: gotestsum --junitfile junit.xml -- --tags=examples -timeout 20m -failfast ./... | |
| env: | |
| CI_SQLC_PROJECT_ID: ${{ secrets.CI_SQLC_PROJECT_ID }} | |
| CI_SQLC_AUTH_TOKEN: ${{ secrets.CI_SQLC_AUTH_TOKEN }} | |
| SQLC_AUTH_TOKEN: ${{ secrets.CI_SQLC_AUTH_TOKEN }} | |
| POSTGRESQL_SERVER_URI: "postgres://postgres:postgres@127.0.0.1:5432/postgres?sslmode=disable" | |
| MYSQL_SERVER_URI: "root:mysecretpassword@tcp(127.0.0.1:3306)/mysql?multiStatements=true&parseTime=true" | |
| CGO_ENABLED: "0" | |
| # The examples run generated code against every database sqlc supports. | |
| # They are a module of their own, so their drivers are not dependencies | |
| # of sqlc, and cgo stays on for the DuckDB driver. ClickHouse and SQL | |
| # Server run as services; sqlc-test-setup installs PostgreSQL, MySQL and | |
| # Spanner Omni on the runner. | |
| examples: | |
| runs-on: ubuntu-24.04 | |
| services: | |
| clickhouse: | |
| image: clickhouse/clickhouse-server:25.8 | |
| ports: | |
| - 9000:9000 | |
| - 8123:8123 | |
| env: | |
| # A password opens the default user to connections from beyond | |
| # the container; without one the image restricts it to localhost. | |
| CLICKHOUSE_PASSWORD: "mysecretpassword" | |
| mssql: | |
| image: mcr.microsoft.com/mssql/server:2025-latest | |
| ports: | |
| - 1433:1433 | |
| env: | |
| ACCEPT_EULA: "Y" | |
| MSSQL_SA_PASSWORD: "Mysecretpassword1!" | |
| steps: | |
| - uses: actions/checkout@v7 | |
| - uses: actions/setup-go@v7 | |
| with: | |
| go-version: '1.26.5' | |
| - name: install databases | |
| run: go run ./cmd/sqlc-test-setup install | |
| - name: start databases | |
| run: go run ./cmd/sqlc-test-setup start | |
| - name: test examples | |
| run: go test --tags=examples -timeout 20m ./... | |
| working-directory: examples | |
| env: | |
| POSTGRESQL_SERVER_URI: "postgres://postgres:postgres@127.0.0.1:5432/postgres?sslmode=disable" | |
| MYSQL_SERVER_URI: "root:mysecretpassword@tcp(127.0.0.1:3306)/mysql?multiStatements=true&parseTime=true" | |
| CLICKHOUSE_SERVER_URI: "clickhouse://default:mysecretpassword@127.0.0.1:9000" | |
| MSSQL_SERVER_URI: "sqlserver://sa:Mysecretpassword1!@127.0.0.1:1433?encrypt=disable" | |
| SPANNER_SERVER_URI: "localhost:15000" | |
| vuln_check: | |
| runs-on: ubuntu-24.04 | |
| timeout-minutes: 5 | |
| steps: | |
| - uses: golang/govulncheck-action@v1 |