name: Release on: push: tags: - 'v*' jobs: release: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 - name: Install build 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 \ jq curl - name: Tag from ref run: echo "TAG=${GITHUB_REF#refs/tags/}" >> $GITHUB_ENV - name: Build + Tests + Coverage run: | make test make coverage - name: Traceability + Diagramme run: | python3 tools/traceability.py publish docs/traceability python3 tools/render_plantuml.py - name: Cppcheck-Report (XML) run: | 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" 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 # Source-Archiv (was eingecheckt ist) git archive --format=tar.gz \ --prefix="demo-epb-${TAG}/" \ HEAD -o "release/demo-epb-${TAG}-source.tar.gz" # Artefakt-Archiv tar -czf "release/demo-epb-${TAG}-artifacts.tar.gz" -C release "demo-epb-${TAG}" ls -la release/ - name: Release-Notes generieren run: | cat > release/RELEASE_NOTES.md <