Expose Config.TestOnly
configuration option for disabling staggered start
#533
Workflow file for this run
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 | |
# 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 | |
- name: river unknown command (expect failure) | |
run: | | |
if ./river not-a-command; 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 |