Αναφορά: πώς λειτουργεί η διαδικασία συνεχούς ενοποίησης

Σήμερα θα εξετάσουμε την ιστορία του όρου, θα συζητήσουμε τις δυσκολίες εφαρμογής του CI και θα παρέχουμε πολλά δημοφιλή εργαλεία που θα σας βοηθήσουν να εργαστείτε με αυτόν.

Αναφορά: πώς λειτουργεί η διαδικασία συνεχούς ενοποίησης
/flickr/ Altug Karakoc / CC BY / Η φωτογραφία τροποποιήθηκε

όρος

Η συνεχής ενοποίηση είναι μια προσέγγιση για την ανάπτυξη εφαρμογών που περιλαμβάνει συχνές κατασκευές έργων και δοκιμές κώδικα.

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

Ο όρος Continuous Integration εμφανίστηκε για πρώτη φορά το 1991. Εισήχθη από τον δημιουργό της γλώσσας UML Γκρέιντι Μπουτς (Grady Booch). Ο μηχανικός εισήγαγε την έννοια του CI ως μέρος της δικής του πρακτικής ανάπτυξης - Μέθοδος Booch. Υπονοούσε σταδιακή βελτίωση της αρχιτεκτονικής κατά το σχεδιασμό αντικειμενοστρεφών συστημάτων. Ο Gradi δεν περιέγραψε καμία απαίτηση για συνεχή ολοκλήρωση. Αλλά αργότερα στο βιβλίο του "Αντικειμενοστρεφής Ανάλυση και Σχεδιασμός με Εφαρμογές«Είπε ότι ο στόχος της μεθοδολογίας είναι να επιταχύνει την κυκλοφορία των «εσωτερικών εκδόσεων».

Ιστορία

Το 1996, η CI υιοθετήθηκε από τους δημιουργούς της μεθοδολογίας ακραίος προγραμματισμός (XP) - Κεντ Μπεκ (Κεντ Μπεκ) και Ρον Τζέφρις (Ρον Τζέφρις). Η συνεχής ολοκλήρωση έγινε μία από τις δώδεκα βασικές αρχές της προσέγγισής τους. Οι ιδρυτές της XP διευκρίνισαν τις απαιτήσεις για τη μεθοδολογία CI και σημείωσαν την ανάγκη κατασκευής του έργου πολλές φορές την ημέρα.

Στις αρχές της δεκαετίας του 2000, ένας από τους ιδρυτές της Agile Alliance άρχισε να προωθεί τη μεθοδολογία συνεχούς ενσωμάτωσης Μάρτιν Φάουλερ (Μάρτιν Φάουλερ). Τα πειράματά του με το CI οδήγησαν στο πρώτο εργαλείο λογισμικού σε αυτόν τον τομέα - το CruiseControl. Το βοηθητικό πρόγραμμα δημιουργήθηκε από τον συνάδελφο του Martin, Matthew Foemmel.

Ο κύκλος κατασκευής στο εργαλείο υλοποιείται ως δαίμονας που ελέγχει περιοδικά το σύστημα ελέγχου έκδοσης για αλλαγές στη βάση κώδικα. Μπορείτε να κατεβάσετε τη λύση σήμερα - αυτή διανέμονται από βάσει άδειας τύπου BSD.

Με την εμφάνιση του λογισμικού για το CI, όλο και περισσότερες εταιρείες άρχισαν να υιοθετούν την πρακτική. Σύμφωνα με την έρευνα της Forrester [σελίδα 5 κανω ΑΝΑΦΟΡΑ], το 2009, το 86% των πενήντα εταιρειών τεχνολογίας που συμμετείχαν στην έρευνα χρησιμοποίησαν ή εφάρμοσαν μεθόδους CI.

Σήμερα, η πρακτική της Συνεχούς Ενοποίησης χρησιμοποιείται από οργανισμούς από μια μεγάλη ποικιλία βιομηχανιών. Το 2018, ένας μεγάλος πάροχος cloud πραγματοποίησε έρευνα μεταξύ ειδικών πληροφορικής από εταιρείες στους τομείς των υπηρεσιών, της εκπαίδευσης και των χρηματοοικονομικών. Από τους έξι χιλιάδες ερωτηθέντες, το 58% είπε ότι χρησιμοποιεί εργαλεία και αρχές CI στη δουλειά του.

Πώς λειτουργεί;

Η συνεχής ενοποίηση βασίζεται σε δύο εργαλεία: ένα σύστημα ελέγχου έκδοσης και έναν διακομιστή CI. Το τελευταίο μπορεί να είναι είτε μια φυσική συσκευή είτε μια εικονική μηχανή σε περιβάλλον cloud. Οι προγραμματιστές ανεβάζουν νέο κώδικα μία ή περισσότερες φορές την ημέρα. Ο διακομιστής CI το αντιγράφει αυτόματα με όλες τις εξαρτήσεις και το δημιουργεί. Στη συνέχεια, εκτελεί δοκιμές ενοποίησης και μονάδας. Εάν οι δοκιμές περάσουν με επιτυχία, το σύστημα CI αναπτύσσει τον κωδικό.

Το γενικό διάγραμμα διαδικασίας μπορεί να αναπαρασταθεί ως εξής:

Αναφορά: πώς λειτουργεί η διαδικασία συνεχούς ενοποίησης

Η μεθοδολογία CI απαιτεί μια σειρά από απαιτήσεις για τους προγραμματιστές:

  • Διορθώστε άμεσα τα προβλήματα. Αυτή η αρχή ήρθε στο CI από τον ακραίο προγραμματισμό. Η διόρθωση σφαλμάτων είναι η ύψιστη προτεραιότητα των προγραμματιστών.
  • Αυτοματοποιήστε τις διαδικασίες. Οι προγραμματιστές και οι διαχειριστές πρέπει να αναζητούν συνεχώς σημεία συμφόρησης στη διαδικασία ολοκλήρωσης και να τα εξαλείφουν. Για παράδειγμα, υπάρχει συχνά ένα εμπόδιο στην ενσωμάτωση καταλήγει δοκιμές.
  • Διεξάγετε συγκεντρώσεις όσο πιο συχνά γίνεται. Μια φορά την ημέρα για να συγχρονίσετε τη δουλειά της ομάδας.

Δυσκολίες υλοποίησης

Το πρώτο πρόβλημα είναι το υψηλό λειτουργικό κόστος. Ακόμα κι αν μια εταιρεία χρησιμοποιεί ανοιχτά εργαλεία CI (για τα οποία θα μιλήσουμε αργότερα), θα πρέπει να ξοδέψει χρήματα για υποστήριξη υποδομών. Ωστόσο, οι τεχνολογίες cloud μπορεί να είναι η λύση.

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

Σύμφωνα με έρευνες [σελίδα 14 Άρθρο], η συνεχής ολοκλήρωση αυξάνει το φορτίο στους υπαλλήλους της εταιρείας (τουλάχιστον στην αρχή). Πρέπει να μάθουν νέα εργαλεία και οι συνάδελφοι δεν βοηθούν πάντα στην εκπαίδευση. Επομένως, πρέπει να αντιμετωπίζετε νέα πλαίσια και υπηρεσίες εν κινήσει.

Η τρίτη δυσκολία είναι τα προβλήματα με την αυτοματοποίηση. Οργανισμοί με μεγάλο αριθμό κωδικών παλαιού τύπου που δεν καλύπτονται από αυτοματοποιημένες δοκιμές αντιμετωπίζουν αυτό το πρόβλημα. Αυτό οδηγεί στο γεγονός ότι ο κώδικας απλώς ξαναγράφεται πριν από την πλήρη εφαρμογή του CI.

Αναφορά: πώς λειτουργεί η διαδικασία συνεχούς ενοποίησης
/flickr/ τους / CC BY-SA

Ποιος χρησιμοποιεί

Οι γίγαντες της πληροφορικής ήταν από τους πρώτους που εκτίμησαν τα οφέλη της μεθοδολογίας. Google χρήσεις συνεχής ολοκλήρωση από τα μέσα της δεκαετίας του 2000. Το CI εφαρμόστηκε για να λύσει το πρόβλημα των καθυστερήσεων στη μηχανή αναζήτησης. Η συνεχής ενοποίηση βοήθησε στον γρήγορο εντοπισμό και επίλυση προβλημάτων. Τώρα το CI χρησιμοποιείται από όλα τα τμήματα του κολοσσού της πληροφορικής.

Η συνεχής ενοποίηση βοηθά επίσης τις μικρές εταιρείες και τα εργαλεία CI χρησιμοποιούνται επίσης από χρηματοοικονομικούς οργανισμούς και οργανισμούς υγειονομικής περίθαλψης. Για παράδειγμα, στο Morningstar, οι υπηρεσίες συνεχούς ενοποίησης βοήθησαν να επιδιορθωθούν τα τρωτά σημεία 70% πιο γρήγορα. Και η ιατρική πλατφόρμα Philips Healthcare μπόρεσε να διπλασιάσει την ταχύτητα των ενημερώσεων δοκιμών.

Εργαλεία

Ακολουθούν ορισμένα δημοφιλή εργαλεία για το CI:

  • Jenkins είναι ένα από τα πιο δημοφιλή συστήματα CI. Υποστηρίζει περισσότερα από χίλια πρόσθετα για ενσωμάτωση με διάφορα VCS, πλατφόρμες cloud και άλλες υπηρεσίες. Χρησιμοποιούμε επίσης το Jenkins στο εργαλείο 1cloud: περιλαμβάνονται στο σύστημα DevOps μας. Ελέγχει τακτικά τον κλάδο Git που προορίζεται για δοκιμή.
  • Buildbot — ένα πλαίσιο python για τη σύνταξη των δικών σας διαδικασιών συνεχούς ολοκλήρωσης. Η αρχική ρύθμιση του εργαλείου είναι αρκετά περίπλοκη, αλλά αυτό αντισταθμίζεται από τις ευρείες επιλογές προσαρμογής. Μεταξύ των πλεονεκτημάτων του πλαισίου, οι χρήστες τονίζουν τη χαμηλή του ένταση πόρων.
  • Διαγωνισμός CI είναι ένας διακομιστής από το Pivotal που χρησιμοποιεί κοντέινερ Docker. Το Concourse CI ενσωματώνεται με οποιαδήποτε εργαλεία και συστήματα ελέγχου έκδοσης. Οι προγραμματιστές σημειώνουν ότι το σύστημα είναι κατάλληλο για εργασία σε εταιρείες οποιουδήποτε μεγέθους.
  • Gitlab CI είναι ένα εργαλείο ενσωματωμένο στο σύστημα ελέγχου έκδοσης GitLab. Η υπηρεσία εκτελείται στο cloud και χρησιμοποιεί αρχεία YAML για διαμόρφωση. Όπως το Concourse, το Gitlab CI ισχύει Docker containers που βοηθούν στην απομόνωση διαφορετικών διεργασιών μεταξύ τους.
  • Κώδικας είναι ένας διακομιστής cloud CI που λειτουργεί με GitHub, GitLab και BitBucket. Η πλατφόρμα δεν απαιτεί μακρά αρχική ρύθμιση - τυπικές προεγκατεστημένες διαδικασίες CI είναι διαθέσιμες στο Codeship. Για μικρά (έως 100 εκδόσεις το μήνα) και έργα ανοιχτού κώδικα, το Codeship είναι διαθέσιμο δωρεάν.

Υλικό από το εταιρικό μας blog:

Πηγή: www.habr.com

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