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
This commit is contained in:
parent
65514559dc
commit
eeaceb07ed
2 changed files with 52 additions and 2 deletions
|
|
@ -113,3 +113,44 @@ jobs:
|
|||
- name: opa test
|
||||
working-directory: ${{ github.workspace }}
|
||||
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
|
||||
|
|
|
|||
13
README.md
13
README.md
|
|
@ -55,6 +55,10 @@ docs/
|
|||
0001-first-rollout-db-app-scope.md
|
||||
0002-session-scope-token-format.md
|
||||
0003-pii-retention-policy.md
|
||||
0004-db-migrations.md
|
||||
db/
|
||||
README.md
|
||||
trust/migrations/0001_per_diem_rates.{up,down}.sql
|
||||
schemas/
|
||||
README.md
|
||||
expense/canonical/{v1.0.0,v1.1.0,v1.2.0}.json
|
||||
|
|
@ -68,9 +72,10 @@ policies/
|
|||
sinks/expense_db_app.rego (+ _test.rego)
|
||||
data_sources/{expense_db_app,receipts,per_diem_rates}.rego (+ _test.rego)
|
||||
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/
|
||||
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.
|
||||
|
|
@ -92,6 +97,10 @@ npx -y ajv-cli@5 compile --spec=draft2020 -c ajv-formats \
|
|||
# Rego
|
||||
opa fmt --list --diff policies/
|
||||
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`.
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue