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
|
- 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
|
||||||
|
|
|
||||||
13
README.md
13
README.md
|
|
@ -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`.
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue