aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--FASSUNGEN.txt38
-rw-r--r--README.md11
-rwxr-xr-xdeploy/cloudflare.sh44
-rw-r--r--pom.xml40
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
diff --git a/README.md b/README.md
index 27b0578..cf7af9c 100644
--- a/README.md
+++ b/README.md
@@ -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
diff --git a/pom.xml b/pom.xml
index 8fbfdb1..5511f72 100644
--- a/pom.xml
+++ b/pom.xml
@@ -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>