Ga naar inhoud

Publiceren en de Module Store

Er zijn twee manieren om je module bij een club te krijgen: rechtstreeks in je eigen club (om te testen, of voor een module die alleen voor jouw club bedoeld is), of via de Module Store voor iedereen.

Terminal window
npm run publish-module # naar de club in tabbr.config.json
npm run publish-local # naar een lokale Tabbr (api.local.tabbr.be)

Wat er gebeurt:

  1. ng build bouwt de frontend; de CLI controleert dat remoteEntry.json er is.
  2. esbuild bundelt de backend tot één bundle.js, en de CLI schrijft een manifest.json met je entiteiten, contracten en triggers.
  3. Alles wordt gezipt.
  4. Je logt in via de browser (Keycloak); het token wordt bewaard in ~/.tabbr/credentials.json.
  5. De zip gaat naar de club (POST /api/custommodule). Je hebt daar de rol ADMIN nodig.

De module verschijnt in de club onder Instellingen › Modules › Eigen modules.

Terminal window
npm run publish-store -- --changelog "Slimme groepen op basis van een lijst"

Je dient niet je build in, maar je broncode: de bestanden die git volgt, plus package-lock.json (zonder node_modules). Tabbr bouwt de module zelf.

  1. 1Ingediendnpm run publish-store
  2. 2Bouwentests, typecheck en build — zonder netwerk
  3. 3Revieween beheerder van Tabbr bekijkt de code
  4. 4Beschikbaarelke club kan installeren

De builder draait in een afgesloten container, zonder geheimen:

  1. Installeren: npm ci --ignore-scripts. De SDK en de CLI van je module worden vervangen door die van het platform, en de Angular-versie wordt gecontroleerd (dezelfde major als Tabbr, niet nieuwer).
  2. Bouwen, zonder netwerk: je test, je typecheck, en tabbr-module build.

Faalt iets, dan krijgt de versie de status BUILD_FAILED en kan je opnieuw indienen.

Een beheerder van Tabbr ziet het verschil in broncode met de vorige versie en het buildlog, en kan een versie goedkeuren, afwijzen, afraden (deprecate) of blokkeren. Blokkeren is de noodrem: een geblokkeerde versie wordt nergens meer geladen.

  • de versie is niet hoger dan de vorige;
  • engines.tabbr omvat het niveau van de server niet;
  • het moduleId is veranderd;
  • een entiteit of veld is binnen dezelfde major weggehaald of gewijzigd.

Een beheerder installeert je module via Instellingen › Modules › Store — zie Modules en de Module Store. Vóór elke installatie, update of terugkeer naar een vorige versie toont Tabbr een plan: wat er niet kan, waar je op moet letten, en in gewone taal wat je module doet (“leest personen”, “draait code op de server”, “geeft personen rollen”…).

  • Module-API. Je module zegt in engines.tabbr tegen welk API-niveau ze gebouwd is (nu 1.3.0).
  • Angular en RxJS worden gedeeld met Tabbr. Een update van Tabbr binnen dezelfde Angular-major vraagt geen nieuwe build van je module. Een nieuwe Angular-major is ook een nieuwe major van de module-API: dan bouw je je module opnieuw.
  • @tabbr/module-sdk deel je niet: je bundelt het mee in je module.

Voor wie aan Tabbr zelf werkt: de SDK en de CLI hebben elk hun eigen versie en worden via GitHub Actions op npm gepubliceerd.

Terminal window
cd tabbr-module-sdk && npm run release -- patch # of minor; tagt sdk-v*
cd tabbr-module-cli && npm run release -- patch # tagt cli-v*

Zolang ze op 0.x staan: patch voor fixes en toevoegingen, minor voor wat iets breekt.