feat: Vollstaendige Demo-Doku — Safety, Manuals, Reports, API-Doc
Validate / build-test (macos-latest) (push) Failing after 4s
Validate / build-test (windows-latest) (push) Failing after 15s
Validate / build-test (ubuntu-latest) (push) Failing after 15s
Validate / reports (push) Has been skipped
Release / release (push) Successful in 50s

Neue Word-Dokumente (alle aus Markdown via pandoc):

Safety (docs/safety/):
- HARA.docx — Hazard Analysis & Risk Assessment, leitet ASIL-D ab
- Safety-Case.docx — Argumentation pro Safety Goal (GSN-Stil)
- FMEDA.docx — Pro-Komponente Failure Modes + Diagnostic Coverage
- MISRA-Compliance-Statement.docx — formaler MISRA-Nachweis
- Verification-Report.docx — V-Modell rechte Seite Zusammenfassung
- Tool-Qualification-Cppcheck.docx — Tool-Qual (TCL2/ASIL-D)

Manuals (docs/manuals/):
- User-Manual.docx — Fahrerhandbuch-Auszug
- Service-Manual.docx — Werkstatt-Doku mit UDS-DTCs

CI-Erweiterungen:
- Doxyfile + `make docs` — API-Dokumentation aus src/
- tools/generate_test_report.py + `make test-report` — Test-Summary HTML
- validate.yml: Doxygen + Test-Report als CI-Artefakte
- release.yml: alle Word-Docs + Engineering-Artefakte ins Release-Bundle

README:
- Komplette Tour durch alle Artefakte
- Repo-Struktur-Diagramm aktualisiert
This commit is contained in:
Stefan Lohmaier
2026-05-12 00:55:37 -07:00
parent 84fab72f23
commit c54a9c55d2
21 changed files with 1396 additions and 27 deletions
+53 -19
View File
@@ -13,48 +13,66 @@ jobs:
- name: Checkout
uses: actions/checkout@v4
- name: Install build dependencies
- name: Install dependencies
run: |
sudo apt-get update
sudo apt-get install -y --no-install-recommends \
build-essential gcc make cppcheck lcov \
python3 python3-pip ca-certificates \
doxygen graphviz \
jq curl
- name: Tag from ref
run: echo "TAG=${GITHUB_REF#refs/tags/}" >> $GITHUB_ENV
- name: Build + Tests + Coverage
- name: Build + Tests + Coverage + Test-Report
run: |
make test
make coverage
make test-report
- name: Traceability + Diagramme
- name: Traceability + Diagramme + API-Doc
run: |
python3 tools/traceability.py publish docs/traceability
python3 tools/render_plantuml.py
make docs
- name: Cppcheck-Report (XML)
run: |
mkdir -p build
cppcheck --enable=all --inconclusive --xml --xml-version=2 \
-I src src 2> build/cppcheck-report.xml || true
- name: Release-Bundle paketieren
run: |
BUNDLE_DIR="release/demo-epb-${TAG}"
mkdir -p "$BUNDLE_DIR/coverage" "$BUNDLE_DIR/traceability" "$BUNDLE_DIR/diagrams" "$BUNDLE_DIR/reports"
BUNDLE="release/demo-epb-${TAG}"
mkdir -p "$BUNDLE"/{coverage,traceability,diagrams,api-doc,reports,docs}
cp -r build/coverage-html/* "$BUNDLE_DIR/coverage/" 2>/dev/null || true
cp -r docs/traceability/* "$BUNDLE_DIR/traceability/"
cp -r docs/diagrams/* "$BUNDLE_DIR/diagrams/"
cp build/cppcheck-report.xml "$BUNDLE_DIR/reports/" 2>/dev/null || true
# CI-generierte Artefakte
cp -r build/coverage-html/* "$BUNDLE/coverage/" 2>/dev/null || true
cp -r docs/traceability/* "$BUNDLE/traceability/"
cp -r docs/diagrams/* "$BUNDLE/diagrams/"
cp -r build/api-doc/html/* "$BUNDLE/api-doc/" 2>/dev/null || true
cp build/cppcheck-report.xml "$BUNDLE/reports/" 2>/dev/null || true
cp build/test-report.html "$BUNDLE/reports/" 2>/dev/null || true
cp build/test-report.md "$BUNDLE/reports/" 2>/dev/null || true
# Source-Archiv (was eingecheckt ist)
# Alle Word-Dokumente (Plaene, Safety, Manuals, Audit-Artefakte)
mkdir -p "$BUNDLE/docs/plaene" "$BUNDLE/docs/safety" "$BUNDLE/docs/manuals" \
"$BUNDLE/docs/reviews" "$BUNDLE/docs/non-conformities" "$BUNDLE/docs/misra"
cp docs/*.docx "$BUNDLE/docs/plaene/" 2>/dev/null || true
cp -r docs/safety/* "$BUNDLE/docs/safety/" 2>/dev/null || true
cp -r docs/manuals/* "$BUNDLE/docs/manuals/" 2>/dev/null || true
cp -r docs/reviews/* "$BUNDLE/docs/reviews/" 2>/dev/null || true
cp -r docs/non-conformities/* "$BUNDLE/docs/non-conformities/" 2>/dev/null || true
cp -r misra/records/* "$BUNDLE/docs/misra/" 2>/dev/null || true
# Source archive
git archive --format=tar.gz \
--prefix="demo-epb-${TAG}/" \
HEAD -o "release/demo-epb-${TAG}-source.tar.gz"
# Artefakt-Archiv
# Artefakt-Archiv (Engineering + Docs zusammen)
tar -czf "release/demo-epb-${TAG}-artifacts.tar.gz" -C release "demo-epb-${TAG}"
ls -la release/
@@ -67,20 +85,38 @@ jobs:
Vollstaendige Demo des slohmaier Dev Process anhand einer
EPB-Steuergeraet-Software.
## Was im Release enthalten ist
## Release-Bundle Inhalt
| Asset | Inhalt |
|-------|--------|
| \`demo-epb-${TAG}-source.tar.gz\` | Vollstaendiger Quellcode (git archive) |
| \`demo-epb-${TAG}-artifacts.tar.gz\` | Coverage-HTML, Traceability-Matrix, PlantUML-Diagramme, Cppcheck-Report |
| \`demo-epb-${TAG}-artifacts.tar.gz\` | Alle generierten und kuratierten Dokumente |
### Im Artefakt-Bundle enthalten
**Engineering (CI-generiert):**
- \`coverage/\` — gcov/lcov HTML-Coverage-Report
- \`traceability/\` — Bidirektionale Traceability-Matrix als HTML + JSON
- \`diagrams/\` — PlantUML-Architektur-Diagramme als SVG
- \`api-doc/\` — Doxygen-generierte API-Dokumentation
- \`reports/cppcheck-report.xml\` — Statische Analyse + MISRA
- \`reports/test-report.html\` — Test-Summary mit Anforderungs-Mapping
**Dokumente (Word, kuratiert):**
- \`docs/plaene/\` — PID, PM-/QA-/SWE-/Test-Plan
- \`docs/safety/\` — HARA, Safety Case, FMEDA, MISRA-Compliance, Verification-Report, Tool-Qualification
- \`docs/manuals/\` — User-Manual + Service-Manual
- \`docs/reviews/\` — Review-Protokoll(e)
- \`docs/non-conformities/\` — Non-Conformity-Eintraege
- \`docs/misra/\` — MISRA Deviation Records
## Build-Beweis
- Alle Unit-Tests gruen (Linux-Runner verbindlich)
- Alle 41 Unit-Tests gruen (Linux-Runner verbindlich)
- Coverage gemessen mit gcov/lcov
- Statische Analyse mit Cppcheck
- MISRA-Check (siehe Cppcheck-Report)
- Traceability bidirektional verifiziert (siehe Matrix)
- Statische Analyse mit Cppcheck (0 Findings)
- MISRA-C:2012 Compliance bestaetigt (1 Advisory Deviation)
- Traceability bidirektional verifiziert (50 Items)
## Referenzen
@@ -97,7 +133,6 @@ jobs:
REPO="${GITHUB_REPOSITORY##*/}"
API="${GITHUB_SERVER_URL}/api/v1"
# Create release (idempotent: if exists, fetch)
BODY=$(jq -Rs '.' < release/RELEASE_NOTES.md)
RESP=$(curl -sf -X POST \
-H "Authorization: token ${GITEA_TOKEN}" \
@@ -109,7 +144,6 @@ jobs:
RELEASE_ID=$(echo "$RESP" | jq -r '.id')
echo "Release-ID: $RELEASE_ID"
# Upload each asset
for f in release/demo-epb-${TAG}-source.tar.gz \
release/demo-epb-${TAG}-artifacts.tar.gz; do
NAME=$(basename "$f")