GH GambleHub

Σημασιολογική έκδοση

Σημασιολογική έκδοση

1) Τι είναι το SemVer και γιατί απαιτείται

Το SemVer θέτει προβλέψιμους κανόνες για την ανάθεση εκδόσεων σε τεχνουργήματα (βιβλιοθήκες, API, υπηρεσίες, σχήματα) έτσι ώστε οι καταναλωτές να κατανοούν τι να περιμένουν από την ενημέρωση:
  • ΜΕΊΖΟΝΕΣ - ρήξη αλλαγών.
  • Το MINOR είναι ένα νέο συμβατό με το API χαρακτηριστικό.
  • PATCH - αναστρέψιμες διορθώσεις ελαττώματος.

Στόχος: να συμφωνηθεί η σταθερότητα των συμβάσεων και να μειωθεί το κόστος των αναβαθμίσεων.

2) Μορφότυπος έκδοσης

Βασικό μορφότυπο:
  • 'MAJOR. MINOR. PATCH [- PRERELEASE] [+ ΚΑΤΑΣΚΕΥΗ] '

`1. 4. 7 'είναι μια σταθερή απελευθέρωση.
`1. 5. 0-rc. 2 '- προ-αποδέσμευση (υποψήφιος απελευθέρωσης αριθ. 2).
`2. 0. 0 + linux. arm64 '- μεταδεδομένα κατασκευής (δεν επηρεάζουν τη σύγκριση έκδοσης).

Κανόνες σύγκρισης:

1. Πρώτον, συγκρίνεται το 'MAJOR', στη συνέχεια το 'MINOR' και στη συνέχεια το 'PATCH'.

2. Οι προ-απελευθερώσεις είναι μικρότερες από την αντίστοιχη σταθερή έκδοση: '1. 2. 0-rc. 1 < 1. 2. 0`.

3. Η κατασκευή μεταδεδομένων ('+...') δεν επηρεάζει τη σειρά: '1. 2. 0+001 == 1. 2. 0`.

3) Τι μετράει ως αλλαγή ρήξης

Ρήξη αλλαγών - κάθε αλλαγή που απαιτεί την ανάληψη δράσης από τους καταναλωτές:
  • Διαγραφή/μετονομασία/αλλαγή υπογραφής δημόσιων μεθόδων/τελικών σημείων.
  • Αλλαγή μορφής εισόδου/εξόδου (σύστημα JSON, τύποι).
  • Τροποποίηση συμβάσεων σφάλματος (κωδικοί/δομές).
  • Αλλαγή παρενέργειας/SLA (για παράδειγμα, αυστηρά όρια ή νέα απαιτούμενα πεδία).

Μη θραύση (αν εφαρμοστεί σωστά): προσθήκη προαιρετικών πεδίων, επέκταση ενότητας με νέες τιμές (αν ο πελάτης τις αγνοεί), νέα τελικά σημεία, νέες σημαίες με αθετήσεις που δεν επηρεάζουν τις τρέχουσες κλήσεις.

4) Προεκχωρήσεις και στρατηγικές διαύλων

Οι προ-απελευθερώσεις σας επιτρέπουν να δοκιμάσετε χωρίς να σπάσετε τις υποσχέσεις του SemVer:
  • Ετικέτες: 'α', 'β', 'rc'. Παράδειγμα: '2. 3. 0-β. 3`.
  • Κανάλια: νυχτερινά → άλφα → βήτα → rc → σταθερά.
  • Πολιτική: Οι προ-εκλύσεις δεν θα πρέπει να πέφτουν ως μεταβατικές εξαρτήσεις για τις προκαθορισμένες συνελεύσεις παραγωγής.

5) Εύρος εκδόσεων και ακρίβεια περιορισμού

Τα πραγματικά οικοσυστήματα χρησιμοποιούν εκφράσεις εύρους:

5. 1 Κόμβος/npm (προκαθορισμένο SemVer)

`^1. 4. 2` ≈ `>=1. 4. 2 <2. 0. 0 '(επιτρέπει MINOR/PATCH, διορθώνει MAJOR).
`~1. 4. 2` ≈ `>=1. 4. 2 <1. 5. 0 '(επιτρέπει το PATCH εντός του MINOR).
`1. 4. x 'είναι οποιοδήποτε έμπλαστρο σε 1. 4.
Ακριβής καρφίτσα: '1. 4. 2`.

5. 2 Python (PEP 440, pip)

`~=1. 4. 2` ≈ `>=1. 4. 2,==1. 4.`.
`>=1. 4,<2. 0 '- σαφή όρια.

5. 3 Maven/Gradle (Java)

`[1. 4,2. 0) "- χωρίς αποκλεισμούς/αποκλειστικότητα.
Συνιστάται αυστηρή κλωτσιά για αντικείμενα που είναι κρίσιμα για τα τρόφιμα.

5. 4 Ενότητες Go

Πάντοτε να συμπληρώνετε τις ετικέτες «vMAJOR». MINOR. PATCH ',' v2 + 'απαιτεί επίθημα μονάδας '/v2'.

Σύσταση: για εφαρμογές - ακριβείς ακίδες (αναπαραγώγιμες κατασκευές). Για βιβλιοθήκες - κλίμακες περιποίησης (διευκόλυνση επικαιροποιήσεων χωρίς θραύση).

6) CHANGELOG - Συμβατικές δεσμεύσεις

Το διαρθρωμένο ημερολόγιο αλλαγών βελτιώνει τη διαφάνεια.

Συμβατικές δεσμεύσεις:

feat(payments): add PIX refund endpoint fix(api): correct 400 → 422 on invalid payload perf(cache): reduce p99 by 20%
refactor(core): extract rule engine docs: update API usage examples chore(deps): bump lodash to 4. 17. 21 feat!: remove legacy webhook v1 (BREAKING CHANGE:...)

: 'feat', 'fix', 'perf', 'doc Типы,' refactor ',' chore 'и т. д.
Ένα θαυμαστικό ή 'BREAKING CHANGE' μπλοκ δηλώνει ένα MAJOR.
Το CHANGELOG παράγεται από το ιστορικό των δεσμεύσεων (σημειώσεις απελευθέρωσης από ρομπότ).

7) Πολιτική μετάφρασης για την API

Δημόσιες API: αυστηρή SemVer· Σπάζοντας → MAJOR.
HTTP/REST: έκδοση από URL/κεφαλίδα: '/v1/... ', '/v2/...' ή 'Αποδοχή: εφαρμογή/vnd. org. υπηρεσία. v2 + json '.
συστήματα JSON: μικρές επεκτάσεις - νέα προαιρετικά πεδία· μείζων - να διαγραφεί/να τροποποιηθεί υποχρεωτικά.
gRPC/Protobuf: προσθήκη νέων πεδίων με νέους αριθμούς· Μη επαναχρησιμοποιήσετε τους αριθμούς πεδίου που διαγράφουν το αποσυντεθειμένο →, χωρίς να σπάσετε τους υπάρχοντες.

8) Συστήματα δεδομένων και μετανάστευσης

Οι μεταναστεύσεις βάσεων δεδομένων συγχρονίζονται με τις εκδόσεις app @ 1. 8. 0 'απαιτεί' schema @ 1. 8. x '.
Για αλλαγές σχήματος θραύσης - φάσεις: επέκταση (προσθήκη), μετάβαση, σύμβαση (διαγραφή). Αναβάθμιση σε MAJOR μόνο όταν διαγραφεί η παλαιά σύμβαση.
Υποστήριξη διπλής εγγραφής/ανάγνωσης για τη διάρκεια της μετάβασης.

9) Μονορέπος και μικροϋπηρεσίες

Πολλαπλή δέσμη: κάθε δέσμη μέτρων έχει τη δική της «Μείζονα ανάγκη». MINOR. PATCH ', κοινός κύκλος απελευθέρωσης ρίζας μόνο για μετα-αντικείμενα.

Ποικίλες στρατηγικές:
  • Ανεξάρτητες εκδόσεις (Lerna/Changesets) - αυξάνει την απομόνωση.
  • Κλείδωμα - ευκολότερη επικοινωνία, αλλά πιο λανθασμένη MAJORS.
  • Για τις μικροϋπηρεσίες, καθορίστε τις συμβάσεις (OpenAPI/Protobuf) με ξεχωριστή έκδοση: 'contract @ 2. 1. 0 ', η υπηρεσία την ακολουθεί.

10) Αυτοματοποίηση των εκλύσεων σε CI/CD

Αυτόματος υπολογισμός της έκδοσης βάσει συμβατικών δεσμεύσεων:
  • 'fix' → 'PATCH', 'feat' → 'MINOR', '! '/' BREAKING' → 'MAJOR'.
Autotegs και υπογραφή τεχνουργήματος:
yaml
Pseudo-workflow steps:
- run: npx semantic-release
- run: git tag v$NEW_VERSION && git push --tags
- run: cosign sign ghcr. io/org/app:v$NEW_VERSION

CHANGELOG γενιά, δημοσίευση σημειώσεων έκδοσης, ενημέρωση εξαρτήσεων στο repo GitOps, έλεγχος ότι «κύρια» πάντα δείχνει την τελευταία σταθερή ετικέτα.

11) Πολιτική στέρησης

Ανακοίνωση: η λειτουργικότητα του σήματος όπως αποσυναρμολογείται στην ελευθέρωση MINOR, να δοθεί ο όρος EOL (π.χ. 90 ημέρες).
Παρατηρησιμότητα: Καταγραφή της χρήσης κληροδοτημένων τελικών σημείων με το πλαίσιο χρήστη/ενοικιαστή.
Διαγραφή: στο ακόλουθο MAJOR. Τεκμηρίωση της διαδρομής μετάβασης.

12) Παραδείγματα και υποδείγματα

12. 1 Τακτική έκφραση επικύρωσης SemVer

regex
^(0    [1-9]\d)\.(0    [1-9]\d)\.(0    [1-9]\d)(?--([0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)))? (?:\+([0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)))?$

12. 2 Παραδείγματα συγκρίσεων

`1. 2. 3` < `1. 10. 0 '(σύγκριση MINOR).
`2. 0. 0-rc. 1` < `2. 0. 0`.
`1. 2. 3 + κατασκευή. 5` == `1. 2. 3`.

12. 3 Πολιτική εξάρτησης (παράδειγμα YAML)

yaml policy:
libraries:
default_range: "^MAJOR. MINOR. PATCH"
pin_security_critical: true services:
pin_exact: true allow_prerelease_in_nonprod: true api_contract:
require_same_minor: true forbid_major_mismatch: true

13) Αντι-μοτίβα

Χρήση «τελευταίων »/πλωτών ετικετών στο prod.
Σημαντική βελτίωση χωρίς πραγματικές αναλύσεις («εκδόσεις μάρκετινγκ»).
Κρυμμένες αλλαγές θραύσης υπό το πρόσχημα του 'PATCH'.
Προεκχυλίσεις σε μεταβατικές εξαρτήσεις εφαρμογών παραγωγής.
Αλλαγή του τεχνουργήματος χωρίς νέα ετικέτα (μεταλλαγμένες εκδόσεις).
Ασυνεπείς εκδόσεις κωδικών και σχήματα βάσεων δεδομένων.

14) Κατάλογος ελέγχου εφαρμογής (0-45 ημέρες)

0- 10 ηµέρες

Αποδοχή του SemVer ως υποχρεωτικού προτύπου, έγκριση των κριτηρίων θραύσης.
Συμπεριλαμβάνονται οι συμβατικές δεσμεύσεις και ένα πρότυπο δημοσίων σχέσεων με πεδίο 'BREAKING CHANGE'.

11-25 ημέρες

Σύνδεση σημασιολογικών/μεταβολών, αυτοπαραγωγή CHANGELOG.
Ρύθμιση υπογραφής και δημοσίευσης αντικειμένων κατά της ετικέτας vX. Y.Z '.

26-45 ημέρες

Εισάγετε την πολιτική υποτίμησης και την τηλεμετρία για κληροδοτημένη χρήση API.
Συγχρονισμός εκδόσεων συμβάσεων (OpenAPI/Proto) και υπηρεσιών.
Απαγόρευση «τελευταίων» και μεταλλαγμένων ετικετών σε επίπεδο πολιτικής (κανονισμοί OPA/CI).

15) Μετρήσεις διάρκειας

% των αντικειμένων που δημοσιεύθηκαν μόνο από την ετικέτα SemVer.
Μέσος χρόνος μετάβασης μεταξύ των εκδόσεων MINOR.
Αριθμός συμβάντων που οφείλονται σε κρυφές αλλαγές θραύσης.
Κάλυψη συμβατικών δεσμεύσεων σε αποθετήρια (> 95%).
Ποσοστό εξαρτήσεων χωρίς κυμαινόμενες σειρές του προϊόντος (> 90%).

16) Όταν το SemVer δεν είναι απαραίτητο

Εσωτερικά γρήγορα πρωτότυπα χωρίς εξωτερικούς καταναλωτές (η χρονολογημένη έκδοση είναι κατάλληλη).
Δεδομένα/μοντέλα με πειραματικά χαρακτηριστικά (καλύτερη έκδοση μοντέλου/σχήματος με συμβατότητα σε επίπεδο μετατροπέα).
Πακέτα περιεχομένου χωρίς σταθερή δημόσια API.

17) Συμπέρασμα

Το SemVer είναι σύμβαση εμπιστοσύνης μεταξύ κατασκευαστή και καταναλωτή. Να οριστεί σαφώς τι διακόπτει τη συμβατότητα, την αυτοματοποιημένη αναγνώριση τύπου απελευθέρωσης και τη δημοσίευση τεχνουργημάτων, να διατηρηθεί μια διαφανής CHANGELOG και να συμμορφωθεί με τις πολιτικές στέρησης. Στη συνέχεια, οι επικαιροποιήσεις θα καταστούν συνήθεις, προβλέψιμες και ασφαλείς - και η υποδομή και οι API θα αναπτυχθούν χωρίς κλυδωνισμούς για την επιχείρηση.

Contact

Επικοινωνήστε μαζί μας

Επικοινωνήστε για οποιαδήποτε βοήθεια ή πληροφορία.Είμαστε πάντα στη διάθεσή σας.

Telegram
@Gamble_GC
Έναρξη ολοκλήρωσης

Το Email είναι υποχρεωτικό. Telegram ή WhatsApp — προαιρετικά.

Το όνομά σας προαιρετικό
Email προαιρετικό
Θέμα προαιρετικό
Μήνυμα προαιρετικό
Telegram προαιρετικό
@
Αν εισαγάγετε Telegram — θα απαντήσουμε και εκεί.
WhatsApp προαιρετικό
Μορφή: κωδικός χώρας + αριθμός (π.χ. +30XXXXXXXXX).

Πατώντας «Αποστολή» συμφωνείτε με την επεξεργασία δεδομένων.