Skip to content

InsertOpts option to reconcile metadata where multiple are encountered #391

InsertOpts option to reconcile metadata where multiple are encountered

InsertOpts option to reconcile metadata where multiple are encountered #391

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:postgres@127.0.0.1:5432/river_dev?sslmode=disable
# Test database.
TEST_DATABASE_URL: postgres://postgres:postgres@127.0.0.1:5432/river_testdb?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
working-directory: .
run: go test -p 1 -race ./... -timeout 2m
- name: Test cmd/river
working-directory: ./cmd/river
run: go test -race ./... -timeout 2m
- name: Test riverdriver
working-directory: ./riverdriver
run: go test -race ./... -timeout 2m
- name: Test riverdriver/riverdatabasesql
working-directory: ./riverdriver/riverdatabasesql
run: go test -race ./... -timeout 2m
- name: Test riverdriver/riverpgxv5
working-directory: ./riverdriver/riverpgxv5
run: go test -race ./... -timeout 2m
- name: Test rivertype
working-directory: ./rivertype
run: go test -race ./... -timeout 2m
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}
- run: ./river migrate-get --down --version 3
working-directory: ./cmd/river
- run: ./river migrate-get --up --version 3
working-directory: ./cmd/river
- run: ./river migrate-get --all --exclude-version 1 --down
working-directory: ./cmd/river
- run: ./river migrate-get --all --exclude-version 1 --up
working-directory: ./cmd/river
- 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 bench
run: |
( sleep 10 && killall -SIGTERM river ) &
./river bench --database-url $DATABASE_URL
working-directory: ./cmd/river
# Bench again in fixed number of jobs mode.
- name: river bench
run: |
( sleep 10 && killall -SIGTERM river ) &
./river bench --database-url $DATABASE_URL --num-total-jobs 1_234
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:
# golangci-lint needs to be run separately for every Go module, and
# its GitHub Action doesn't provide any way to do that. Have it fetch
# the golangci-lint binary, trick it into not running by sending only
# `--help`, then run the full set of lints below. DO NOT run separate
# modules as separate golangci-lint-action steps. Its post run caching
# can be extremely slow, and that's amplified in a very painful way if
# it needs to be run multiple times.
args: --help
version: ${{ env.GOLANGCI_LINT_VERSION }}
- name: Run lint
run: make lint
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