diff options
| -rw-r--r-- | FASSUNGEN.txt | 38 | ||||
| -rw-r--r-- | README.md | 11 | ||||
| -rwxr-xr-x | deploy/cloudflare.sh | 44 | ||||
| -rw-r--r-- | pom.xml | 40 |
4 files changed, 87 insertions, 46 deletions
diff --git a/FASSUNGEN.txt b/FASSUNGEN.txt index ae36571..cec0075 100644 --- a/FASSUNGEN.txt +++ b/FASSUNGEN.txt @@ -261,6 +261,44 @@ Aufnahme des rheinland-pfälzischen Landesrechts (6) Der Prüfbestand umfasst dreihundertfünfzig Prüfungen. +Artikel 9 +Auslieferung als Phase des Baues + +Die Auslieferung der Browserfassung lag bislang außerhalb des Baues: Ein Skript +(„deploy/cloudflare.sh“) rief nacheinander den Bau und das Hochladen. Die +gleichnamige Phase des Baues selbst war unbesetzt und hätte, gerufen, den Bau zum +Erliegen gebracht, weil das Erzeugnis kein Empfangsverzeichnis („distribution- +Management“) benennt. + +(1) Das Ziel „deploy:deploy“ wird stillgelegt. Das Erzeugnis ist eine Anwendung, + keine Bibliothek; es geht in kein Maven-Verzeichnis, und seine Fassungs- + bezeichnung („${revision}“) ergäbe dort ohnehin kein brauchbares Erzeugnis- + modell. Das Ziel „install“ bleibt unberührt. + +(2) Die freigewordene Phase nimmt im Profil „wasm“ den Aufruf von „wrangler + deploy“ auf. Hochgeladen wird allein das Verzeichnis, das die Phase „package“ + auslieferfertig hinterlassen hat; welches es ist, sagt „wrangler.toml“. + Fortan baut und liefert ein einziger Aufruf aus: + + JAVA_HOME=/pfad/zu/oracle-graalvm ./mvnw -Pwasm deploy + + Die Prüfungen aus „webpaket.sh“ — sauberer Arbeitsbaum für den beizulegenden + Quelltext (AGPLv3 § 13) und die Grenze von 25 MiB je Datei — liegen dabei vor + dem Hochladen und halten den Lauf an, ehe etwas hinausgeht. + +(3) Das Skript „deploy/cloudflare.sh“ entfällt; es wäre nach dem Vorstehenden nur + noch die Doppelung dreier Aufrufe. Der Handbuchtext (§ 15 Absatz 1) wird + entsprechend gefasst. + +(4) Ohne das Profil „wasm“ liefert die Phase nichts aus und bricht auch nicht ab. + +(5) Die Prüfung geht auf: „./mvnw deploy“ vermerkt „Skipping artifact deployment“ + und läuft durch; „./mvnw -Pwasm deploy“ führt die Ausführung „cloudflare“ an + der Phase „deploy“ auf; „wrangler deploy --dry-run“ liest die dreizehn Dateien + des Auslieferungsverzeichnisses, ohne auszuliefern; „./mvnw verify“ besteht + mit dreihundertfünfzig Prüfungen. + + ════════════════════════════════════════════════════════════════════════════════ Fassung vom 23. August 2026, zuletzt geändert durch die am 23. August 2026 vorgenommenen Änderungen @@ -624,12 +624,19 @@ Cloudflare Workers. Dort gilt eine Grenze von 25 MiB je Datei — unkomprimiert gemessen —, und komprimiert wird beim Ausliefern ohnehin. `webpaket.sh` legt deshalb keine `.gz`/`.br`-Beilagen mehr an und hält am Ende jede Datei gegen diese Grenze; überschreitet eine sie, so bricht der Bau ab, statt das Hochladen -scheitern zu lassen. +scheitern zu lassen. Die Phase `package` baut nur; `deploy` lädt das Gebaute +überdies mit `wrangler` nach `wrangler.toml` hoch: ```shell -JAVA_HOME=/pfad/zu/oracle-graalvm ./mvnw -Pwasm package +JAVA_HOME=/pfad/zu/oracle-graalvm ./mvnw -Pwasm package # nur bauen +JAVA_HOME=/pfad/zu/oracle-graalvm ./mvnw -Pwasm deploy # bauen und ausliefern ``` +Vorausgesetzt wird ein angemeldetes `wrangler` im Pfad. Ohne `-Pwasm` liefert +`deploy` nichts aus: Das Erzeugnis geht in kein Maven-Repositorium, weshalb das +Ziel `deploy:deploy` stillgelegt ist und die Phase allein der Auslieferung der +Browserfassung dient. + (2) Wer die Fassung stattdessen selbst ausliefert — unter einem Unterpfad einer bestehenden Domain, wie zuvor unter <https://aendggner.app.kellertomaten.de/> —, braucht die Vorkompression und fordert sie beim Bau an: diff --git a/deploy/cloudflare.sh b/deploy/cloudflare.sh deleted file mode 100755 index 2016e77..0000000 --- a/deploy/cloudflare.sh +++ /dev/null @@ -1,44 +0,0 @@ -#!/bin/sh -# SPDX-FileCopyrightText: 2026 Matthias Andreas Benkard <code@mail.matthias.benkard.de> -# SPDX-License-Identifier: AGPL-3.0-or-later - -# Baut die Browserfassung und schiebt sie zu Cloudflare Workers (README § 15). -# -# 1. ./mvnw -Pwasm package — erzeugt target/web und lässt deploy/webpaket.sh darüber -# laufen (wasm-opt, Quelltext-Tarball, 25-MiB-Prüfung). Bricht bei uneingecheckten -# Änderungen ab, denn der beigelegte Quelltext muss der gebaute sein. -# 2. wrangler deploy — lädt target/web nach wrangler.toml hoch. -# -# JAVA_HOME muss auf Oracle GraalVM 25.1 oder neuer zeigen; ist es nicht gesetzt, wird -# /Library/Java/JavaVirtualMachines/graalvm-25.jdk genommen. -# -# Aufruf: deploy/cloudflare.sh [--nur-bauen | --nur-hochladen] - -set -eu - -wurzel="$(CDPATH='' cd -- "$(dirname -- "$0")/.." && pwd)" -cd "$wurzel" - -: "${JAVA_HOME:=/Library/Java/JavaVirtualMachines/graalvm-25.jdk/Contents/Home}" -export JAVA_HOME - -bauen=1 -hochladen=1 -case "${1:-}" in - --nur-bauen) hochladen=0 ;; - --nur-hochladen) bauen=0 ;; - '') ;; - *) echo "cloudflare: unbekannte Angabe „$1“ (--nur-bauen | --nur-hochladen)" >&2; exit 2 ;; -esac - -if [ "$bauen" = 1 ]; then - ./mvnw -Pwasm package -fi - -if [ "$hochladen" = 1 ]; then - if command -v wrangler >/dev/null 2>&1; then - wrangler deploy - else - npx --yes wrangler deploy - fi -fi @@ -34,6 +34,7 @@ <clean-plugin.version>3.3.2</clean-plugin.version> <compiler-plugin.version>3.15.0</compiler-plugin.version> <dependency-plugin.version>3.11.0</dependency-plugin.version> + <deploy-plugin.version>3.1.4</deploy-plugin.version> <enforcer-plugin.version>3.6.3</enforcer-plugin.version> <exec-plugin.version>3.6.3</exec-plugin.version> <jar-plugin.version>3.5.0</jar-plugin.version> @@ -289,6 +290,22 @@ </executions> </plugin> + <!-- + Das Erzeugnis geht nicht in ein Maven-Repositorium: es ist eine Anwendung, keine + Bibliothek, und seine Fassungsbezeichnung ist die CI-freundliche ${revision} + (.mvn/maven.config), die ohne Flatten kein brauchbares POM ergäbe. Ausgeliefert + wird nach Cloudflare Workers. Das Ziel „deploy:deploy“ ist deshalb stillgelegt und + die Phase steht dem Profil „wasm“ offen (README § 15). „install“ bleibt unberührt. + --> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-deploy-plugin</artifactId> + <version>${deploy-plugin.version}</version> + <configuration> + <skip>true</skip> + </configuration> + </plugin> + <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> @@ -495,6 +512,29 @@ </arguments> </configuration> </execution> + + <!-- + Die Auslieferung. Hochgeladen wird allein das Verzeichnis, das „webpaket“ + auslieferfertig hinterlassen hat; welches, sagt wrangler.toml im + Projektverzeichnis. Ein Lauf von `./mvnw -Pwasm deploy` baut und liefert + also in einem Zuge aus, und die Prüfungen aus webpaket.sh (sauberer + Arbeitsbaum für den Quelltext nach AGPLv3 §13, 25-MiB-Grenze) liegen vor + dem Hochladen. Vorausgesetzt wird ein angemeldetes „wrangler“ im Pfad. + --> + <execution> + <id>cloudflare</id> + <phase>deploy</phase> + <goals> + <goal>exec</goal> + </goals> + <configuration> + <executable>wrangler</executable> + <workingDirectory>${project.basedir}</workingDirectory> + <arguments> + <argument>deploy</argument> + </arguments> + </configuration> + </execution> </executions> </plugin> |
