name: CI
on:
push:
branches: [main]
pull_request:
workflow_dispatch:
concurrency:
group: ci-${{ github.ref }}
cancel-in-progress: true
permissions:
contents: read
jobs:
test:
runs-on: ubuntu-latest
timeout-minutes: 30
permissions:
contents: read
services:
postgres:
image: postgres:17-alpine
env:
POSTGRES_USER: sqlc
POSTGRES_PASSWORD: sqlc
POSTGRES_DB: sqlc_test
ports:
- 5432:5432
options: >-
--health-cmd pg_isready
--health-interval 10s
--health-timeout 5s
--health-retries 5
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 with:
persist-credentials: false
- name: Install sqlc
uses: sqlc-dev/setup-sqlc@bac53b7fb28c039a6c7f5736fd1e89744021bdd6 with:
sqlc-version: "1.31.1"
- name: Install Rust stable
uses: dtolnay/rust-toolchain@4360b52568e2003a75bf9bc1d59f33a8e3fc893c with:
targets: wasm32-wasip1
- name: Snapshot tests
run: cargo test --workspace
env:
INSTA_UPDATE: unseen
- name: Build WASM plugin
run: cargo build --target wasm32-wasip1
- name: Integration tests
run: cargo test -p basic
env:
DATABASE_URL: postgres://sqlc:sqlc@localhost:5432/sqlc_test
- name: Verify package
run: cargo package --locked
proto-check:
runs-on: ubuntu-latest
timeout-minutes: 15
permissions:
contents: read
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 with:
persist-credentials: false
- name: Install buf
uses: bufbuild/buf-action@8c6a16e16f12ba20b6470afa9c2ba9b5ba8c97c3 with:
setup_only: true
- name: Install protoc-gen-buffa
run: cargo install protoc-gen-buffa@0.9.1 protoc-gen-buffa-packaging@0.9.1
- name: Verify proto bindings are up to date
run: |
buf generate
cargo fmt --all
git diff --exit-code -- src