Skip to content

Implement total driver system + detach River from pgx/v5 #580

Implement total driver system + detach River from pgx/v5

Implement total driver system + detach River from pgx/v5 #580

Workflow file for this run

name: CI
env:
# Database to connect to that can create other databases with `CREATE DATABASE`.
ADMIN_DATABASE_URL: postgres://postgres:postgres@localhost:5432
# A suitable URL for non-test database.
DATABASE_URL: postgres://postgres:[email protected]:5432/river_dev?sslmode=disable
on:
push:
branches:
- master
pull_request:
jobs:
build_and_test:
runs-on: ubuntu-latest
strategy:
matrix:
go-version:
- "1.22"
- "1.21"
postgres-version: [16, 15, 14]
fail-fast: false
timeout-minutes: 5
services:
postgres:
image: postgres:${{ matrix.postgres-version }}
env:
POSTGRES_PASSWORD: postgres
options: >-
--health-cmd pg_isready
--health-interval 2s
--health-timeout 5s
--health-retries 5
ports:
- 5432:5432
steps:
- uses: actions/checkout@v4
- name: Setup Go ${{ matrix.go-version }}
uses: actions/setup-go@v5
with:
go-version: ${{ matrix.go-version }}
- name: Display Go version
run: go version
- name: Install dependencies
run: |
echo "::group::go get"
go get -t ./...
echo "::endgroup::"
- name: Set up test DBs
run: go run ./internal/cmd/testdbman create
env:
PGHOST: 127.0.0.1
PGPORT: 5432
PGUSER: postgres
PGPASSWORD: postgres
PGSSLMODE: disable
- name: Test
run: go test -p 1 -race ./...
env:
TEST_DATABASE_URL: postgres://postgres:[email protected]:5432/river_testdb?sslmode=disable
- name: Test cmd/river
working-directory: ./cmd/river
run: go test -race ./...
- name: Test riverdriver
working-directory: ./riverdriver
run: go test -race ./...
- name: Test riverdriver/riverdatabasesql
working-directory: ./riverdriver/riverdatabasesql
run: go test -race ./...
- name: Test riverdriver/riverpgxv5
working-directory: ./riverdriver/riverpgxv5
run: go test -race ./...
- name: Test rivertype
working-directory: ./rivertype
run: go test -race ./...
cli:
runs-on: ubuntu-latest
timeout-minutes: 3
services:
postgres:
image: postgres
env:
POSTGRES_PASSWORD: postgres
options: >-
--health-cmd pg_isready
--health-interval 2s
--health-timeout 5s
--health-retries 5
ports:
- 5432:5432
steps:
- uses: actions/setup-go@v5
with:
go-version: "stable"
check-latest: true
- name: Checkout
uses: actions/checkout@v4
- name: Build CLI
run: go build .
working-directory: ./cmd/river
- name: Create database
run: psql --echo-errors --quiet -c '\timing off' -c "CREATE DATABASE river_dev;" ${ADMIN_DATABASE_URL}
- name: river migrate-up
run: ./river migrate-up --database-url $DATABASE_URL
working-directory: ./cmd/river
- name: river validate
run: ./river validate --database-url $DATABASE_URL
working-directory: ./cmd/river
- name: river migrate-down
run: ./river migrate-down --database-url $DATABASE_URL --max-steps 100
working-directory: ./cmd/river
- name: river validate (expect failure)
run: |
if ./river validate --database-url $DATABASE_URL; then
echo "expected non-zero exit code" && exit 1
fi
working-directory: ./cmd/river
golangci:
name: lint
runs-on: ubuntu-latest
env:
GOLANGCI_LINT_VERSION: v1.56
permissions:
contents: read
# allow read access to pull request. Use with `only-new-issues` option.
pull-requests: read
steps:
- uses: actions/setup-go@v5
with:
go-version: "stable"
check-latest: true
- name: Checkout
uses: actions/checkout@v4
- name: Lint
uses: golangci/golangci-lint-action@v4
with:
version: ${{ env.GOLANGCI_LINT_VERSION }}
working-directory: .
- name: Lint cmd/river
uses: golangci/golangci-lint-action@v4
with:
version: ${{ env.GOLANGCI_LINT_VERSION }}
working-directory: ./cmd/river
- name: Lint riverdriver
uses: golangci/golangci-lint-action@v4
with:
version: ${{ env.GOLANGCI_LINT_VERSION }}
working-directory: ./riverdriver
- name: Lint riverdriver/riverdatabasesql
uses: golangci/golangci-lint-action@v4
with:
version: ${{ env.GOLANGCI_LINT_VERSION }}
working-directory: ./riverdriver/riverdatabasesql
- name: Lint riverdriver/riverpgxv5
uses: golangci/golangci-lint-action@v4
with:
version: ${{ env.GOLANGCI_LINT_VERSION }}
working-directory: ./riverdriver/riverpgxv5
- name: Lint rivertype
uses: golangci/golangci-lint-action@v3
with:
version: ${{ env.GOLANGCI_LINT_VERSION }}
working-directory: ./rivertype
producer_sample:
runs-on: ubuntu-latest
timeout-minutes: 2
services:
postgres:
image: postgres
env:
POSTGRES_PASSWORD: postgres
options: >-
--health-cmd pg_isready
--health-interval 2s
--health-timeout 5s
--health-retries 5
ports:
- 5432:5432
steps:
- uses: actions/checkout@v4
- name: Setup Go ${{ matrix.go-version }}
uses: actions/setup-go@v5
with:
go-version: "stable"
check-latest: true
- name: Display Go version
run: go version
- name: Install dependencies
run: |
echo "::group::go get"
go get -t ./...
echo "::endgroup::"
- name: Build CLI
run: go build .
working-directory: ./cmd/river
- name: Create database
run: psql --echo-errors --quiet -c '\timing off' -c "CREATE DATABASE river_dev;" ${ADMIN_DATABASE_URL}
- name: river migrate-up
run: ./cmd/river/river migrate-up --database-url $DATABASE_URL
- name: Build producersample
run: go build ./internal/cmd/producersample
- name: Run producersample
run: |
( sleep 5 && killall -SIGTERM producersample ) &
./producersample
sqlc_generates:
runs-on: ubuntu-latest
timeout-minutes: 2
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup sqlc
uses: sqlc-dev/setup-sqlc@v4
with:
sqlc-version: "1.25.0"
- name: Run sqlc diff
run: |
echo "Please make sure that all sqlc changes are checked in!"
make verify