Sie befinden sich hier: start » de » Interne Dokumentation » DokuWiki-Erweiterungen (WvdS) » Paketbau

Paketbau

wkbundle ist die Komponente hinter dem Paket-Baukasten. Sie beantwortet eine Frage, die dieses Haus bisher in einer Tabelle beantwortet hat, die jemand von Hand lesen musste: Was muss ich installieren, damit das, was ich benutzen will, läuft?

Der Grundsatz ist einfacher als die Maschinerie: eine technische Quelle der Wahrheit. Jede Komponente beschreibt sich selbst in einer wkcomponent.json neben ihrem Code. Aus derselben Datei entstehen die Auflösung, die Tabellen in der Komponentenmatrix, das README im Archiv und der Bauauftrag. Es gibt keine zweite Stelle, an der dieselbe Angabe noch einmal gepflegt wird — und damit keine zweite Stelle, die veralten kann.

Erste Schritte

Paket-Baukasten — auswählen, auflösen lassen, herunterladen. Das ist die Seite für alle, die ein Paket wollen; diese hier ist die Seite für alle, die wissen wollen, was dabei geschieht.

Die Installation des Archivs beschreibt Eine Komponente installieren, Weg C.

Häufige Aufgaben

Aufgabe Für wen Wo Sie das tun
Ein Paket zusammenstellen und herunterladen alle Paket-Baukasten, auch ?do=wkbundle
Nachschlagen, was eine einzelne Komponente zieht alle Komponentenmatrix
Laufende und abgelaufene Pakete ansehen, Bauanlage prüfen Administration Administration → Pakete (Bundle)
Prüfen, ob ein Manifest noch beschreibt, was daneben liegt Betrieb php bin/plugin.php wkbundle verify
Eine Fassung als stabil festschreiben Freigabe php bin/plugin.php wkbundle release <komponente> <revision>
Aufräumen anstoßen Betrieb php bin/plugin.php wkbundle cleanup

Wesentliche Funktionen

  • Vollständige transitive Auflösung. Nicht nur die Abhängigkeiten der gewählten Komponenten, sondern auch deren Abhängigkeiten, bis nichts Neues mehr dazukommt. Ringschlüsse werden erkannt und benannt, statt in eine Endlosschleife zu laufen.
  • Jede ergänzte Komponente nennt ihren Grundangefragt, zwingend erforderlich oder für eine gewählte Funktion. Der Grund gehört dem Weg, nicht der einzelnen Kante: Was auf einem Weg zwingend gebraucht wird, bleibt zwingend, auch wenn ein zweiter Weg es nur für eine Funktion zieht.
  • Feste Installationsreihenfolge. Topologisch sortiert, bei Gleichrang alphabetisch — dieselbe Auswahl ergibt dieselbe Reihenfolge, heute und in einem Monat.
  • Der Server prüft, der Browser wählt nur aus. Aus dem Browser kommen Komponenten, Funktionen und Kanal. Kein Repository, keine Revision, kein Pfad. Alles Übrige leitet der Server aus dem Katalog ab.
  • Gleiche Anfragen ergeben ein Paket, nicht zwei Bauten. Der Bündelschlüssel ist der Primärschlüssel der Zeile; wer als Zweiter kommt, hängt sich an den laufenden Bau, statt ihn ein zweites Mal anzustoßen.
  • Pakete sind flüchtig und räumen sich selbst weg. Fünfzehn Minuten Gültigkeit, alle fünf Minuten ein Durchlauf; gelöscht wird anhand der Zeilen in der Datenbank und ausschließlich innerhalb des dafür vorgesehenen Bereichs.

Kernbegriffe

Der Bündelschlüssel ist keine Zugangsberechtigung. Er ist die SHA-256-Summe über die Anfrage einschließlich der aufgelösten Revisionen und dient dem Wiedererkennen. Herunterladen darf man mit einer eigens ausgestellten Freigabe, deren Kennung und Token undurchsichtig sind und deren Token nur als Hashwert gespeichert wird. Wer den Schlüssel kennt, hat damit nichts in der Hand.

Ein Paket ist eine Momentaufnahme. Es enthält die Fassungen, die zum Zeitpunkt der Anfrage festgeschrieben waren. Deshalb läuft der Link ab: Ein Archiv, das wochenlang irgendwo liegt, wird irgendwann installiert und ist dann etwas anderes, als die Seite daneben beschreibt.

Stabil heißt festgeschrieben, nicht neu. Eine Komponente ohne festgeschriebene Fassung wird auf diesem Kanal abgelehnt und namentlich genannt — statt stillschweigend den aktuellen Stand einzupacken und ihn stabil zu nennen.

Optionale Komponenten werden nie eingepackt. Sie erscheinen als Empfehlung mit der Angabe, was sie bringen. Eine Empfehlung, die sich selbst annimmt, ist keine.

Was es ausdrücklich nicht ist

Keine Paketverwaltung. wkbundle installiert nichts, aktualisiert nichts, entfernt nichts und weiß nicht, was auf der Zielinstanz liegt. Es stellt ein Archiv her und beschreibt, was damit zu tun ist; das Entpacken bleibt ein bewusster Schritt eines Menschen an einem Ort, den nur dieser Mensch kennt.

Auch kein Ersatz für die Freigabe. Dass eine Revision festgeschrieben ist, sagt, welche Fassung ausgeliefert wird — nicht, dass jemand sie geprüft hat.

Administration

Administration → Pakete (Bundle). Die Seite nennt die aktive Bauanlage, und wenn diese nicht benutzbar ist, den Grund dafür in demselben Satz, den auch die Ablehnung auf der Bedienseite zeigt.

Die Einstellungen stehen im Konfigurationsmanager, Abschnitt wkbundle:

Einstellung Vorgabe Wirkung
default_channel stable Der Kanal ohne ausdrückliche Wahl.
anonymous_requests 1 Ob ohne Anmeldung ein Bau angestoßen werden darf. Katalog und Auflösung sind unabhängig davon öffentlich — sie sind Dokumentation.
backend auto local packt, was auf diesem Server liegt; ado baut über eine Pipeline; auto nimmt ado, sobald es vollständig eingerichtet ist. Das Manifest im Archiv nennt immer, welche Anlage tatsächlich gelaufen ist.
download_ttl 900 Gültigkeit einer Freigabe in Sekunden. Muss unter cleanup_settled bleiben, sonst zeigt ein gültiger Link auf eine bereits entfernte Datei.
rate_max / rate_window 12 / 3600 Anfragen je Aufrufer und Zeitfenster. 0 hebt die Grenze auf.
ado_host, ado_org, ado_project, ado_pipeline leer Die Azure-DevOps-Bauanlage. ado_host ist ein Host, kein Verweis: ohne Schema, ohne Pfad.
ado_pat_ref leer Verweis auf das Zugriffstoken — vault:<id> oder file:<name>. Ein Wert an dieser Stelle löst sich absichtlich zu nichts auf.
ado_ca_bundle, ado_allow_private leer / 0 Für eine hauseigene Zertifizierungsstelle und für einen Azure DevOps Server im Haus. Die TLS-Prüfung bleibt in jedem Fall an.
cleanup_settled 900 Wie lange ein fertiges Paket liegen bleibt.
cleanup_stale 3600 Ab wann ein Bau ohne Rückmeldung als abgebrochen gilt.

Das Aufräumen hängt am Indexer und damit an Seitenaufrufen. Auf einem stillen Wiki braucht es eine echte Zeitsteuerung; pipelines/register-cleanup-task.ps1 im Paket richtet sie unter Windows ein.

Grenzen und offene Punkte

Diese vier stehen hier, weil sie beim Lesen der Oberfläche nicht sichtbar sind:

  • Kein Repositorium trägt eine Marke (Tag). release.stable zeigt deshalb auf einen Commit. Der Kanal Stabil liefert damit „was an einem Tag grün war und ausgerollt ist„, nicht „was freigegeben wurde“. Siehe Regelwerk-Status, Zeile Versionierung.
  • Die Manifeste liegen bisher nur auf dieser Instanz, nicht in den Repositorien. Die lokale Bauanlage arbeitet damit; eine Pipeline, die die festgeschriebenen Commits auscheckt, fände dort noch keine wkcomponent.json und bricht ab, statt still etwas Falsches zu bauen.
  • Die PHP-Erweiterung zip braucht die Maschine, die packt — nicht die, die installiert. Fehlt sie, wird die Anfrage abgelehnt, bevor etwas gebaut wird, und die Ablehnung sagt genau das. Zu beachten: Webserver und Kommandozeile benutzen häufig verschiedene php.ini.
  • Ein Manifest kann veralten. Es liegt neben dem Code, wird aber nicht von ihm erzeugt. wkbundle verify meldet genau diesen Fall als Fassung, die plugin.info.txt widerspricht.

Für Entwicklerinnen und Entwickler

Eine Komponente nimmt teil, indem sie eine Datei bekommt. lib/plugins/<name>/wkcomponent.json, kein Code, keine Anmeldung an einem Ereignis:

{
  "manifestVersion": 1,
  "name": "wkbeispiel",
  "kind": "plugin",
  "artifact": { "target": "lib/plugins" },
  "requires": ["wkcore"],
  "features": {
    "azure-devops": { "label": "Azure-DevOps-Repositories verwenden", "requires": ["wkdoado"] }
  },
  "optional": [{ "name": "wkvault", "benefit": "Der PAT liegt verschlüsselt statt im Klartext." }],
  "release": { "stable": { "ref": "<40-stellige Revision>", "version": "2026-08-24" } }
}

name muss dem Verzeichnisnamen entsprechen. Ein Manifest, das etwas anderes behauptet, beschreibt eine Komponente, die es hier nicht gibt, und wird abgelehnt — das ist derselbe Fehler, den DokuWiki bei einem falschen base-Feld macht, nur diesmal mit einer Meldung.

Auf einer Seite stehen drei Konstrukte zur Verfügung:

Konstrukt Ergebnis
{{wk:bundle}} der vollständige Baukasten
{{wk:bundle>install:<komponente>}} der Installationskasten einer Komponente, wie oben auf dieser Seite
{{wk:bundle>matrix:<tabelle>}} eine Tabelle aus den Manifesten: dependencies, platform, order, configuration, verification, notes

Wo wkcore vorhanden ist, gilt zusätzlich die Schreibweise <wk:bundle install="wkcore"/>. Seiten mit diesen Konstrukten werden nicht zwischengespeichert, weil ihre Eingabe die Manifeste sind und nicht der Seitentext.

Auf der Kommandozeile liegen list, verify, catalog, resolve, build, pack, cleanup, doc und release. Optionen gehören vor die Argumente:

php bin/plugin.php wkbundle resolve -f azure-devops,workbench-ui wkdoadogit

pack ist der Aufruf der Bauanlage, cleanup der einer Zeitsteuerung, verify der einer Überwachung. Die vollständige Beschreibung von Manifest, Auflösung und Bauvertrag liegt als docs/api-reference.md im Repositorium des Pakets.

Störungen

Für dieses Paket ist keine Störungsseite im Wiki geschrieben; die Diagnosefassung liegt als docs/troubleshooting.md im Repositorium des Pakets, nach Symptom geordnet.

Verwandte Themen

Autor

de/wiki/dwe/wkbundle.txt · Zuletzt geändert: von 0.0.0.0