feedvault.se/.github/workflows/go.yml

68 lines
1.5 KiB
YAML

name: Go
on:
push:
pull_request:
workflow_dispatch:
schedule:
- cron: "0 0 * * *"
jobs:
build:
runs-on: ubuntu-latest
env:
GOOSE_DRIVER: postgres
GOOSE_DBSTRING: "user=feedvault password=feedvault dbname=feedvault sslmode=disable"
services:
postgres:
image: postgres:16
env:
POSTGRES_USER: feedvault
POSTGRES_PASSWORD: feedvault
POSTGRES_DB: feedvault
ports:
- 5432:5432
options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5
steps:
- uses: actions/checkout@v4
- name: Set up Go
uses: actions/setup-go@v5
with:
check-latest: true
go-version: stable
- name: Cache Go modules
uses: actions/cache@v3
with:
path: ~/go/pkg/mod
key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
restore-keys: |
${{ runner.os }}-go-
- name: Install Goose
run: go install github.com/pressly/goose/v3/cmd/goose@latest
- name: Goose Status
run: goose -dir sql/schema status
- name: Goose Up (Migrate Database)
run: goose -dir sql/schema up
- name: Test
run: go test ./... -v
- name: Lint
run: go vet ./...
- name: Fmt
run: go fmt ./...
- name: Tidy
run: go mod tidy
- name: Build
run: go build -v -ldflags="-s -w" .