Przejdź do głównej zawartości

Wydania

Każdy artefakt zbudowany z tego repozytorium ma odpowiedni wpis na stronie GitHub Releases. Ta strona jest wiarygodnym źródłem informacji o tym, co zostało wydane, kiedy i co się zmieniło.

Wszystkie wydania — aplikacje webowe, API i aplikacje natywne — są wymienione na github.com/jonot-io/jonot/releases.

Aplikacje natywne — tagi wersji semantycznej, wypychane ręcznie przez inżyniera przygotowującego wydanie:

  • apps/host (desktop): host-v<semver> — np. host-v1.2.3
  • apps/native-kiosk: android-kiosk-v<semver> — np. android-kiosk-v1.4.0
  • apps/native-desk: android-desk-v<semver> — np. android-desk-v1.4.0

Aplikacje webowe i API — znakowane czasowo, tworzone automatycznie po każdym udanym wdrożeniu produkcyjnym:

  • apps/api (Worker): api-r<YYYYMMDD-HHMM>-<sha7> — np. api-r20260523-1542-abc1234
  • SPA-ki webowe (9 aplikacji): web-<app>-r<YYYYMMDD-HHMM>-<sha7> — np. web-admin-r20260523-1542-abc1234

Wydania artefaktów natywnych są uruchamiane przez wypchnięcie tagu pasującego do prefiksu artefaktu. Przepływ CI buduje, podpisuje i publikuje w odpowiednim sklepie, a następnie tworzy GitHub Release z załączonymi plikami binarnymi.

Aby przygotować wydanie:

Okno terminala
git tag host-v1.0.0
git push origin host-v1.0.0

Zastąp host przez android-kiosk lub android-desk odpowiednio do potrzeb i podnieś wersję zgodnie z wpisem versionName / libs.versions.toml w aplikacji.

Każde GitHub Release dla aplikacji natywnej zawiera:

  • android-kiosk / android-desk — podpisany AAB, mapowanie ProGuard oraz listę zmian Play Store (whatsnew-en-US.txt).
  • host.deb, .rpm, SHA256SUMS i SHA256SUMS.asc (podpisane GPG).

Wypchnięcia do main wdrażają automatycznie do środowiska development. Produkcja jest promowana przez wymuszone przesunięcie ruchomego tagu wydania na docelowy commit i jego wypchnięcie:

Okno terminala
# Wyślij wszystko (wszystkie dziewięć SPA + API):
git tag -f release <sha> && git push -f origin release
# Wyślij tylko API:
git tag -f release-api <sha> && git push -f origin release-api
# Wyślij pojedynczą SPA (np. admin):
git tag -f release-admin <sha> && git push -f origin release-admin

Tag-parasol release wysyła wszystkie dziewięć SPA oraz API w jednym wypchnięciu, omijając limit GitHub, który wyłącza CI, gdy w jednym wypchnięciu wypychane są więcej niż trzy tagi. Nierozpoznane nazwy tagów powodują błąd na etapie rozwiązywania, zamiast cichego wdrożenia.

Znacznik wydania web-<app>-r… lub api-r… jest tworzony po każdym udanym wdrożeniu produkcyjnym i oznaczany jako --prerelease, aby nie zastępował natywnej odznaki semver „Latest release”. Te znaczniki są wiarygodnym rejestrem zmian — zapisem tego, co zostało wydane, a nie bramką kontrolną.

Wydanie API dołącza też plik migrations.txt z listą wszystkich plików migracji D1 obecnych w danym commicie, dzięki czemu można odpowiedzieć na pytanie „czy migracja N została wydana?” bezpośrednio z interfejsu Releases.

Informacje o wydaniu są automatycznie generowane przez GitHub na podstawie tytułów scalonych pull requestów między poprzednim a bieżącym tagiem wydania. Prefiksy Conventional Commits (feat:, fix:, perf:, …) w tytułach PR grupują zmiany wizualnie w treści informacji.