blob: 4e6acee051337ab170d207d59d3e89263582e564 [file] [log] [blame]
Matthias Andreas Benkard1f8af7b2026-08-31 16:52:34 +02001# SPDX-FileCopyrightText: 2026 Matthias Andreas Benkard <code@mail.matthias.benkard.de>
2# SPDX-License-Identifier: AGPL-3.0-or-later
3
4# Selbsttätige Prüfung nach README § 17. Drei Läufe nebeneinander:
5#
6# 1. „pruefung“ — ./mvnw verify: Kompilat, sämtliche Tests (Akzeptanz- und
7# Korpuslauf eingeschlossen), Spotless und Enforcer.
8# 2. „browserfassung“ — der Wasm-Bau nach § 14 Abs. 5. Er braucht Oracle GraalVM,
9# nicht die Community Edition: Web Image ist nur dort enthalten.
10# 3. „lizenzauszeichnung“ — reuse lint nach § 16.
11#
12# Der Beispielkorpus (src/test/resources/sampledata) liegt im Repository; das
13# gewöhnliche checkout genügt, nachzuladen ist nichts.
14
15name: CI
16
17on:
18 push:
19 branches: [master]
20 pull_request:
21 workflow_dispatch:
22
23concurrency:
24 group: ${{ github.workflow }}-${{ github.ref }}
25 cancel-in-progress: true
26
27permissions:
28 contents: read
29
30jobs:
31
32 pruefung:
33 name: Bau und Prüfung (JDK 25)
34 runs-on: ubuntu-latest
35
36 steps:
37 - uses: actions/checkout@v4
38
39 - name: Java einrichten
40 uses: actions/setup-java@v4
41 with:
42 distribution: temurin
43 java-version: '25'
44 cache: maven
45
46 - name: mvnw verify
47 run: ./mvnw --batch-mode --no-transfer-progress verify
48
49 - name: Ausführbare Archivdatei aufbewahren
50 uses: actions/upload-artifact@v4
51 with:
52 name: aendggner-jar
53 path: |
54 target/aendggner-*.jar
55 target/libs/
56 retention-days: 14
57
58 # Nur im Fehlerfall: sonst wäre bei jedem grünen Lauf ein Bericht abzulegen,
59 # den niemand ansieht.
60 - name: Testberichte im Fehlerfall aufbewahren
61 if: failure()
62 uses: actions/upload-artifact@v4
63 with:
64 name: surefire-berichte
65 path: target/surefire-reports/
66 retention-days: 14
67
68 browserfassung:
69 name: Browserfassung (GraalVM Web Image)
Matthias Andreas Benkardcd960e62026-09-01 06:49:57 +020070 runs-on: ubuntu-26.04
Matthias Andreas Benkard1f8af7b2026-08-31 16:52:34 +020071
72 steps:
73 - uses: actions/checkout@v4
74
75 # Binaryen liefert wasm-opt. Fehlt es, bleibt das Modul unnachoptimiert
76 # (webpaket.sh warnt nur), und die Prüfung gegen die 25-MiB-Grenze von
77 # Cloudflare Workers misst nicht das, was ausgeliefert würde.
78 - name: Binaryen einrichten
79 run: |
80 sudo apt-get update
81 sudo apt-get install -y binaryen
82
83 - name: Oracle GraalVM einrichten
84 uses: graalvm/setup-graalvm@v1
85 with:
86 distribution: graalvm
87 java-version: '25'
88 cache: maven
89
90 # Die Tests laufen im Job „pruefung“; hier geht es um den Übersetzungsweg
91 # (native-image --tool:svm-wasm) und um deploy/webpaket.sh.
92 - name: mvnw -Pwasm package
93 run: ./mvnw --batch-mode --no-transfer-progress -Pwasm package -DskipTests
94
95 - name: Webpaket aufbewahren
96 uses: actions/upload-artifact@v4
97 with:
98 name: aendggner-web
99 path: target/web/
100 retention-days: 14
101
102 lizenzauszeichnung:
103 name: Lizenzauszeichnung (REUSE)
104 runs-on: ubuntu-latest
105
106 steps:
107 - uses: actions/checkout@v4
108
109 - uses: fsfe/reuse-action@v5