diff options
| author | Matthias Andreas Benkard <code@mail.matthias.benkard.de> | 2026-08-24 22:54:17 +0200 |
|---|---|---|
| committer | Matthias Andreas Benkard <code@mail.matthias.benkard.de> | 2026-08-24 22:54:17 +0200 |
| commit | a94bdec06417d3a8c44640f114b88000ff0bef9f (patch) | |
| tree | 4dce5edb85753ec04be20ff4581b7b8343e705a7 | |
| parent | 7d46f073faec8f2ef40968a70ace56d608000e82 (diff) | |
Die Browserfassung ging bisher über ein eigenes Skript nach Cloudflare:
deploy/cloudflare.sh rief erst „mvnw -Pwasm package“ und dann „wrangler
deploy“. Maven selbst wußte davon nichts. Seine gleichnamige Phase stand
leer und hätte, gerufen, den Bau angehalten, denn das Erzeugnis benennt
kein Empfangsverzeichnis.
Also wird das Ziel deploy:deploy stillgelegt — das Erzeugnis ist eine
Anwendung, keine Bibliothek, und seine Fassungsbezeichnung ergäbe in
einem Maven-Verzeichnis ohnehin kein brauchbares Modell —, und die
freigewordene Phase nimmt im Profil „wasm“ den Aufruf von wrangler auf.
Ein einziger Lauf baut und liefert nun aus. Die Prüfungen aus
webpaket.sh, sauberer Arbeitsbaum und 25-MiB-Grenze, liegen dabei vor dem
Hochladen und halten den Lauf an, ehe etwas hinausgeht. Das Skript
entfällt; es wäre nur noch die Doppelung dreier Aufrufe.
Geprüft: „mvnw deploy“ ohne Profil vermerkt „Skipping artifact
deployment“ und läuft durch; mit „-Pwasm“ erscheint die Ausführung
„cloudflare“ an der Phase „deploy“; „wrangler deploy --dry-run“ liest die
dreizehn Dateien von target/web, ohne auszuliefern; „mvnw verify“ besteht
mit dreihundertfünfzig Prüfungen.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Change-Id: Ic0ff3b4aa6dc399e253421183e60871efd65e5ed
| -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> |
