e750501b44
- store: pgx 只读数据访问层(productByGTIN/ByID/search/nutriments/msrp/brands/categories/source) - handler: 真实查询替换 501 占位, 统一分页 + 错误信封, MSRP 带免责声明无购买入口 - main: pgxpool 连接池接线 - search: 名称模糊 + 分类子树过滤(ltree <@) - 测试: healthz/pageParams 单测 + DB-backed handler 集成测试(无库自动跳过) - CI: Go job 增加 postgres service + migrate up, 实跑 DB 测试 - 依赖: pgx v5.7.2 (固定到兼容 go1.23 的版本) - 本地实跑: 8 个端点对真实 OFF 数据返回正确(barcode/search/nutriments/msrp/brands/categories/source/404) Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
94 lines
2.6 KiB
YAML
94 lines
2.6 KiB
YAML
name: CI
|
|
|
|
on:
|
|
push:
|
|
branches: [main]
|
|
pull_request:
|
|
|
|
jobs:
|
|
go:
|
|
name: Go (api)
|
|
runs-on: ubuntu-latest
|
|
defaults:
|
|
run:
|
|
working-directory: api
|
|
services:
|
|
postgres:
|
|
image: postgres:16-alpine
|
|
env:
|
|
POSTGRES_USER: opengoods
|
|
POSTGRES_PASSWORD: opengoods
|
|
POSTGRES_DB: opengoods
|
|
ports:
|
|
- "5432:5432"
|
|
options: >-
|
|
--health-cmd "pg_isready -U opengoods"
|
|
--health-interval 5s --health-timeout 5s --health-retries 10
|
|
env:
|
|
OPENGOODS_DATABASE_URL: postgres://opengoods:opengoods@localhost:5432/opengoods?sslmode=disable
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- uses: actions/setup-go@v5
|
|
with:
|
|
go-version: "1.23"
|
|
cache-dependency-path: api/go.sum
|
|
- name: Apply migrations
|
|
working-directory: .
|
|
run: |
|
|
go install -tags 'postgres' github.com/golang-migrate/migrate/v4/cmd/migrate@v4.18.1
|
|
migrate -path migrations -database "$OPENGOODS_DATABASE_URL" up
|
|
- name: Verify gofmt
|
|
run: test -z "$(gofmt -l .)"
|
|
- run: go vet ./...
|
|
- run: go build ./...
|
|
- run: go test ./...
|
|
|
|
python:
|
|
name: Python (ingestion)
|
|
runs-on: ubuntu-latest
|
|
defaults:
|
|
run:
|
|
working-directory: ingestion
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- uses: actions/setup-python@v5
|
|
with:
|
|
python-version: "3.12"
|
|
- name: Install
|
|
run: pip install -e ".[dev]"
|
|
- name: Ruff lint
|
|
run: ruff check .
|
|
- name: Ruff format check
|
|
run: ruff format --check .
|
|
- name: Pytest
|
|
run: pytest -q
|
|
|
|
migrations:
|
|
name: Migrations (postgres)
|
|
runs-on: ubuntu-latest
|
|
services:
|
|
postgres:
|
|
image: postgres:16-alpine
|
|
env:
|
|
POSTGRES_USER: opengoods
|
|
POSTGRES_PASSWORD: opengoods
|
|
POSTGRES_DB: opengoods
|
|
ports:
|
|
- "5432:5432"
|
|
options: >-
|
|
--health-cmd "pg_isready -U opengoods"
|
|
--health-interval 5s --health-timeout 5s --health-retries 10
|
|
env:
|
|
DBURL: postgres://opengoods:opengoods@localhost:5432/opengoods?sslmode=disable
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- uses: actions/setup-go@v5
|
|
with:
|
|
go-version: "1.23"
|
|
- name: Install golang-migrate
|
|
run: go install -tags 'postgres' github.com/golang-migrate/migrate/v4/cmd/migrate@v4.18.1
|
|
- name: Migrate up
|
|
run: migrate -path migrations -database "$DBURL" up
|
|
- name: Migrate down (reversibility)
|
|
run: migrate -path migrations -database "$DBURL" down -all
|