Übersicht
Sobald Ihre App lokal gebaut und getestet wurde, haben Sie zwei Möglichkeiten, sie zu verteilen:- Einen Tarball bereitstellen — Laden Sie Ihre App direkt auf einen bestimmten Twenty-Server für die interne oder private Nutzung hoch.
- Auf npm veröffentlichen — führen Sie Ihre App im Twenty-Marktplatz auf, damit jeder Arbeitsbereich sie entdecken und installieren kann.
Erstellen Ihrer App
Führen Sie den Build-Befehl aus, um Ihre App zu kompilieren und eine distributionsfertigemanifest.json zu erzeugen:
.twenty/output/ geschrieben. Fügen Sie --tarball hinzu, um zusätzlich ein .tgz-Paket für die manuelle Verteilung oder den Deploy-Befehl zu erzeugen.
Bereitstellung auf einem Server (Tarball)
Für Apps, die Sie nicht öffentlich verfügbar machen möchten — proprietäre Tools, ausschließlich für Unternehmen bestimmte Integrationen oder experimentelle Builds — können Sie einen Tarball direkt auf einem Twenty-Server bereitstellen.Voraussetzungen
Bevor Sie bereitstellen, benötigen Sie ein konfiguriertes Remote, das auf den Zielserver zeigt. Remotes speichern die Server-URL und Anmeldeinformationen lokal in~/.twenty/config.json.
Ein Remote hinzufügen:
Bereitstellen
Bauen und laden Sie Ihre App in einem Schritt auf den Server hoch:Eine bereitgestellte App freigeben
Tarball-Apps werden nicht im öffentlichen Marktplatz gelistet, daher entdecken andere Arbeitsbereiche auf demselben Server sie nicht durch Stöbern. Sobald sich Ihr Arbeitsbereich im Enterprise-Plan befindet, können Sie eine bereitgestellte App wie folgt freigeben:- Gehen Sie zu Einstellungen > Anwendungen > Registrierungen und öffnen Sie Ihre App
- Klicken Sie im Tab Distribution auf Freigabelink kopieren
- Teilen Sie diesen Link mit Nutzern in anderen Arbeitsbereichen — er führt sie direkt zur Installationsseite der App
Versionsverwaltung
Beim Aktualisieren einer bereits bereitgestellten Tarball-App verlangt der Server, dass dieversion in package.json strikt höher (gemäß der semver-Reihenfolge) ist als die derzeit bereitgestellte Version. Das erneute Bereitstellen derselben Version oder das Pushen einer niedrigeren Version wird abgelehnt, bevor das Tarball gespeichert wird — in der CLI wird ein VERSION_ALREADY_EXISTS-Fehler angezeigt.
So veröffentlichen Sie ein Update:
- Erhöhen Sie das Feld
versionin Ihrerpackage.json(z. B.1.2.3→1.2.4,1.3.0oder2.0.0). - Führen Sie
yarn twenty deployaus (oderyarn twenty deploy --remote production) - Arbeitsbereiche, die die App installiert haben, sehen in ihren Einstellungen, dass ein Upgrade verfügbar ist.
Pre-Release-Tags funktionieren wie erwartet: Das Erhöhen von
1.0.0-rc.1 → 1.0.0-rc.2 ist zulässig, und eine finale Version wie 1.0.0 wird korrekt als höher als 1.0.0-rc.5 erkannt. Die Version in package.json muss selbst eine gültige semver-Zeichenfolge sein.Automatisiertes CI/CD (vorgefertigte Workflows)
Apps, die mitcreate-twenty-app erzeugt wurden, enthalten von Haus aus zwei GitHub-Actions-Workflows unter .github/workflows/. Sie sind einsatzbereit, sobald Sie das Repository zu GitHub pushen — für CI ist keine zusätzliche Einrichtung erforderlich, und für CD ist nur ein einziges Secret nötig.
CI — ci.yml
Führt Ihre Integrationstests bei jedem Push auf main und bei Pull Requests aus.
Was sie macht:
- Checkt den Quellcode Ihrer App aus.
- Startet eine isolierte Twenty-Testinstanz mithilfe der Composite-Action
twentyhq/twenty/.github/actions/spawn-twenty-app-dev-test@main(das CI-Äquivalent zuyarn twenty server start --test). - Aktiviert Corepack, richtet Node.js anhand Ihrer
.nvmrcein und installiert Abhängigkeiten mityarn install --immutable. - Führt
yarn testaus und übergibtTWENTY_API_URLundTWENTY_API_KEYaus der gestarteten Instanz, damit Ihre Tests mit einem echten Server kommunizieren können.
TWENTY_VERSION(env, standardmäßiglatest) — fixieren Sie die in CI verwendete Twenty-Server-Version, indem Sie dies inci.ymlanpassen.- Die Parallelität wird nach
github.refgruppiert und bricht laufende Ausführungen bei neuen Pushes ab.
CD — cd.yml
Stellt Ihre App bei jedem Push auf main auf einem konfigurierten Twenty-Server bereit und optional aus einem Pull Request, wenn das Label deploy gesetzt ist.
Was sie macht:
- Checkt den PR-Head (bei PRs mit Label) oder den gepushten Commit aus.
- Führt
twentyhq/twenty/.github/actions/deploy-twenty-app@mainaus — das CI-Äquivalent zuyarn twenty deploy. - Führt
twentyhq/twenty/.github/actions/install-twenty-app@mainaus, damit die neu bereitgestellte Version in den Ziel-Workspace installiert wird.
| Einstellung | Wo | Zweck |
|---|---|---|
TWENTY_DEPLOY_URL | env in cd.yml (standardmäßig http://localhost:3000) | Der Twenty-Server, auf den bereitgestellt werden soll. Ändern Sie dies vor der ersten Verwendung auf die echte Server-URL. |
TWENTY_DEPLOY_API_KEY | GitHub-Repository Settings → Secrets and variables → Actions | API-Schlüssel mit Berechtigung zum Bereitstellen auf dem Zielserver. |
Der Standardwert von
TWENTY_DEPLOY_URL (http://localhost:3000) ist ein Platzhalter — von einem GitHub-gehosteten Runner ist er nicht erreichbar. Aktualisieren Sie sie auf die öffentliche URL Ihres Servers (oder verwenden Sie einen selbstgehosteten Runner mit Netzwerkzugriff), bevor Sie CD aktivieren.deploy hinzu. Die if:-Bedingung in cd.yml führt den Job für diesen PR mit dem Head-Commit des PR aus, sodass Sie eine Änderung auf dem Zielserver vor dem Mergen validieren können.
Fixieren der wiederverwendbaren Actions
Beide Workflows verweisen auf wiederverwendbare Actions mit@main, sodass Aktualisierungen der Actions im Repository twentyhq/twenty automatisch übernommen werden. Wenn Sie deterministische Builds möchten, ersetzen Sie @main in jeder uses:-Zeile durch eine Commit-SHA oder einen Release-Tag.
Auf npm veröffentlichen
Die Veröffentlichung auf npm macht Ihre App im Twenty-Marktplatz auffindbar. Jeder Twenty-Arbeitsbereich kann Marktplatz-Apps direkt über die Benutzeroberfläche durchsuchen, installieren und aktualisieren.Anforderungen
- Ein npm-Konto
- Das Schlüsselwort
twenty-appin Ihrempackage.json-Arraykeywords(manuell hinzufügen — es ist in dercreate-twenty-app-Vorlage standardmäßig nicht enthalten)
Marktplatz-Metadaten
DiedefineApplication()-Konfiguration unterstützt optionale Felder, die steuern, wie Ihre App im Marktplatz erscheint. Verwenden Sie logoUrl und screenshots, um Bilder aus dem Ordner public/ zu referenzieren:
src/application-config.ts
author, category, aboutDescription, websiteUrl, termsUrl usw.).
Veröffentlichen
beta oder next):
So funktioniert die Marktplatz-Erkennung
Der Twenty-Server synchronisiert seinen Marktplatzkatalog stündlich aus der npm-Registry. Sie können die Synchronisierung sofort auslösen, anstatt zu warten:defineApplication()-Konfiguration — Felder wie displayName, description, author, category, logoUrl, screenshots, aboutDescription, websiteUrl und termsUrl.
Wenn deine App keine
aboutDescription in defineApplication() definiert, verwendet der Marktplatz automatisch die README.md deines Pakets von npm als Inhalt der Über-uns-Seite. Das bedeutet, dass du eine einzige README sowohl für npm als auch für den Twenty-Marktplatz pflegen kannst. Wenn du im Marktplatz eine andere Beschreibung möchtest, setze aboutDescription explizit.CI-Veröffentlichung
Verwenden Sie diesen GitHub-Actions-Workflow, um bei jedem Release automatisch zu veröffentlichen (verwendet OIDC):yarn install, yarn twenty build und anschließend npm publish aus .twenty/output.
npm-Provenance ist optional, wird jedoch empfohlen. Das Veröffentlichen mit
--provenance fügt Ihrem npm-Eintrag ein Vertrauensabzeichen hinzu, sodass Nutzer überprüfen können, dass das Paket aus einem bestimmten Commit in einer öffentlichen CI-Pipeline gebaut wurde. Siehe die npm-Provenance-Dokumentation für Einrichtungshinweise.Apps installieren
Sobald eine App veröffentlicht (npm) oder bereitgestellt (Tarball) wurde, können Arbeitsbereiche sie über die Benutzeroberfläche installieren. Gehen Sie zur Seite Einstellungen > Anwendungen in Twenty, auf der sowohl Marktplatz- als auch per Tarball bereitgestellte Apps durchsucht und installiert werden können. Sie können Apps auch über die Befehlszeile installieren:Der Server erzwingt bei der Installation semver-Versionierung und spiegelt damit die Regeln beim Bereitstellen wider:
- Die Installation derselben Version, die in Ihrem Arbeitsbereich bereits installiert ist, wird mit einem
APP_ALREADY_INSTALLED-Fehler abgelehnt. - Die Installation einer niedrigeren Version als die aktuell installierte wird mit einem
CANNOT_DOWNGRADE_APPLICATION-Fehler abgelehnt.
yarn twenty install erneut aus.