Τι είναι το CI/CD; Συνεχής ολοκλήρωση και συνεχής παράδοση

Τι είναι η Συνεχής Ενοποίηση (CI);

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

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

Τι είναι η Συνεχής Παράδοση (CD);

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

Ποια είναι η διαφορά μεταξύ CI και CD;

CI εναντίον CD: Η συνεχής ολοκλήρωση (CI) είναι μια προσέγγιση δοκιμής κάθε αλλαγής στη βάση κώδικα αυτόματα, ενώ η Συνεχής Παράδοση (CD) είναι μια προσέγγιση για τη λήψη αλλαγών νέων χαρακτηριστικών, διαμόρφωσης και διορθώσεων σφαλμάτων.

Ανάπτυξη χωρίς CI εναντίον Ανάπτυξης με CI

Ακολουθούν οι βασικές διαφορές μεταξύ της ανάπτυξης με χρήση CI ή χωρίς CI:

Ανάπτυξη χωρίς CI Ανάπτυξη με CI
Πολλά σφάλματα Λιγότερα σφάλματα
Σπάνιες δεσμεύσεις Τακτικές δεσμεύσεις
Σπάνιες και αργές απελευθερώσεις Τακτικές εκδόσεις εργασίας
Δύσκολη ενσωμάτωση Εύκολη και αποτελεσματική ενσωμάτωση
Οι δοκιμές γίνονται αργά Οι δοκιμές συνεχούς ενσωμάτωσης γίνονται νωρίς και συχνά.
Το πρόβλημα που τέθηκε είναι πιο δύσκολο να διορθωθεί Βρείτε και διορθώστε προβλήματα πιο γρήγορα και αποτελεσματικά.
Κακή ορατότητα του έργου Καλύτερη προβολή του έργου

Διαφορά μεταξύ Compilation και Continuous Integration

Δραστηριότητες στη Συνεχή Ένταξη
Δραστηριότητες στη Συνεχή Ένταξη

Ενώ η μεταγλώττιση μεταγλωττίζει μόνο έναν κώδικα, η CI κάνει τις ακόλουθες δραστηριότητες

Ενσωμάτωση DB

  • Βεβαιωθείτε ότι το DB και ο κώδικας είναι συγχρονισμένοι
  • Αυτοματοποιημένη δημιουργία DB και δεδομένων δοκιμής.

Επιθεώρηση κώδικα

  • Εξασφαλίζει μια υγιή βάση κώδικα
  • Εντοπίζει έγκαιρα προβλήματα και εφαρμόζει βέλτιστες πρακτικές

Αυτοματοποιημένη ανάπτυξη

  • Σας επιτρέπει να κυκλοφορήσετε το προϊόν ανά πάσα στιγμή
  • Διαρκώς απομακρυνόμενη κατάσταση και λειτουργεί σε οποιοδήποτε μηχάνημα

Δημιουργία εγγράφων

  • Βεβαιωθείτε ότι η τεκμηρίωση είναι ενημερωμένη
  • Αφαιρεί την εγγραφή από τον προγραμματιστή
  • Παράγει αναφορές κατασκευής και μετρήσεις

Συλλογή

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

Πότε χτίζω;

  • Σε κάθε check-in
  • Κάθε φορά που αλλάζει μια εξάρτηση

Ποια βήματα είναι στη συνεχή ολοκλήρωση;

Διαδικασία CI
διαδικασία CI
  • Στην ιδανική περίπτωση, η κατασκευή θα πρέπει να προέρχεται από τη γραμμή εντολών και δεν θα πρέπει να εξαρτάται από ένα ολοκληρωμένο περιβάλλον ανάπτυξης (IDE).
  • Η κατασκευή θα πρέπει να γίνεται συνεχώς χρησιμοποιώντας έναν αποκλειστικό διακομιστή Cl, όχι μια εργασία cron.
  • Το ενσωματωμένο CI θα πρέπει να ενεργοποιείται σε κάθε check-in και όχι μόνο τα μεσάνυχτα
  • Η κατασκευή θα πρέπει να παρέχει άμεση ανατροφοδότηση και να μην απαιτεί προσπάθεια προγραμματιστή
  • Προσδιορίστε βασικές μετρήσεις και παρακολουθήστε τις οπτικά. Το πιο σημαντικό, ενεργήστε σε αυτά αμέσως

Τι χρειάζεστε για τη διεξαγωγή της διαδικασίας CI;

Διεξαγωγή διαδικασίας CI

Εδώ, είναι τα βασικά στοιχεία που χρειάζεστε για να εκτελέσετε ολόκληρη τη διαδικασία CI:

  • Σύστημα ελέγχου έκδοσης (VCS): Προσφέρει μια αξιόπιστη μέθοδο συγκέντρωσης και διατήρησης των αλλαγών που έγιναν στο έργο σας με την πάροδο του χρόνου.
  • Εικονική μηχανή: Θα πρέπει να έχετε έναν εφεδρικό διακομιστή ή τουλάχιστον έναν εικονική μηχανή για να φτιάξετε το σύστημά σας.
  • Φιλοξενούμενες λύσεις εργαλείου CI: Για να αποφύγετε διακομιστές ή εικονικές μηχανές, θα πρέπει να αναζητήσετε λύσεις εργαλείων φιλοξενίας CI. Αυτό το εργαλείο βοηθά στη διατήρηση της όλης διαδικασίας και προσφέρει ευκολότερη επεκτασιμότητα.
  • Εργαλεία: Εάν επιλέξετε μια αυτο-φιλοξενούμενη παραλλαγή, θα χρειαστεί να εγκαταστήσετε μία από τις πολλές Εργαλεία CI όπως ο Τζένκινς, TeamCity, Bamboo, GitLab, κ.λπ.

Πώς λειτουργεί η συνεχής ολοκλήρωση;

Σίγουρα γνωρίζετε το παλιό τηλέφωνο Nokia. Η Nokia συνήθιζε να εφαρμόζει μια διαδικασία που ονομάζεται nightly build. Μετά από πολλαπλές δεσμεύσεις από διαφορετικούς προγραμματιστές κατά τη διάρκεια της ημέρας, το λογισμικό κατασκευαζόταν κάθε βράδυ. Δεδομένου ότι το λογισμικό κατασκευαζόταν μόνο μία φορά την ημέρα, είναι πολύ δύσκολο να απομονώσετε, να εντοπίσετε και να διορθώσετε τα σφάλματα σε μια μεγάλη βάση κώδικα.

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

Παράδειγμα Συνεχούς Ενσωμάτωσης
Παράδειγμα Συνεχούς Ενσωμάτωσης

Χαρακτηριστικά του CI

Ακολουθούν σημαντικά χαρακτηριστικά και πλεονεκτήματα της Συνεχούς Ενοποίησης:

  • Σας επιτρέπει να διατηρείτε μόνο ένα αποθετήριο πηγής
  • Μπορείτε να δοκιμάσετε τον κλώνο του περιβάλλοντος CI παραγωγής
  • Το δομημένο περιβάλλον πρέπει να είναι κοντά στο περιβάλλον παραγωγής.
  • Ένα από τα πλεονεκτήματα της συνεχούς ολοκλήρωσης είναι η σταθερή διαθεσιμότητα μιας τρέχουσας κατασκευής
  • Η πλήρης διαδικασία κατασκευής και δοκιμής και ανάπτυξης θα πρέπει να είναι ορατή σε όλους τους κατόχους στοίβας.

Γιατί να χρησιμοποιήσετε το CI;

Ακολουθούν σημαντικοί λόγοι για τη χρήση της Συνεχούς Ενοποίησης:

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

καλυτερα πρακτικες χρήσης CI Systems

Ακολουθούν ορισμένες σημαντικές βέλτιστες πρακτικές κατά την εφαρμογή

  • Δεσμεύστε νωρίς και δεσμεύστε Συχνά ποτέ μην δεσμεύσετε κατεστραμμένο κώδικα
  • Διορθώστε αμέσως τις αστοχίες κατασκευής
  • Δράσε σε μετρήσεις
  • Ενσωματώστε κάθε περιβάλλον στόχο Δημιουργήστε τεχνουργήματα από κάθε κατασκευή
  • Η κατασκευή του λογισμικού πρέπει να γίνει με τρόπο ώστε να μπορεί να αυτοματοποιηθεί
  • Μην εξαρτάστε από ένα IDE
  • Κατασκευάστε και δοκιμάστε τα πάντα όταν αλλάζουν
  • Το σχήμα της βάσης δεδομένων μετράει ως τα πάντα
  • Σας βοηθά να μάθετε βασικές μετρήσεις και να τις παρακολουθείτε οπτικά
  • Check-in συχνά και νωρίς
  • Ισχυρότερος έλεγχος πηγαίου κώδικα
  • Η συνεχής ενοποίηση εκτελεί δοκιμές μονάδας κάθε φορά που δεσμεύετε κώδικα
  • Αυτοματοποιήστε την κατασκευή και δοκιμάστε όλους
  • Διατηρήστε τη γρήγορη κατασκευή με την αυτοματοποιημένη ανάπτυξη

Μειονεκτήματα του CI

Ακολουθούν τα μειονεκτήματα/μειονεκτήματα της διαδικασίας συνεχούς ενοποίησης:

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

Εργαλεία για τη διαδικασία CI

Ακολουθούν ορισμένα πιο απαραίτητα εργαλεία CI/CD:

Jenkins

Jenkins

Jenkins είναι ένα λογισμικό συνεχούς ενοποίησης ανοιχτού κώδικα. Είναι γραμμένο χρησιμοποιώντας το Java γλώσσα προγραμματισμού. Διευκολύνει τη δοκιμή σε πραγματικό χρόνο και την αναφορά μεμονωμένες αλλαγές σε μια πιο μαζική βάση κωδικών. Αυτό το λογισμικό βοηθά τους προγραμματιστές να βρίσκουν και να επιλύουν γρήγορα ελαττώματα στη βάση κωδικών τους και να αυτοματοποιούν τη δοκιμή των εκδόσεων τους.

Bamboo

Bamboo

Bamboo είναι ένας διακομιστής δημιουργίας συνεχούς ενοποίησης που εκτελεί – αυτόματη δημιουργία, δοκιμή και κυκλοφορία σε ένα μόνο μέρος. Λειτουργεί απρόσκοπτα με το λογισμικό JIRA και το Bitbucket. Bamboo υποστηρίζει πολλές γλώσσες και τεχνολογίες όπως CodeDeply, Docker, Git, SVN, Mercurial, AWS και Amazon Κάδοι S3.

TeamCity

TeamCity

TeamCity είναι ένας διακομιστής συνεχούς ενοποίησης που υποστηρίζει πολλές ισχυρές δυνατότητες. Διατηρεί έναν διακομιστή CI υγιή και σταθερό ακόμα και όταν δεν εκτελούνται εκδόσεις. Παρέχει καλύτερη ποιότητα κώδικα για οποιοδήποτε έργο

Σύνοψη

  • Ορισμός συνεχούς ενοποίησης: Η συνεχής ενοποίηση είναι μια μέθοδος ανάπτυξης λογισμικού όπου τα μέλη της ομάδας μπορούν να ενσωματώσουν την εργασία τους τουλάχιστον μία φορά την ημέρα
  • CI/CD που σημαίνει συνδυασμός Συνεχούς Ενοποίησης και Συνεχούς Παράδοσης ή Συνεχούς Ανάπτυξης.
  • Η ανάπτυξη χωρίς CI δημιουργεί πολλά σφάλματα, ενώ η ανάπτυξη με CI προσφέρει λιγότερα σφάλματα
  • Σημαντικές δραστηριότητες της Συνεχούς Ενοποίησης είναι 1) Ενοποίηση DB, 2) Επιθεώρηση κώδικα, 3) Αυτοματοποιημένη ανάπτυξη, δημιουργία εγγράφων και συλλογή.
  • Η κατασκευή θα πρέπει να γίνεται συνεχώς χρησιμοποιώντας έναν αποκλειστικό διακομιστή Cl, όχι μια εργασία cron.
  • Σημαντικά στοιχεία του CI είναι 1) Σύστημα ελέγχου έκδοσης 2) Εικονική μηχανή 3) Λύσεις εργαλείων κεντρικού υπολογιστή 4) Εργαλεία
  • Το σύστημα συνεχούς ενοποίησης σάς επιτρέπει να διατηρείτε μόνο ένα αποθετήριο πηγής
  • Η διαδικασία CI/CD σάς βοηθά να δημιουργήσετε λογισμικό καλύτερης ποιότητας
  • Οι πιο σημαντικές βέλτιστες πρακτικές του Azure Η διαδικασία συνεχούς ολοκλήρωσης είναι να δεσμεύσετε νωρίς και να δεσμεύσετε συχνά ποτέ να δεσμεύσετε κατεστραμμένο κώδικα
  • Το κύριο μειονέκτημα του Σωλήνας CI/CD Η διαδικασία είναι ότι η καλά ανεπτυγμένη δοκιμαστική σουίτα απαιτούσε πολλούς πόρους για τον διακομιστή Cl
  • Τζένκινς, Bambook, και το Team City είναι μερικά χρήσιμα AWS Continuous Εργαλεία ολοκλήρωσης.