81 lines
4.7 KiB
Markdown
81 lines
4.7 KiB
Markdown
# Διαδικασία Έκδοσης (Release Process)
|
|
|
|
Αυτό το εγχειρίδιο περιγράφει την τυπική ροή εργασιών έκδοσης νέων εκδόσεων για τους συντηρητές του ZeroClaw.
|
|
|
|
Τελευταία επαλήθευση: **20 Φεβρουαρίου 2026**.
|
|
|
|
## Στόχοι Εκδόσεων
|
|
|
|
- **Προβλεψιμότητα**: Οι εκδόσεις πρέπει να είναι επαναλήψιμες και σταθερές.
|
|
- **Ακεραιότητα**: Δημοσίευση κώδικα αποκλειστικά από τον κλάδο `main`.
|
|
- **Επαλήθευση**: Πλήρης έλεγχος των παραγόμενων αρχείων (artifacts) για όλες τις υποστηριζόμενες πλατφόρμες.
|
|
- **Συχνότητα**: Διατήρηση τακτικού ρυθμού εκδόσεων ανεξάρτητα από τον όγκο των PR.
|
|
|
|
## Συχνότητα Εκδόσεων
|
|
|
|
- **Patch / Minor**: Εβδομαδιαία ή ανά δεκαπενθήμερο, αναλόγως του φόρτου.
|
|
- **Hotfixes**: Άμεση έκδοση σε περίπτωση κρίσιμων σφαλμάτων ασφαλείας.
|
|
- **Πρακτική**: Αποφυγή συσσώρευσης μεγάλου αριθμού commits μεταξύ των εκδόσεων.
|
|
|
|
## Αυτοματοποίηση (Workflows)
|
|
|
|
Η ροή εργασιών περιγράφεται στο αρχείο `.github/workflows/pub-release.yml`.
|
|
|
|
**Λειτουργίες**:
|
|
- **Tag Push (`v*`)**: Ενεργοποιεί τη διαδικασία δημοσίευσης.
|
|
- **Manual Dispatch**: Χειροκίνητη εκκίνηση για επαλήθευση ή δημοσίευση.
|
|
- **Scheduled**: Εβδομαδιαίος έλεγχος επαλήθευσης.
|
|
|
|
**Προϋποθέσεις Δημοσίευσης**:
|
|
- Η ετικέτα (tag) πρέπει να ακολουθεί το πρότυπο Semver (`vX.Y.Z`).
|
|
- Το tag πρέπει να είναι ήδη διαθέσιμο στο απομακρυσμένο αποθετήριο.
|
|
- Το commit του tag πρέπει να ανήκει στον κλάδο `origin/main`.
|
|
- Επιτυχής κατασκευή και επαλήθευση όλων των artifacts (binaries, Docker images).
|
|
- Διαθεσιμότητα των SBOMs (`CycloneDX` / `SPDX`) και των υπογραφών `cosign`.
|
|
|
|
## Βήματα Συντηρητή
|
|
|
|
### 1. Έλεγχος Κλάδου main
|
|
|
|
- Επιβεβαιώστε ότι όλοι οι έλεγχοι CI είναι επιτυχείς.
|
|
- Βεβαιωθείτε ότι δεν υπάρχουν ανοικτά κρίσιμα περιστατικά (bugs).
|
|
- Επαληθεύστε τη λειτουργία των εγκαταστατών (installers) και των Docker images.
|
|
|
|
### 2. Κατασκευή Επαλήθευσης (Dry Run)
|
|
|
|
Εκτελέστε χειροκίνητα τη ροή `Pub Release` με τις εξής ρυθμίσεις:
|
|
- `publish_release`: `false`
|
|
- `release_ref`: `main`
|
|
|
|
### 3. Δημιουργία Ετικέτας (Release Tag)
|
|
|
|
Σε περιβάλλον συγχρονισμένο με το `origin/main`, εκτελέστε:
|
|
```bash
|
|
scripts/release/cut_release_tag.sh vX.Y.Z --push
|
|
```
|
|
Το σενάριο ελέγχει αυτόματα τη συμβατότητα Semver και την καθαρότητα του repo.
|
|
|
|
### 4. Παρακολούθηση Δημοσίευσης
|
|
|
|
Μετά το push, παρακολουθήστε την πρόοδο στις ροές:
|
|
1. `Pub Release` (λειτουργία δημοσίευσης).
|
|
2. `Pub Docker Img`.
|
|
|
|
### 5. Τελική Επαλήθευση
|
|
|
|
- Επιβεβαιώστε τη δυνατότητα λήψης των assets από το GitHub Release.
|
|
- Ελέγξτε τις ετικέτες GHCR και την ετικέτα `latest`.
|
|
- Πραγματοποιήστε δοκιμαστική εγκατάσταση.
|
|
|
|
## Διαδικασία Αποκατάστασης (Emergency Rollback)
|
|
|
|
Εάν η δημοσίευση αποτύχει μετά την επαλήθευση:
|
|
1. Διορθώστε το πρόβλημα στον κλάδο `main`.
|
|
2. Εκτελέστε ξανά χειροκίνητα τη ροή `Pub Release` ορίζοντας το `publish_release=true` και την υπάρχουσα ετικέτα.
|
|
|
|
## Κανόνες Λειτουργίας
|
|
|
|
- Κάθε έκδοση πρέπει να είναι μικρή και εύκολα αναστρέψιμη.
|
|
- Χρησιμοποιήστε ένα Issue tracker ανά release για την καταγραφή της προόδου.
|
|
- Αποφύγετε τη δημοσίευση εκδόσεων από feature branches.
|