prepare v0.6.0 (#234) #433
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: | |
# A suitable URL for the test database. | |
DATABASE_URL: postgres://postgres:[email protected]:5432/river_dev?sslmode=disable | |
# Test database. | |
TEST_DATABASE_URL: postgres://postgres:[email protected]:5432/river_test?sslmode=disable | |
on: | |
push: | |
branches: | |
- master | |
tags: | |
- "v*" | |
pull_request: | |
jobs: | |
go_build_and_test: | |
name: Go build and test | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
go-version: | |
- "1.22" | |
- "1.23" | |
postgres-version: [16, 15] | |
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: | |
- name: Checkout repository | |
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: Install River CLI | |
run: go install github.com/riverqueue/river/cmd/river@latest | |
- name: Create test DB | |
run: createdb river_test | |
env: | |
PGHOST: 127.0.0.1 | |
PGUSER: postgres | |
PGPASSWORD: postgres | |
- name: Migrate test DB | |
run: river migrate-up --database-url "$TEST_DATABASE_URL" | |
# ensure that there is a file in `dist` to prevent a lint error about | |
# it during CI when there is nothing there: | |
- name: touch file in dist | |
run: make fake_assets | |
- name: Test | |
run: go test -race ./... -timeout 2m | |
golangci: | |
name: Go lint | |
runs-on: ubuntu-latest | |
env: | |
GOLANGCI_LINT_VERSION: v1.60 | |
permissions: | |
contents: read | |
# allow read access to pull request. Use with `only-new-issues` option. | |
pull-requests: read | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v4 | |
- uses: actions/setup-go@v5 | |
with: | |
check-latest: true | |
go-version-file: "./go.mod" | |
# ensure that there is a file in `dist` to prevent a lint error about | |
# it during CI when there is nothing there: | |
- name: touch file in dist | |
run: make fake_assets | |
- 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 | |
sqlc_generate: | |
runs-on: ubuntu-latest | |
timeout-minutes: 2 | |
name: sqlc generate | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Setup sqlc | |
uses: sqlc-dev/setup-sqlc@v4 | |
with: | |
sqlc-version: "1.27.0" | |
- name: Run sqlc diff | |
run: | | |
echo "Please make sure that all sqlc changes are checked in!" | |
make verify | |
# js_build_and_test: | |
# runs-on: ubuntu-latest | |
# timeout-minutes: 5 | |
# env: | |
# NODE_ENV: test | |
# permissions: | |
# contents: read | |
js_lint: | |
name: JS Lint | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
node-version: | |
- "20.12.2" | |
fail-fast: false | |
timeout-minutes: 5 | |
env: | |
NODE_ENV: test | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v4 | |
- name: Install Node.js | |
uses: actions/setup-node@v4 | |
with: | |
cache: "npm" | |
cache-dependency-path: package-lock.json | |
node-version: ${{ matrix.node-version }} | |
- name: Install dependencies | |
run: npm install | |
shell: sh | |
- name: Cache ESLint | |
id: cache-eslint | |
uses: actions/cache@v4 | |
with: | |
path: .eslintcache | |
key: eslint-v1-${{ runner.os }}-${{ matrix.node-version }}-${{ hashFiles('**/package-lock.json') }} | |
restore-keys: | | |
eslint-v1-${{ runner.os }}-${{ matrix.node-version }}- | |
- name: Run ESLint ✨ | |
run: npm run lint | |
- name: Run TSC 🔧 | |
run: npm exec tsc | |
# Check tsc compilation even if there were linting issues: | |
if: always() | |
- name: Build 🏗️ | |
run: npm exec vite build | |
release: | |
name: Release | |
permissions: | |
contents: write | |
runs-on: ubuntu-latest | |
timeout-minutes: 5 | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v4 | |
- name: Setup Go | |
uses: actions/setup-go@v5 | |
with: | |
check-latest: true | |
go-version-file: "go.mod" | |
- name: Install Node.js | |
uses: actions/setup-node@v4 | |
with: | |
cache: "npm" | |
cache-dependency-path: package-lock.json | |
node-version: "20.12.2" | |
- name: Install dependencies | |
run: npm install | |
shell: sh | |
- name: Build UI bundle | |
env: | |
NODE_ENV: production | |
VITE_RIVER_API_BASE_URL: /api | |
run: npm exec vite build | |
# We use `export` below so that we can reuse the variables in the command | |
# itself (to make a filename). A subshell is used to make sure the export | |
# doesn't taint the environment (probably not necessary in GitHub Actions, | |
# but in case the command is copy/pasted to a shell where it is). | |
- name: Build Go darwin / amd64 | |
run: $(export GOOS=darwin GOARCH=amd64; go build -o ./build/riverui_${GOOS}_${GOARCH} ./cmd/riverui) | |
- name: Build Go darwin / arm64 | |
run: $(export GOOS=darwin GOARCH=arm64; go build -o ./build/riverui_${GOOS}_${GOARCH} ./cmd/riverui) | |
- name: Build Go linux / amd64 | |
run: $(export GOOS=linux GOARCH=amd64; go build -o ./build/riverui_${GOOS}_${GOARCH} ./cmd/riverui) | |
- name: Build Go linux / arm64 | |
run: $(export GOOS=linux GOARCH=arm64; go build -o ./build/riverui_${GOOS}_${GOARCH} ./cmd/riverui) | |
- name: List binaries | |
run: ls -l ./build | |
- name: Zip binaries | |
run: gzip ./build/* | |
- name: List zipped binaries | |
run: ls -l ./build | |
- name: Cut release | |
uses: softprops/action-gh-release@v2 | |
if: startsWith(github.ref, 'refs/tags/') | |
with: | |
files: | | |
./build/riverui_darwin_amd64.gz | |
./build/riverui_darwin_arm64.gz | |
./build/riverui_linux_amd64.gz | |
./build/riverui_linux_arm64.gz |