add Client to work context, helpers to extract it (#145) #420
This file contains 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: CI | |
env: | |
# Database to connect to that can create other databases with `CREATE DATABASE`. | |
ADMIN_DATABASE_URL: postgres://postgres:postgres@localhost:5432 | |
# Just a common place for steps to put binaries they need and which is added | |
# to GITHUB_PATH/PATH. | |
BIN_PATH: /home/runner/bin | |
# A suitable URL for non-test database. | |
DATABASE_URL: postgres://postgres:postgres@127.0.0.1:5432/river_dev?sslmode=disable | |
on: | |
push: | |
branches: | |
- master | |
pull_request: | |
jobs: | |
build_and_test: | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
postgres-version: [16, 15, 14] | |
go-version: | |
- "1.21" | |
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@v3 | |
- name: Setup Go ${{ matrix.go-version }} | |
uses: actions/setup-go@v4 | |
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:postgres@127.0.0.1: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 ./... | |
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@v4 | |
with: | |
go-version: "stable" | |
check-latest: true | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- 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 migrate-down | |
run: ./river migrate-down --database-url $DATABASE_URL --max-steps 100 | |
working-directory: ./cmd/river | |
golangci: | |
name: lint | |
runs-on: ubuntu-latest | |
env: | |
GOLANGCI_LINT_VERSION: v1.55.2 | |
permissions: | |
contents: read | |
# allow read access to pull request. Use with `only-new-issues` option. | |
pull-requests: read | |
steps: | |
- uses: actions/setup-go@v4 | |
with: | |
go-version: "stable" | |
check-latest: true | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: Lint | |
uses: golangci/golangci-lint-action@v3 | |
with: | |
version: ${{ env.GOLANGCI_LINT_VERSION }} | |
working-directory: . | |
- name: Lint cmd/river | |
uses: golangci/golangci-lint-action@v3 | |
with: | |
version: ${{ env.GOLANGCI_LINT_VERSION }} | |
working-directory: ./cmd/river | |
- name: Lint riverdriver | |
uses: golangci/golangci-lint-action@v3 | |
with: | |
version: ${{ env.GOLANGCI_LINT_VERSION }} | |
working-directory: ./riverdriver | |
- name: Lint riverdriver/riverdatabasesql | |
uses: golangci/golangci-lint-action@v3 | |
with: | |
version: ${{ env.GOLANGCI_LINT_VERSION }} | |
working-directory: ./riverdriver/riverdatabasesql | |
- name: Lint riverdriver/riverpgxv5 | |
uses: golangci/golangci-lint-action@v3 | |
with: | |
version: ${{ env.GOLANGCI_LINT_VERSION }} | |
working-directory: ./riverdriver/riverpgxv5 | |
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@v3 | |
- name: Setup Go ${{ matrix.go-version }} | |
uses: actions/setup-go@v4 | |
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@v3 | |
- name: Setup sqlc | |
uses: sqlc-dev/setup-sqlc@v4 | |
with: | |
sqlc-version: "1.24.0" | |
- name: Run sqlc diff | |
run: | | |
echo "Please make sure that all sqlc changes are checked in!" | |
make verify |