bublliodocs
Ανάπτυξη και λειτουργία

Αναβάθμιση self-hosted εγκατάστασης

Πώς ελέγχετε releases, δημιουργείτε backup, αναβαθμίζετε και κάνετε rollback με ελεγχόμενο τρόπο.

Το Bubllio CRM χρησιμοποιεί τα stable GitHub Releases ως επίσημη πηγή ενημερώσεων. Ο installation administrator βλέπει banner όταν το πιο πρόσφατο δημοσιευμένο release είναι νεότερο από την εγκατεστημένη έκδοση. Τα drafts και τα prereleases δεν εμφανίζουν banner.

Ο έλεγχος είναι σκόπιμα μόνο για ανάγνωση. Το Bubllio δεν κάνει pull κώδικα, δεν αντικαθιστά containers, δεν εκτελεί migrations και δεν κάνει restart υπηρεσιών από το web app. Οι operators διατηρούν τον έλεγχο των deployment credentials και του rollback.

Πριν από την αναβάθμιση

  1. Ανοίξτε το release που συνδέεται από το banner και διαβάστε τις release notes.
  2. Δημιουργήστε backup της database, καθώς και των αρχείων ή volumes που διαχειρίζεται το deployment.
  3. Επιβεβαιώστε τις υποστηριζόμενες εκδόσεις Python, Node και database για το release.
  4. Καταγράψτε το tag ή το image digest που είναι τώρα σε χρήση, ώστε να μπορείτε να το επαναφέρετε.

Αναβάθμιση

Ακολουθήστε τη μέθοδο deployment της εγκατάστασης και χρησιμοποιήστε το ακριβές release tag — όχι ένα branch που αλλάζει με τον χρόνο. Εγκαταστήστε τις κλειδωμένες dependencies και εκτελέστε:

uv run python src/manage.py migrate
uv run python src/manage.py check --deploy

Κάντε build και deploy το frontend από το ίδιο tag, κάντε restart την εφαρμογή μέσω του process manager της εγκατάστασης και ελέγξτε το sign-in και μία αντιπροσωπευτική ροή εργασίας σε workspace. Αν το release έχει ειδικά βήματα, ακολουθήστε εκείνα αντί για αυτή τη γενική λίστα.

Ρυθμίσεις και ιδιωτικότητα

Το backend ελέγχει το https://api.github.com/repos/<owner>/<repository>/releases/latest, με timeout τριών δευτερολέπτων. Το αποτέλεσμα αποθηκεύεται προσωρινά για BUBLLIO_UPDATE_CHECK_TTL δευτερόλεπτα (έξι ώρες από προεπιλογή). Αν ο έλεγχος αποτύχει, το CRM συνεχίζει να λειτουργεί. Το GitHub λαμβάνει τη διεύθυνση IP του server και ένα user agent που περιλαμβάνει την έκδοση του Bubllio.

Απενεργοποιήστε πλήρως το αίτημα αν η εγκατάσταση είναι offline ή η πολιτική σας δεν το επιτρέπει:

BUBLLIO_UPDATE_CHECK_ENABLED=false

Το BUBLLIO_UPDATE_REPOSITORY έχει προεπιλεγμένη τιμή apodimi/bubllio-crm και δέχεται μόνο τιμή της μορφής owner/repository. Το endpoint και το banner είναι διαθέσιμα μόνο σε ενεργούς installation administrators.

Κατάσταση backup και restore

Το Bubllio δεν δημιουργεί backup της database. Χρησιμοποιήστε τον μηχανισμό backup του hosting provider ή της υπηρεσίας database. Αφού ολοκληρωθεί το backup job, καταγράψτε το αποτέλεσμά του από το application environment:

uv run python src/manage.py record_backup_event --kind backup --status success

Για αποτυχημένο job, χρησιμοποιήστε --status failure. Αφού ολοκληρώσετε δοκιμή επαναφοράς, καταγράψτε την με --kind restore_test. Το Account settings εμφανίζει το τελευταίο καταγεγραμμένο αποτέλεσμα, επισημαίνει τα backup ως εκπρόθεσμα μετά από 24 ώρες και προτείνει δοκιμή restore κάθε 90 ημέρες. Μπορείτε να αλλάξετε αυτά τα διαστήματα με τα BUBLLIO_BACKUP_MAX_AGE_HOURS και BUBLLIO_RESTORE_TEST_MAX_AGE_DAYS.

Η ένδειξη κατάστασης είναι τόσο αξιόπιστη όσο το scheduler που την καταγράφει. Εκτελέστε την εντολή καταγραφής αφού επιβεβαιώσετε ότι το πραγματικό backup ή restore ολοκληρώθηκε επιτυχώς. Αποθηκεύετε τα backup artifacts έξω από την application database και δοκιμάζετε την επαναφορά σε απομονωμένο περιβάλλον. Μην καταγράφετε credentials του provider ή διαδρομές backup στο event.

Οι installation administrators μπορούν επίσης να κατεβάσουν JSON export των δεδομένων από το Account settings. Δεν περιλαμβάνει passwords, authentication tokens, κρυπτογραφημένα SMTP passwords ή μηνύματα σφάλματος automations. Το export περιέχει δεδομένα πελατών και πρέπει να αποθηκεύεται με ασφάλεια. Προορίζεται για τοπικό έλεγχο και φορητότητα· δεν αντικαθιστά backup σε επίπεδο database ούτε δοκιμασμένο restore.

Δημοσίευση release

  1. Ενημερώστε την έκδοση στα pyproject.toml και frontend/package.json με μορφή MAJOR.MINOR.PATCH και εκτελέστε uv run python scripts/check_release_version.py.
  2. Εκτελέστε όλους τους ελέγχους του backend, του frontend και του browser.
  3. Κάντε merge τις αλλαγές που είναι έτοιμες για release και δημιουργήστε αντίστοιχο tag, για παράδειγμα v0.2.0.
  4. Δημοσιεύστε GitHub Release για αυτό το tag, χωρίς να είναι draft ή prerelease.
  5. Συμπεριλάβετε οδηγίες αναβάθμισης, migrations, breaking changes και rollback.

Ο update checker δέχεται σκόπιμα μόνο εκδόσεις της μορφής vMAJOR.MINOR.PATCH ή MAJOR.MINOR.PATCH. Έτσι η σύγκριση εκδόσεων παραμένει προβλέψιμη και δεν βασίζεται σε αυθαίρετο κείμενο release.