blob: 4e6acee051337ab170d207d59d3e89263582e564 [file] [log] [blame]
# SPDX-FileCopyrightText: 2026 Matthias Andreas Benkard <code@mail.matthias.benkard.de>
# SPDX-License-Identifier: AGPL-3.0-or-later
# Selbsttätige Prüfung nach README § 17. Drei Läufe nebeneinander:
#
# 1. „pruefung“ — ./mvnw verify: Kompilat, sämtliche Tests (Akzeptanz- und
# Korpuslauf eingeschlossen), Spotless und Enforcer.
# 2. „browserfassung“ — der Wasm-Bau nach § 14 Abs. 5. Er braucht Oracle GraalVM,
# nicht die Community Edition: Web Image ist nur dort enthalten.
# 3. „lizenzauszeichnung“ — reuse lint nach § 16.
#
# Der Beispielkorpus (src/test/resources/sampledata) liegt im Repository; das
# gewöhnliche checkout genügt, nachzuladen ist nichts.
name: CI
on:
push:
branches: [master]
pull_request:
workflow_dispatch:
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
permissions:
contents: read
jobs:
pruefung:
name: Bau und Prüfung (JDK 25)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Java einrichten
uses: actions/setup-java@v4
with:
distribution: temurin
java-version: '25'
cache: maven
- name: mvnw verify
run: ./mvnw --batch-mode --no-transfer-progress verify
- name: Ausführbare Archivdatei aufbewahren
uses: actions/upload-artifact@v4
with:
name: aendggner-jar
path: |
target/aendggner-*.jar
target/libs/
retention-days: 14
# Nur im Fehlerfall: sonst wäre bei jedem grünen Lauf ein Bericht abzulegen,
# den niemand ansieht.
- name: Testberichte im Fehlerfall aufbewahren
if: failure()
uses: actions/upload-artifact@v4
with:
name: surefire-berichte
path: target/surefire-reports/
retention-days: 14
browserfassung:
name: Browserfassung (GraalVM Web Image)
runs-on: ubuntu-26.04
steps:
- uses: actions/checkout@v4
# Binaryen liefert wasm-opt. Fehlt es, bleibt das Modul unnachoptimiert
# (webpaket.sh warnt nur), und die Prüfung gegen die 25-MiB-Grenze von
# Cloudflare Workers misst nicht das, was ausgeliefert würde.
- name: Binaryen einrichten
run: |
sudo apt-get update
sudo apt-get install -y binaryen
- name: Oracle GraalVM einrichten
uses: graalvm/setup-graalvm@v1
with:
distribution: graalvm
java-version: '25'
cache: maven
# Die Tests laufen im Job „pruefung“; hier geht es um den Übersetzungsweg
# (native-image --tool:svm-wasm) und um deploy/webpaket.sh.
- name: mvnw -Pwasm package
run: ./mvnw --batch-mode --no-transfer-progress -Pwasm package -DskipTests
- name: Webpaket aufbewahren
uses: actions/upload-artifact@v4
with:
name: aendggner-web
path: target/web/
retention-days: 14
lizenzauszeichnung:
name: Lizenzauszeichnung (REUSE)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: fsfe/reuse-action@v5