CI/CD Pipeline: Learn with Example
Τι είναι ένας αγωγός CI/CD;
Μια σωλήνωση CI/CD αυτοματοποιεί τη διαδικασία παράδοσης λογισμικού. Δημιουργεί κώδικα, εκτελεί δοκιμές και σας βοηθά να αναπτύξετε με ασφάλεια μια νέα έκδοση του λογισμικού. Η διοχέτευση CI/CD μειώνει τα χειροκίνητα σφάλματα, παρέχει σχόλια στους προγραμματιστές και επιτρέπει γρήγορες επαναλήψεις προϊόντων.
Ο αγωγός CI/CD εισάγει αυτοματισμό και συνεχή παρακολούθηση καθ' όλη τη διάρκεια του κύκλου ζωής ενός προϊόντος λογισμικού. Περιλαμβάνει από τη φάση της ολοκλήρωσης και της δοκιμής έως την παράδοση και την ανάπτυξη. Αυτές οι συνδεδεμένες πρακτικές αναφέρονται ως αγωγός CI/CD.
Τι είναι η συνεχής ενοποίηση, η συνεχής παράδοση και η συνεχής ανάπτυξη;
- Συνεχής ολοκλήρωση είναι μια μέθοδος ανάπτυξης λογισμικού όπου τα μέλη της ομάδας μπορούν να ενσωματώσουν την εργασία τους τουλάχιστον μία φορά την ημέρα. Σε αυτή τη μέθοδο, κάθε ενσωμάτωση ελέγχεται από μια αυτοματοποιημένη έκδοση για αναζήτηση του σφάλματος.
- Συνεχής παράδοση είναι μια μέθοδος μηχανικής λογισμικού κατά την οποία μια ομάδα αναπτύσσει προϊόντα λογισμικού σε σύντομο κύκλο. Εξασφαλίζει ότι το λογισμικό μπορεί να κυκλοφορήσει εύκολα ανά πάσα στιγμή.
- Συνεχής ανάπτυξη είναι μια διαδικασία μηχανικής λογισμικού κατά την οποία οι λειτουργίες του προϊόντος παραδίδονται χρησιμοποιώντας αυτόματη ανάπτυξη. Βοηθά τους δοκιμαστές να επικυρώσουν εάν οι αλλαγές στη βάση κώδικα είναι σωστές και αν είναι σταθερές ή όχι.
Στάδια ενός αγωγού CI/CD
Μια διοχέτευση CI/CD είναι μια προδιαγραφή με δυνατότητα εκτέλεσης των βημάτων που πρέπει να εκτελέσει οποιοσδήποτε προγραμματιστής για να παραδώσει μια νέα έκδοση οποιουδήποτε λογισμικού. Η αποτυχία σε κάθε στάδιο ενεργοποιεί μια ειδοποίηση μέσω email, Slack, ή άλλες πλατφόρμες επικοινωνίας. Επιτρέπει στους υπεύθυνους προγραμματιστές να γνωρίζουν τα σημαντικά ζητήματα.
Ακολουθούν τα σημαντικά στάδια του αγωγού CI/CD:
Πηγή Στάδιο
Στο στάδιο προέλευσης, η διοχέτευση CI/CD ενεργοποιείται από ένα αποθετήριο κώδικα. Οποιαδήποτε αλλαγή στο πρόγραμμα ενεργοποιεί μια ειδοποίηση στο εργαλείο CI/CD που εκτελεί μια αντίστοιχη διοχέτευση. Άλλοι συνήθεις παράγοντες ενεργοποίησης περιλαμβάνουν ροές εργασίας που ξεκινούν από τον χρήστη, αυτοματοποιημένα χρονοδιαγράμματα και τα αποτελέσματα άλλων αγωγών.
Στάδιο κατασκευής
Αυτό είναι το δεύτερο στάδιο του CI/CD Pipeline στο οποίο συγχωνεύετε τον πηγαίο κώδικα και τις εξαρτήσεις του. Γίνεται κυρίως για τη δημιουργία μιας τρέχουσας παρουσίας λογισμικού που μπορείτε ενδεχομένως να στείλετε στον τελικό χρήστη.
Προγράμματα που είναι γραμμένα σε γλώσσες όπως C++, JavaΗ γλώσσα , C ή Go θα πρέπει να μεταγλωττιστεί. Από την άλλη πλευρά, JavaΓραφή, Python, και τα προγράμματα Ruby μπορούν να λειτουργήσουν χωρίς το στάδιο κατασκευής.
Αν δεν περάσετε το στάδιο κατασκευής σημαίνει ότι υπάρχει μια βασική εσφαλμένη διαμόρφωση του έργου, επομένως είναι καλύτερο να αντιμετωπίσετε αυτό το ζήτημα αμέσως.
Δοκιμαστικό Στάδιο
Το Test Stage περιλαμβάνει την εκτέλεση αυτοματοποιημένων δοκιμών για την επικύρωση της ορθότητας του κώδικα και της συμπεριφοράς του λογισμικού. Αυτό το στάδιο αποτρέπει τα εύκολα αναπαραγώγιμα σφάλματα να φτάσουν στους πελάτες. Είναι ευθύνη των προγραμματιστών να γράφουν αυτοματοποιημένες δοκιμές.
Στάδιο ανάπτυξης
Αυτό είναι το τελευταίο στάδιο όπου το προϊόν σας βγαίνει ζωντανά. Μόλις το build περάσει με επιτυχία από όλα τα απαιτούμενα σενάρια δοκιμής, είναι έτοιμο να αναπτυχθεί σε ζωντανό διακομιστή.
Παράδειγμα αγωγού CI/CD
Ακολουθεί παράδειγμα αγωγού CI/CD:
- Έλεγχος πηγαίου κώδικα: Κώδικας κεντρικού υπολογιστή στο GitHub ως ιδιωτικό αποθετήριο. Αυτό θα σας βοηθήσει να ενσωματώσετε την εφαρμογή σας με σημαντικές υπηρεσίες και λογισμικό.
- Συνεχής ενσωμάτωση: Χρησιμοποιήστε πλατφόρμα συνεχούς ενοποίησης και παράδοσης CircleCI και δεσμεύστε κάθε κωδικό. Όταν ειδοποιηθούν οι αλλαγές, αυτό το εργαλείο θα τραβήξει τον κώδικα που είναι διαθέσιμος στο GitHub και θα επεξεργαστεί τη δημιουργία και εκτέλεση της δοκιμής.
- Ανάπτυξη κωδικού στο UAT: Διαμορφώστε CircleCI για να αναπτύξετε τον κωδικό σας στον διακομιστή AWS UAT.
- Ανάπτυξη στην παραγωγή: Πρέπει να επαναχρησιμοποιήσετε βήματα συνεχούς ενοποίησης για την ανάπτυξη κώδικα στο UAT.
CI/CD pipeline καλυτερα Πρακτικές
Ακολουθούν οι βέλτιστες πρακτικές του αγωγού CI/CD:
- Επομένως, γράψτε την τρέχουσα διαδικασία ανάπτυξης, μπορείτε να γνωρίζετε τις διαδικασίες που απαιτούν αλλαγή και μια που μπορεί εύκολα να αυτοματοποιηθεί.
- Ξεκινήστε με μια μικρή απόδειξη του έργου πριν προχωρήσετε και ολοκληρώστε ολόκληρη τη διαδικασία ανάπτυξης αμέσως.
- Ρυθμίστε έναν αγωγό με περισσότερα από ένα στάδια στα οποία εκτελούνται πρώτα γρήγορες θεμελιώδεις δοκιμές.
- Ξεκινήστε κάθε ροή εργασίας από το ίδιο, καθαρό και απομονωμένο περιβάλλον.
- Εκτελέστε εργαλεία ανοιχτού κώδικα που καλύπτουν τα πάντα, από το στυλ κώδικα έως τη σάρωση ασφαλείας.
- Ρυθμίστε έναν καλύτερο κόμβο κώδικα για να ελέγχετε συνεχώς την ποιότητα του κωδικού σας εκτελώντας το τυπικό σύνολο δοκιμών σε κάθε κλάδο.
- Ο ομότιμος κώδικας εξετάζει κάθε αίτημα έλξης για να λύσει ένα πρόβλημα με συνεργατικό τρόπο.
- Πρέπει να ορίσετε μετρήσεις επιτυχίας πριν ξεκινήσετε τη μετάβαση στην αυτοματοποίηση CD. Αυτό θα σας βοηθήσει να αναλύετε με συνέπεια το λογισμικό σας, αναπτύσσοντας την πρόοδο και τη βελτίωση όπου χρειάζεται.
Πλεονεκτήματα των αγωγών CI/CD
Ακολουθούν τα πλεονεκτήματα/πλεονεκτήματα του CI/CD Pipeline:
- Οι κατασκευές και οι δοκιμές μπορούν εύκολα να εκτελεστούν χειροκίνητα.
- Μπορεί να βελτιώσει τη συνέπεια και την ποιότητα του κώδικα.
- Βελτιώνει την ευελιξία και έχει τη δυνατότητα αποστολής νέων λειτουργιών.
- Ο αγωγός CI/CD μπορεί να εξορθολογίσει την επικοινωνία.
- Μπορεί να αυτοματοποιήσει τη διαδικασία παράδοσης λογισμικού.
- Σας βοηθά να επιτύχετε ταχύτερα σχόλια πελατών.
- Η διοχέτευση CI/CD σάς βοηθά να αυξήσετε την προβολή του προϊόντος σας.
- Σας δίνει τη δυνατότητα να αφαιρέσετε χειροκίνητα σφάλματα.
- Μειώνει το κόστος και την εργασία.
- Οι αγωγοί CI/CD μπορούν να κάνουν τον κύκλο ζωής ανάπτυξης λογισμικού πιο γρήγορο.
- Διαθέτει αυτοματοποιημένη ανάπτυξη αγωγών.
- Μια διοχέτευση CD παρέχει έναν γρήγορο βρόχο ανατροφοδότησης που ξεκινά από τον προγραμματιστή στον πελάτη.
- Βελτιώνει την επικοινωνία μεταξύ των εργαζομένων του οργανισμού.
- Επιτρέπει στους προγραμματιστές να γνωρίζουν ποιες αλλαγές στο build μπορούν να στραφούν στη μεσιτεία και να τις αποφύγουν στο μέλλον.
- Οι αυτοματοποιημένες δοκιμές, μαζί με λίγες μη αυτόματες δοκιμές, βοηθούν στην επίλυση τυχόν προβλημάτων που μπορεί να προκύψουν.
Σημαντικά εργαλεία CI/CD
Εδώ είναι τα σημαντικά εργαλεία CI/CD:
1) Τζένκινς
Ο Jenkins είναι ένας διακομιστής συνεχούς ενοποίησης ανοιχτού κώδικα που βοηθά στην επίτευξη της διαδικασίας συνεχούς ενοποίησης (και όχι μόνο) με αυτοματοποιημένο τρόπο. Το Jenkins είναι δωρεάν και είναι εξ ολοκλήρου γραμμένο Java. Το Jenkins είναι μια ευρέως χρησιμοποιούμενη εφαρμογή σε όλο τον κόσμο που έχει περίπου 300 εγκαταστάσεις και αυξάνεται μέρα με τη μέρα.
Χαρακτηριστικά:
- Ο Jenkin θα δημιουργήσει και θα δοκιμάσει τον κώδικα πολλές φορές κατά τη διάρκεια της ημέρας.
- Αυτοματοποιημένη διαδικασία κατασκευής και δοκιμής, εξοικονομώντας χρόνο και μειώνοντας τα ελαττώματα.
- Ο κώδικας αναπτύσσεται μετά από κάθε επιτυχημένη κατασκευή και δοκιμή.
- Ο κύκλος ανάπτυξης είναι γρήγορος.
Σύνδεσμος: https://www.jenkins.io/download/
2) Bamboo
Bamboo είναι ένας διακομιστής δημιουργίας συνεχούς ενοποίησης που εκτελεί – αυτόματη δημιουργία, δοκιμή και κυκλοφορία σε ένα μόνο μέρος. Λειτουργεί απρόσκοπτα με το λογισμικό JIRA και το Bitbucket.
Χαρακτηριστικά:
- Εκτελέστε δοκιμές παράλληλων παρτίδων
- Εγκαθιστώ Bamboo είναι αρκετά απλό
- Η λειτουργία αδειών ανά περιβάλλον επιτρέπει στους προγραμματιστές και το QA να αναπτύσσονται στα περιβάλλοντά τους
- Ενσωματωμένη διακλάδωση και ροές εργασίας Git. Συγχωνεύει αυτόματα τους κλάδους.
Σύνδεσμος: https://www.atlassian.com/software/bamboo
3) CircleCi
CircleCi είναι ένα ευέλικτο εργαλείο CI που εκτελείται σε οποιοδήποτε περιβάλλον όπως μια εφαρμογή για κινητές συσκευές πολλαπλών πλατφορμών, Python Διακομιστής API ή σύμπλεγμα Docker. Αυτό το εργαλείο μειώνει τα σφάλματα και βελτιώνει την ποιότητα της εφαρμογής.
Χαρακτηριστικά:
- Επιτρέπει την επιλογή Build Environment
- Υποστηρίζει πολλές γλώσσες, συμπεριλαμβανομένων C++, JavaScript, NET, PHP, Pythonκαι η Ρούμπι
- Η υποστήριξη για το Docker σάς επιτρέπει να διαμορφώσετε ένα προσαρμοσμένο περιβάλλον.
- Αυτόματη ακύρωση οποιωνδήποτε εκδόσεων σε ουρά ή εκτελούνται όταν ενεργοποιείται μια νεότερη έκδοση.
Σύνδεσμος: https://circleci.com/
Γιατί ο αγωγός CI/CD έχει σημασία για τους ηγέτες πληροφορικής;
- Ο αγωγός CI/CD μπορεί να βελτιώσει την αξιοπιστία.
- Κάνει την ομάδα IT πιο ελκυστική στους προγραμματιστές.
- Η διοχέτευση CI/CD βοηθά τους ηγέτες IT, να αντλούν κώδικα από τον έλεγχο έκδοσης και να εκτελούν την κατασκευή λογισμικού.
- Βοηθά στη μετακίνηση κώδικα σε στοχευόμενο υπολογιστικό περιβάλλον.
- Επιτρέπει στους ηγέτες έργων να διαχειρίζονται εύκολα μεταβλητές περιβάλλοντος και να διαμορφώνουν τις παραμέτρους για το περιβάλλον στόχο.
- Οι διαχειριστές έργων μπορούν να δημοσιεύουν στοιχεία εφαρμογής push σε υπηρεσίες όπως υπηρεσίες web, υπηρεσίες βάσης δεδομένων, υπηρεσίες API κ.λπ.
- Παροχή δεδομένων καταγραφής και ειδοποιήσεων σχετικά με την κατάσταση παράδοσης.
- Επιτρέπει στους προγραμματιστές να επαληθεύουν τις αλλαγές του κώδικα πριν προχωρήσουν, μειώνοντας τις πιθανότητες ελαττωμάτων να καταλήξουν στην παραγωγή.
Ci/CD Pipeline KPI
- Χρόνος κύκλου ή ανάπτυξης: Ο χρόνος κύκλου είναι ο χρόνος που απαιτείται για τη μετάβαση από το στάδιο κατασκευής στην παραγωγή. Μπορείτε να λάβετε τον μέσο χρόνο κύκλου ζωής μετρώντας τις φάσεις της διαδικασίας ανάπτυξης. Αυτή η μέτρηση θα δώσει πληροφορίες για τα σημεία συμφόρησης στη διαδικασία σας και τη συνολική ταχύτητα του χρόνου ανάπτυξης.
- Συχνότητα ανάπτυξης: Η συχνότητα ανάπτυξης σάς επιτρέπει να αναλύετε τα σημεία συμφόρησης που βρίσκετε κατά την αυτοματοποίηση. Οι πιο συχνές μικρότερες απελευθερώσεις μειώνουν τον κίνδυνο ελαττωμάτων και τα διορθώνουν όταν εντοπιστούν. Μια τέτοια μέτρηση είναι ένα συνολικό μέτρο της αποτελεσματικότητας της ομάδας σας.
- Αλλαγή χρόνου παράδοσης: Μετρά το χρόνο έναρξης της φάσης ανάπτυξης έως την ανάπτυξη. Αυτή η μέτρηση είναι ένας δείκτης της όλης διαδικασίας ανάπτυξης και του πόσο καλά συνεργάζεται η ομάδα.
- Αλλαγή ποσοστού αποτυχίας: Επικεντρώνεται στον αριθμό των φορών που η ανάπτυξη πετυχαίνει έναντι του αριθμού των φορών που αποτυγχάνει.
- MTTR εναντίον MTTF: MTTR (Μέσος χρόνος για την ανάκτηση) είναι ο χρόνος που απαιτείται από την ομάδα σας για να ανακάμψει από την αποτυχία. Το MTTF (Μέσος χρόνος έως την αποτυχία) μετρά το χρονικό διάστημα μεταξύ επιδιορθώσεων και διακοπών λειτουργίας. Αυτές οι μετρήσεις αντικατοπτρίζουν την ικανότητα της ομάδας να ανταποκρίνεται και να διορθώνει προβλήματα.
Περίληψη
- Μια σωλήνωση CI/CD αυτοματοποιεί τη διαδικασία παράδοσης λογισμικού.
- Ο αγωγός CI/CD εισάγει αυτοματισμό και συνεχή παρακολούθηση καθ' όλη τη διάρκεια του κύκλου ζωής ενός προϊόντος λογισμικού.
- Η συνεχής ενοποίηση είναι μια μέθοδος ανάπτυξης λογισμικού όπου τα μέλη της ομάδας μπορούν να ενσωματώσουν την εργασία τους τουλάχιστον μία φορά την ημέρα.
- Η συνεχής παράδοση είναι μια μέθοδος μηχανικής λογισμικού κατά την οποία μια ομάδα αναπτύσσει προϊόντα λογισμικού σε σύντομο κύκλο.
- Η συνεχής ανάπτυξη είναι μια διαδικασία μηχανικής λογισμικού κατά την οποία οι λειτουργίες του προϊόντος παρέχονται χρησιμοποιώντας αυτόματη ανάπτυξη.
- Υπάρχουν τέσσερα στάδια μιας διοχέτευσης CI/CD 1) Στάδιο πηγής, 2) Στάδιο κατασκευής, 3) Στάδιο δοκιμής, 4) Στάδιο ανάπτυξης.
- σημαντικό Εργαλεία CI/CD είναι οι Jenkins, Bambo και Circle CI.
- Ο αγωγός CI/CD μπορεί να βελτιώσει την αξιοπιστία.
- Η διοχέτευση CI/CD κάνει την ομάδα IT πιο ελκυστική για τους προγραμματιστές.
- Ο χρόνος κύκλου είναι ο χρόνος που απαιτείται για τη μετάβαση από το στάδιο κατασκευής στην παραγωγή.
- Η συχνότητα ανάπτυξης σάς επιτρέπει να αναλύετε τα σημεία συμφόρησης που βρίσκετε κατά την αυτοματοποίηση.
- Το Change Lead Time μετρά τον χρόνο έναρξης της φάσης ανάπτυξης έως την ανάπτυξη.
- Το Ποσοστό Αλλαγής Αποτυχίας εστιάζει στον αριθμό των φορών που η ανάπτυξη επιτυγχάνει έναντι του αριθμού των φορών που αποτυγχάνει.
- MTTR (Μέσος χρόνος για την ανάκτηση) είναι ο χρόνος που απαιτείται από την ομάδα σας για να ανακάμψει από την αποτυχία.
- Το MTTF (Μέσος χρόνος έως την αποτυχία) μετρά το χρονικό διάστημα μεταξύ επιδιορθώσεων και διακοπών λειτουργίας.