İçeriğe geç

Sürümler

Bu depodan derlenen her paketin GitHub Releases sayfasında karşılık gelen bir kaydı vardır. Bu sayfa, nelerin ne zaman yayınlandığına ve nelerin değiştiğine dair yetkili kaynaktır.

Tüm sürümler — web uygulamaları, API ve yerel uygulamalar — github.com/jonot-io/jonot/releases adresinde listelenir.

Yerel uygulamalar — sürümü kesen mühendis tarafından elle gönderilen anlamsal sürüm etiketleri:

  • apps/host (masaüstü): host-v<semver> — örn. host-v1.2.3
  • apps/native-kiosk: android-kiosk-v<semver> — örn. android-kiosk-v1.4.0
  • apps/native-desk: android-desk-v<semver> — örn. android-desk-v1.4.0

Web uygulamaları ve API — her başarılı üretim (production) dağıtımından sonra otomatik olarak oluşturulan zaman damgalı, hareketli işaretler:

  • apps/api (Worker): api-r<YYYYMMDD-HHMM>-<sha7> — örn. api-r20260523-1542-abc1234
  • Web SPA’ları (9 uygulama): web-<app>-r<YYYYMMDD-HHMM>-<sha7> — örn. web-admin-r20260523-1542-abc1234

Yerel uygulamalar (host, android-kiosk, android-desk)

Bölüm başlığı “Yerel uygulamalar (host, android-kiosk, android-desk)”

Yerel paketlerin sürümleri, paketin önekiyle eşleşen bir etiketin gönderilmesiyle tetiklenir. CI iş akışı derler, imzalar ve ilgili mağazaya yayınlar; ardından ekli ikili dosyalarla bir GitHub Release oluşturur.

Bir sürüm çıkarmak için:

Terminal window
git tag host-v1.0.0
git push origin host-v1.0.0

host yerine duruma göre android-kiosk veya android-desk kullanın ve sürüm numarasını uygulamadaki versionName / libs.versions.toml kaydıyla eşleşecek şekilde artırın.

Yerel bir uygulama için her GitHub Release şunları içerir:

  • android-kiosk / android-desk — imzalanmış AAB, ProGuard eşleme dosyası ve Play Store değişiklik listesi (whatsnew-en-US.txt).
  • host.deb, .rpm, SHA256SUMS ve SHA256SUMS.asc (GPG ile imzalanmış).

main dalına yapılan gönderimler otomatik olarak geliştirme (development) ortamına dağıtılır. Üretim (production), hareketli bir sürüm etiketinin istenen commit’e zorla taşınıp gönderilmesiyle yükseltilir:

Terminal window
# Her şeyi gönder (dokuz SPA'nın tamamı + API):
git tag -f release <sha> && git push -f origin release
# Yalnızca API'yi gönder:
git tag -f release-api <sha> && git push -f origin release-api
# Tek bir SPA'yı gönder (örn. admin):
git tag -f release-admin <sha> && git push -f origin release-admin

Şemsiye release etiketi, dokuz SPA’nın tamamını ve API’yi tek bir gönderimde yayınlar; böylece bir seferde üçten fazla etiket gönderildiğinde CI’yi bastıran GitHub sınırlaması aşılmış olur. Tanınmayan etiket adları, sessizce dağıtım yapmak yerine çözümleme adımında başarısız olur.

Her başarılı üretim dağıtımından sonra bir web-<app>-r… veya api-r… sürüm işareti oluşturulur ve yerel anlamsal “Latest release” rozetinin yerini almaması için --prerelease olarak etiketlenir. Bu işaretler yetkili değişiklik kaydıdır — neyin yayınlandığının kaydıdır, geçit değildir.

API sürümüne ayrıca, o commit’te bulunan her D1 taşıma (migration) dosyasını listeleyen bir migrations.txt eki iliştirilir; böylece “N numaralı taşıma yayınlandı mı?” sorusunu Releases arayüzünden yanıtlayabilirsiniz.

Sürüm notları, önceki sürüm etiketi ile mevcut etiket arasında birleştirilen pull request başlıklarından GitHub tarafından otomatik olarak oluşturulur. PR başlıklarındaki Conventional Commit önekleri (feat:, fix:, perf:, …) notların gövdesi içinde değişiklikleri görsel olarak gruplandırır.