Wdrożenie modułu
Gotowy moduł publikujesz w repozytorium modułów (modules.orbito.pl), skąd firmy mogą go zainstalować. Platforma uruchamia każdy moduł w izolowanym kontenerze Docker — nie ma potrzeby konfigurowania środowiska po stronie serwera.
Do publikacji potrzebujesz konta Orbito i namespace'u, do którego należy moduł — patrz Konto i namespace'y.
Do publikacji służy omm (Orbito Modules Manager) — oficjalne CLI, odpowiednik npm publish dla modułów Orbito. Jedna komenda pakuje moduł, wysyła go do repozytorium, uruchamia build obrazu Dockera i czeka na jego wynik.
Publikuj przez omm
omm to zalecana i najszybsza droga wdrożenia. Ręczne pakowanie ZIP-a i wgrywanie go przez panel wciąż działa, ale wymaga pilnowania zawartości archiwum i statusu builda samodzielnie — szczegóły w Pakowanie modułu.
Szybki start
npm config set @orbito:registry https://git.kozminski.net.pl/api/packages/orbito/npm/ # scope @orbito w ~/.npmrc (raz)
npm i -g @orbito/omm # instalacja CLI (raz)
omm login # logowanie kontem Orbito: rdzeń + repozytorium (raz)
omm namespace create acme # namespace na moduły (raz; albo dołącz do istniejącego)
cd moj-modul
omm publish # wersja robocza (draft) — do testów
omm publish --release # publikacja w rejestrze — widoczna dla firm
Pełny opis komend i flag znajdziesz w omm — CLI do publikacji.
Wymagania przed wdrożeniem
Przed publikacją upewnij się, że moduł spełnia poniższe wymagania:
- [ ] Plik
index.jsistnieje w katalogu głównym modułu - [ ] Plik
module.jsonzawiera pełny kod modułu (namespace/nazwa) i wersję semver — patrz Struktura modułu - [ ] Wersja w
module.jsonjest wyższa niż ostatnio opublikowana - [ ] Plik
package.jsonzawiera poprawnename,versionimainwskazujące naindex.js - [ ] Zależność
@orbito/api-libjest wymieniona wdependencies - [ ] Wszystkie metody są zarejestrowane przez
Core.registerMethod() - [ ] Strony (jeśli są) są zarejestrowane przez
Pages.registerPages() - [ ] Karta modułu istnieje w rejestrze w Twoim namespace — tworzy ją
omm init <nazwa>albo panel developera (omm publishnie tworzy jej automatycznie) - [ ] Moduł został przetestowany lokalnie
Proces wdrożenia
Wdrożenie modułu przebiega w czterech krokach:
- Podbicie wersji — zwiększ pole
versionwmodule.json(to ono jest źródłem prawdy przy publikacji) - Kontrola paczki —
omm pack --dry-runpokazuje dokładną listę plików, które trafią do archiwum - Wersja robocza —
omm publishwysyła draft i czeka na build obrazu Dockera; draft służy do testów — widzą go tylko członkowie namespace'u i firmy z dostępem do modułu - Publikacja —
omm publish --releaseprzenosi wersję ze stanu roboczego do rejestru; poprzednia opublikowana wersja przechodzi w standeprecated
Draft o tej samej wersji można nadpisywać dowolną liczbę razy (retry bez podbijania wersji). Wersje opublikowane są niemutowalne — poprawka wymaga nowej wersji.
Zasoby kontenera
Kontener modułu działa stale — startuje przy instalacji, reaktywacji, aktualizacji wersji i starcie rdzenia, a zatrzymuje go tylko wyłączenie lub odinstalowanie instancji. Domyślnie dostaje 128 MB RAM i 0.5 rdzenia CPU; limit ustawia operator platformy, a nie autor modułu. Przekroczenie pamięci kończy się restartem kontenera (OOM) i problemem MODULE_OOM widocznym dla firmy w rejestrze problemów. Moduł powinien więc zwalniać zasoby: nie trzymaj dużych tablic w pamięci i przetwarzaj importy strumieniowo.
Kontenery modułów mogą działać nie tylko na pojedynczym serwerze Docker, ale też w klastrze Kubernetes. Dla modułu nic się nie zmienia: obowiązują te same limity zasobów, a status, logi, statystyki i problem MODULE_OOM przy braku pamięci wyglądają tak samo.
Aktualizacja modułu
- Wprowadź zmiany w kodzie
- Podbij
versionwmodule.json(i dla porządku wpackage.json) omm publish --changelog "opis zmian"— wyślij draft, zainstaluj go we własnej firmie (omm install/omm update) i sprawdźomm logsomm publish --release— udostępnij nową wersję firmom
