ci(users): add pipeline (vet, gofmt, race, lint, migrate, integration)
Mirrors the coordinator workflow against a scimesh_users Postgres service. Switches the test request helper to http.NewRequestWithContext so the noctx linter passes on the go1.22 module.
This commit is contained in:
@@ -0,0 +1,66 @@
|
|||||||
|
name: users
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
paths:
|
||||||
|
- "users/**"
|
||||||
|
- ".github/workflows/users.yml"
|
||||||
|
pull_request:
|
||||||
|
paths:
|
||||||
|
- "users/**"
|
||||||
|
- ".github/workflows/users.yml"
|
||||||
|
|
||||||
|
defaults:
|
||||||
|
run:
|
||||||
|
working-directory: users
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
test:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
services:
|
||||||
|
postgres:
|
||||||
|
image: postgres:16-alpine
|
||||||
|
env:
|
||||||
|
POSTGRES_USER: scimesh
|
||||||
|
POSTGRES_PASSWORD: scimesh
|
||||||
|
POSTGRES_DB: scimesh_users
|
||||||
|
ports:
|
||||||
|
- 5432:5432
|
||||||
|
options: >-
|
||||||
|
--health-cmd "pg_isready -U scimesh"
|
||||||
|
--health-interval 5s
|
||||||
|
--health-timeout 3s
|
||||||
|
--health-retries 10
|
||||||
|
|
||||||
|
env:
|
||||||
|
TEST_DATABASE_URL: postgres://scimesh:scimesh@localhost:5432/scimesh_users?sslmode=disable
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- uses: actions/setup-go@v5
|
||||||
|
with:
|
||||||
|
go-version-file: users/go.mod
|
||||||
|
cache-dependency-path: users/go.sum
|
||||||
|
|
||||||
|
- name: go vet
|
||||||
|
run: go vet ./...
|
||||||
|
|
||||||
|
- name: gofmt
|
||||||
|
run: test -z "$(gofmt -l .)" || (gofmt -l . && exit 1)
|
||||||
|
|
||||||
|
- name: unit tests (race)
|
||||||
|
run: go test -race ./...
|
||||||
|
|
||||||
|
- name: lint
|
||||||
|
run: go run github.com/golangci/golangci-lint/v2/cmd/golangci-lint@v2.12.2 run --build-tags=integration ./...
|
||||||
|
|
||||||
|
- name: install migrate CLI
|
||||||
|
run: go install -tags 'postgres' github.com/golang-migrate/migrate/v4/cmd/migrate@v4.17.1
|
||||||
|
|
||||||
|
- name: apply migrations
|
||||||
|
run: migrate -path migrations -database "$TEST_DATABASE_URL" up
|
||||||
|
|
||||||
|
- name: integration tests
|
||||||
|
run: go test -tags=integration ./internal/storage/postgres/ -v
|
||||||
@@ -47,7 +47,10 @@ func do(t *testing.T, h http.Handler, method, path, token string, body any) *htt
|
|||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
req := httptest.NewRequest(method, path, &buf)
|
req, err := http.NewRequestWithContext(context.Background(), method, path, &buf)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
if token != "" {
|
if token != "" {
|
||||||
req.Header.Set("Authorization", "Bearer "+token)
|
req.Header.Set("Authorization", "Bearer "+token)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user