ci+readme: add Go CI job (golang:1.23-trixie, vet + test for every services/**/go.mod); README reflects db/, admin-api, go-test commands
Some checks failed
validate / Rego (opa fmt + opa test) (push) Successful in 13s
validate / Go (vet + test) (push) Failing after 1s
validate / JSON Schema (ajv) (push) Successful in 20s

This commit is contained in:
CTO Agent 2026-10-25 17:28:32 +00:00
parent 65514559dc
commit eeaceb07ed
2 changed files with 52 additions and 2 deletions

View file

@ -113,3 +113,44 @@ jobs:
- name: opa test - name: opa test
working-directory: ${{ github.workspace }} working-directory: ${{ github.workspace }}
run: opa test policies/ -v run: opa test policies/ -v
go:
name: Go (vet + test)
runs-on: ubuntu-latest
container:
image: golang:1.23-trixie
steps:
- name: Install git + curl in container
run: |
set -euo pipefail
apt-get update
apt-get install -y --no-install-recommends git curl ca-certificates
git --version
go version
- name: Clone repository (sha256-aware)
run: |
set -euo pipefail
git clone --depth=1 --branch="${GITHUB_REF_NAME}" \
"https://x-access-token:${GITHUB_TOKEN}@forgejo.basicstack.de/${GITHUB_REPOSITORY}.git" "${GITHUB_WORKSPACE}"
cd "${GITHUB_WORKSPACE}"
git log -1 --oneline
- name: Enumerate Go modules
id: mods
working-directory: ${{ github.workspace }}
run: |
set -eu
# List every directory that contains a go.mod and run vet+test there.
# Shell-quoted paths handle spaces.
find services -type f -name 'go.mod' -print | sed 's|/go.mod$||' | sort -u | tee /tmp/go_modules.txt
- name: go vet + test for every module
working-directory: ${{ github.workspace }}
run: |
set -eu
while IFS= read -r m; do
[ -n "$m" ] || continue
echo "=== $m ==="
(cd "$m" && go vet ./... && go test ./...)
done < /tmp/go_modules.txt

View file

@ -55,6 +55,10 @@ docs/
0001-first-rollout-db-app-scope.md 0001-first-rollout-db-app-scope.md
0002-session-scope-token-format.md 0002-session-scope-token-format.md
0003-pii-retention-policy.md 0003-pii-retention-policy.md
0004-db-migrations.md
db/
README.md
trust/migrations/0001_per_diem_rates.{up,down}.sql
schemas/ schemas/
README.md README.md
expense/canonical/{v1.0.0,v1.1.0,v1.2.0}.json expense/canonical/{v1.0.0,v1.1.0,v1.2.0}.json
@ -68,9 +72,10 @@ policies/
sinks/expense_db_app.rego (+ _test.rego) sinks/expense_db_app.rego (+ _test.rego)
data_sources/{expense_db_app,receipts,per_diem_rates}.rego (+ _test.rego) data_sources/{expense_db_app,receipts,per_diem_rates}.rego (+ _test.rego)
services/ services/
per-diem-calculator/ # deterministic calculator (Go), currently skeleton per-diem-calculator/ # deterministic calculator (Go)
admin-api/ # admin surface for per-diem rate management (Go)
.forgejo/workflows/ .forgejo/workflows/
validate.yml # JSON-Schema (ajv) + Rego (opa fmt + opa test) validate.yml # JSON-Schema (ajv) + Rego (opa fmt + opa test) + Go (vet + test)
``` ```
Weitere Verzeichnisse (weitere Services, Deployment-Manifeste, Senken-/Datenquellen-Adapter) folgen im Zuge der Architekturentwicklung. Weitere Verzeichnisse (weitere Services, Deployment-Manifeste, Senken-/Datenquellen-Adapter) folgen im Zuge der Architekturentwicklung.
@ -92,6 +97,10 @@ npx -y ajv-cli@5 compile --spec=draft2020 -c ajv-formats \
# Rego # Rego
opa fmt --list --diff policies/ opa fmt --list --diff policies/
opa test policies/ -v opa test policies/ -v
# Go services
(cd services/admin-api && go vet ./... && go test ./...)
(cd services/per-diem-calculator && go vet ./... && go test ./...)
``` ```
CI (`.forgejo/workflows/validate.yml`) läuft dieselben Prüfungen auf jedem Push und PR gegen `main`. CI (`.forgejo/workflows/validate.yml`) läuft dieselben Prüfungen auf jedem Push und PR gegen `main`.