Αποτυχίες στα συστήματα κατασκευής λόγω αλλαγών στα αθροίσματα ελέγχου αρχειοθέτησης στο GitHub

Το GitHub άλλαξε τον τρόπο που δημιουργεί αυτόματα δημιουργούμενα αρχεία ".tar.gz" και ".tgz" στις σελίδες έκδοσης, γεγονός που οδήγησε σε αλλαγές στα αθροίσματα ελέγχου τους και τεράστιες αποτυχίες σε συστήματα αυτοματοποιημένης κατασκευής που ελέγχουν τα αρχεία που έχουν ληφθεί από το GitHub σε σχέση με προηγούμενα για να επιβεβαιώσουν την ακεραιότητα Αποθηκευμένα αθροίσματα ελέγχου, για παράδειγμα, τοποθετημένα σε μεταδεδομένα πακέτων ή σε σενάρια έκδοσης.

Ξεκινώντας με την έκδοση 2.38, το κιτ εργαλείων Git περιλάμβανε μια ενσωματωμένη υλοποίηση του gzip από προεπιλογή, η οποία κατέστησε δυνατή την ενοποίηση της υποστήριξης αυτής της μεθόδου συμπίεσης σε όλα τα λειτουργικά συστήματα και τη βελτίωση της απόδοσης δημιουργίας αρχείων. Το GitHub έλαβε την αλλαγή μετά την ενημέρωση της έκδοσης του git στην υποδομή του. Το πρόβλημα προκλήθηκε από το γεγονός ότι τα συμπιεσμένα αρχεία που δημιουργούνται από την ενσωματωμένη εφαρμογή gzip που βασίζεται σε zlib είναι δυαδικά διαφορετικά από τα αρχεία που δημιουργούνται από το βοηθητικό πρόγραμμα gzip, γεγονός που είχε ως αποτέλεσμα διαφορετικά αθροίσματα ελέγχου για αρχεία που δημιουργήθηκαν από διαφορετικές εκδόσεις του git κατά την εκτέλεση του εντολή "git archive".

Κατά συνέπεια, μετά την ενημέρωση του git στο GitHub, άρχισαν να εμφανίζονται ελαφρώς διαφορετικά αρχεία στις σελίδες έκδοσης που δεν πέρασαν την επαλήθευση χρησιμοποιώντας τα παλιά αθροίσματα ελέγχου. Το πρόβλημα εκδηλώθηκε σε διάφορα συστήματα κατασκευής, συστήματα συνεχούς ενοποίησης και εργαλεία για τη δημιουργία πακέτων από τον πηγαίο κώδικα. Για παράδειγμα, η συναρμολόγηση περίπου 5800 θυρών FreeBSD, οι πηγαίοι κώδικες των οποίων λήφθηκαν από το GitHub, ήταν κατεστραμμένη.

Σε απάντηση στα αρχικά παράπονα για τις δυσλειτουργίες, το GitHub αρχικά ανέφερε το γεγονός ότι τα μόνιμα αθροίσματα ελέγχου για τα αρχεία δεν ήταν ποτέ εγγυημένα. Αφού αποδείχθηκε ότι θα απαιτούνταν τεράστιος όγκος εργασίας για την ενημέρωση των μεταδεδομένων σε διάφορα οικοσυστήματα για την αποκατάσταση της λειτουργικότητας των επηρεαζόμενων συστημάτων κατασκευής, οι εκπρόσωποι του GitHub άλλαξαν γνώμη, επανέστρεψαν την αλλαγή και επέστρεψαν την παλιά μέθοδο δημιουργίας αρχείων.

Οι προγραμματιστές του Git δεν έχουν καταλήξει ακόμη σε μια απόφαση και συζητούν μόνο πιθανές ενέργειες. Οι επιλογές που εξετάστηκαν περιελάμβαναν την επαναφορά στη χρήση του προεπιλεγμένου βοηθητικού προγράμματος gzip. Προσθέτοντας τη σημαία "--stable" για τη διατήρηση της συμβατότητας με παλιά αρχεία. σύνδεση της ενσωματωμένης υλοποίησης σε ξεχωριστή μορφή αρχειοθέτησης. χρησιμοποιώντας το βοηθητικό πρόγραμμα gzip για παλιές δεσμεύσεις και την ενσωματωμένη υλοποίηση για δεσμεύσεις που ξεκινούν από μια συγκεκριμένη ημερομηνία. εγγυάται σταθερότητα μορφής μόνο για μη συμπιεσμένα αρχεία.

Η δυσκολία λήψης μιας απόφασης εξηγείται από το γεγονός ότι η επαναφορά σε μια κλήση σε ένα εξωτερικό βοηθητικό πρόγραμμα δεν λύνει πλήρως το πρόβλημα της αμετάβλητης αθροίσματος ελέγχου, καθώς μια αλλαγή στο εξωτερικό πρόγραμμα gzip μπορεί επίσης να οδηγήσει σε αλλαγή στη μορφή αρχείου. Επί του παρόντος, έχει προταθεί για αναθεώρηση ένα σύνολο ενημερώσεων κώδικα που επιστρέφει την παλιά συμπεριφορά από προεπιλογή (καλώντας ένα εξωτερικό βοηθητικό πρόγραμμα gzip) και χρησιμοποιεί την ενσωματωμένη εφαρμογή ελλείψει βοηθητικού προγράμματος gzip στο σύστημα. Οι ενημερώσεις κώδικα προσθέτουν επίσης στην τεκμηρίωση μια αναφορά ότι η σταθερότητα της εξόδου "git archive" δεν είναι εγγυημένη και ότι η μορφή ενδέχεται να αλλάξει στο μέλλον.

Πηγή: opennet.ru

Προσθέστε ένα σχόλιο