Wie Ticketpilot released wird: ein Tag, eine Pipeline und drei Agent-Skills
Ein Release von Ticketpilot ist am Ende genau ein
Git-Tag. Alles davor — Version bestimmen, Changelog schreiben, package.json
bumpen — erledigen Agent-Skills; alles danach — npm-Publish, Multi-Arch-Docker-Build,
Registries — eine GitHub-Actions-Pipeline. Dieser Artikel zeigt beide Hälften:
den automatisierten Weg zum Tag und den automatisierten Weg vom Tag zum
fertigen Produkt.
Ein Produkt im Monorepo
Ticketpilot ist ein Cuby-Produkt-Plugin und lebt als Paket
@processcube-io/ticketpilot im Monorepo ProcessCube.Products — zusammen mit
den anderen Produkten. Das prägt den Release-Prozess: Versioniert
wird pro Produkt, gebaut wird pro Release über eine gemeinsame Pipeline.
Dafür gibt es zwei Arten von Tags:
| Tag | Beispiel | Zweck |
|---|---|---|
| Produkt-Tag | ticketpilot/v0.9.0-develop.91 | Versions-Marker pro Produkt — löst keinen Build aus |
| Release-Tag | release/develop/4010a65 | Build-Trigger für die Pipeline (develop, insiders oder stable) |
Eine neue Version wird nur in die package.json der Produkte eingetragen, die
seit dem letzten Release tatsächlich Änderungen hatten — ändert sich die
gemeinsame products-lib, zählen alle davon betroffenen Produkte dazu.
Der Weg zum Tag: drei Skills
Die Vorarbeit übernimmt der Skill
release-process aus dem Marketplace-Repo
ProcessCube.Agent.Skills —
installierbar mit einem Befehl:
npx skills add processcube-io/ProcessCube.Agent.Skills --skill release-process/release-process — die Orchestrierung
Der Skill arbeitet im Single-Branch-Workflow (nur main): Branch prüfen,
uncommittete Änderungen stashen, git pull. Dann leitet er die neue Version
aus den Conventional Commits seit dem letzten Release ab — feat! bzw.
BREAKING CHANGE heben MAJOR, feat MINOR, Fixes PATCH. Für die drei
Release-Typen gilt:
| Typ | Format | Basis |
|---|---|---|
| Stable | MAJOR.MINOR.PATCH | Commits seit letztem Stable-Tag |
| Insiders | X.Y+1.0-insiders.N | letzte Stable-Version, Minor +1 |
| Development | X.Y+1.0-develop.N | letzte Stable-Version, Minor +1 |
/changelog — der Pflichtschritt
Vor dem Versions-Bump ruft release-process verpflichtend den
changelog-Skill auf. Der kategorisiert die Commits aus Anwendersicht (Neue
Funktionen, Verbesserungen, Fehlerbehebungen, Technische
Änderungen), ignoriert Merge-, Release- und WIP-Commits und pflegt zwei
Dateien: Changelog.md für Anwender und Changelog-Dev.md für Entwickler.
Features durchlaufen dabei die Phasen 🔮 In Entwicklung → 🧪 Insiders →
✅ Stable. Bei Ticketpilot liegt das Ergebnis unter
products/Ticketpilot/Changelog.md — und erscheint automatisch in den
Release Notes.
Bump, Commit, Tags
Zum Schluss bumpt der Skill die package.json, committet
(chore: release v{VERSION}) und setzt die Tags. Wichtig im Monorepo: Das
Release-Tag wird immer allein gepusht, damit der GitHub-Build sauber
startet.
Flankierend: die Doku-Pipeline
Rund um den Release halten repo-doku (Quell-Repo) und doku-uebernehmen
(Doku-Site) die Dokumentation mit dem Code Schritt — das Zusammenspiel zeigt
Dokumentation als Pipeline.
Warum Skills statt Shell-Skript? Die Versionslogik ist keine starre Regel-Kaskade: Commits kategorisieren, Anwender-Changelog formulieren, entscheiden, welche Pakete betroffen sind — das sind Aufgaben, bei denen ein Agent den Kontext versteht. Der Skill gibt ihm dafür den festen Rahmen, damit jedes Release gleich abläuft.
Der Weg vom Tag: die Pipeline
Das gepushte release/…-Tag triggert den Workflow Release Build & Publish
(.github/workflows/publish.yml):
Drei Jobs, drei Aufgaben:
- publish — publiziert erst die
products-lib, dann alle Produkt-Pakete nach GitHub Packages. Ein Idempotenz-Check (npm view) überspringt bereits veröffentlichte Versionen — der Workflow ist gefahrlos wiederholbar. - build-ticketpilot — baut das Image
processcube_lowcode_ticketpilotals Matrix-Build nativ auf amd64- und arm64-Runnern, gepusht by digest. Die Version kommt direkt aus derpackage.jsondes Produkts. - merge-ticketpilot — fügt die Digests per
docker buildx imagetoolszu einer Multi-Arch-Manifest-Liste zusammen und taggt:{VERSION}und:latest.
Am Ende steht das Image in der GHCR und im ProcessCube® Marketplace — von dort installiert Cuby das Produkt.
Die Pointe: Ticketpilot released sich selbst
Ticketpilot automatisiert Ticket-Workflows — und seit 0.9.0-develop.87 gehört
dazu auch der eigene Release-Auslöser: Der mitgelieferte BPMN-Prozess
„Ticket releasen” stößt für Feature- und Bug-Tickets automatisch ein
Insiders-Release des Kundenprojekts an. Technisch ist das ein External Task
(Topic InsiderReleaseErstellen), den ein DevOps-Agent abarbeitet, während ein
Build-Watcher den Fortschritt überwacht — also genau der Mechanismus, den
der vorige Artikel im Detail zeigt. Der
Release-Prozess, den dieses Produkt seinen Nutzern abnimmt, ist derselbe, mit
dem es selbst gebaut wird.
Fazit
Ein Ticketpilot-Release besteht aus zwei sauber getrennten Hälften: Die
Skills (release-process, changelog, flankierend repo-doku) erledigen
die Denk- und Schreibarbeit bis zum Tag — reproduzierbar und mit gepflegtem
Changelog. Die Pipeline übernimmt ab dem Tag — idempotenter npm-Publish und
Multi-Arch-Images in beide Registries. Für das Team bleibt: Commits nach
Conventional-Commits-Format schreiben und /release-process aufrufen.
Weiterführend
- Ticketpilot — das Produkt im Überblick
- Agent-Skills — alle Skills des Marketplace-Repos
- Release Notes — die Ticketpilot-Changelogs live
- Dokumentation als Pipeline —
repo-dokuunddoku-uebernehmenim Zusammenspiel - AI-Agenten als External Task — der Mechanismus hinter „Ticket releasen”