Τι είναι ο Τζένκινς; Γιατί να χρησιμοποιήσετε το εργαλείο συνεχούς ενοποίησης (CI);
Τι είναι ο Τζένκινς;
Jenkins είναι ένας διακομιστής συνεχούς ενοποίησης ανοιχτού κώδικα γραμμένος σε Java για την ενορχήστρωση μιας αλυσίδας ενεργειών για την επίτευξη της διαδικασίας Συνεχούς Ενσωμάτωσης με αυτοματοποιημένο τρόπο. Το Jenkins υποστηρίζει τον πλήρη κύκλο ζωής ανάπτυξης λογισμικού από την κατασκευή, τη δοκιμή, την τεκμηρίωση του λογισμικού, την ανάπτυξη και άλλα στάδια του κύκλου ζωής ανάπτυξης λογισμικού.
Το Jenkins είναι μια ευρέως χρησιμοποιούμενη εφαρμογή σε όλο τον κόσμο που έχει περίπου 300 εγκαταστάσεις και αυξάνεται μέρα με τη μέρα. Χρησιμοποιώντας το Jenkins, οι εταιρείες λογισμικού μπορούν να επιταχύνουν τη διαδικασία ανάπτυξης λογισμικού, καθώς η Jenkins μπορεί να αυτοματοποιήσει την κατασκευή και τη δοκιμή με γρήγορο ρυθμό.
Είναι μια εφαρμογή που βασίζεται σε διακομιστή και απαιτεί έναν διακομιστή ιστού όπως ο Apache Tomcat. Ο λόγος που το λογισμικό Jenkins έγινε τόσο δημοφιλές είναι ότι παρακολουθεί επαναλαμβανόμενες εργασίες που προκύπτουν κατά την ανάπτυξη ενός έργου. Για παράδειγμα, εάν η ομάδα σας αναπτύσσει ένα έργο, ο Jenkins θα δοκιμάζει συνεχώς τις κατασκευές του έργου σας και θα σας δείχνει τα λάθη στα αρχικά στάδια της ανάπτυξής σας.
Τι είναι η Συνεχής Ένταξη;
Συνεχής ολοκλήρωση είναι μια διαδικασία ενσωμάτωσης αλλαγών κώδικα από πολλούς προγραμματιστές σε ένα μόνο έργο πολλές φορές. Το λογισμικό ελέγχεται αμέσως μετά από μια δέσμευση κώδικα. Με κάθε δέσμευση κώδικα, δημιουργείται και δοκιμάζεται κώδικας. Εάν η δοκιμή περάσει, η έκδοση ελέγχεται για ανάπτυξη. Εάν η ανάπτυξη είναι επιτυχής, ο κώδικας προωθείται στην παραγωγή.
Αυτή η δέσμευση, η κατασκευή, η δοκιμή και η ανάπτυξη είναι μια συνεχής διαδικασία και ως εκ τούτου το όνομα συνεχής ενσωμάτωση/ανάπτυξη.
Πώς λειτουργεί το Jenkins;
Το Jenkins είναι μια εφαρμογή που βασίζεται σε διακομιστή και απαιτεί έναν διακομιστή ιστού όπως ο Apache Tomcat για να εκτελείται σε διάφορες πλατφόρμες όπως Windows, Το Linux, macOS, Unix, κ.λπ. Για να χρησιμοποιήσετε το Jenkins, πρέπει να δημιουργήσετε αγωγούς που είναι μια σειρά βημάτων που θα κάνει ένας διακομιστής Jenkins. Το Jenkins Continuous Integration Pipeline είναι ένα ισχυρό όργανο που αποτελείται από ένα σύνολο εργαλείων που έχουν σχεδιαστεί για να οικοδεσπότης, μηνυτής, συντάσσω και δοκιμή κώδικας ή αλλαγές κώδικα, όπως:
- Διακομιστής συνεχούς ενοποίησης (Τζένκινς, Bamboo, CruiseControl, TeamCityκαι άλλα)
- Εργαλείο ελέγχου πηγής (π.χ. CVS, SVN, GIT, Mercurial, Perforce, ClearCase και άλλα)
- Εργαλείο κατασκευής (Make, ANT, Maven, Ivy, Gradleκαι άλλα)
- Πλαίσιο δοκιμών αυτοματισμού (Selenium, Appium, TestComplete, UFT και άλλα)
Ιστορία Τζένκιν
- Kohsuke Kawaguchi, α Java Ο προγραμματιστής, που εργαζόταν στη SUN Microsystems, είχε βαρεθεί να δημιουργεί τον κώδικα και να διορθώνει επαναλαμβανόμενα σφάλματα. Το 2004, δημιούργησε έναν διακομιστή αυτοματισμού που ονομάζεται Hudson που αυτοματοποιεί τη δημιουργία και τη δοκιμή εργασιών.
- Σε 2011, Oracle που ήταν ιδιοκτήτης της Sun Microsystems είχε μια διαμάχη με την κοινότητα ανοιχτού κώδικα της Hudson, έτσι διχάλιασαν τη Hudson και την μετονόμασαν σε Jenkins.
- Τόσο ο Hudson όσο και ο Jenkins συνέχισαν να λειτουργούν ανεξάρτητα. Αλλά σε σύντομο χρονικό διάστημα, ο Jenkins απέκτησε πολλά έργα και συνεισφέροντες, ενώ ο Hudson παρέμεινε με μόνο 32 έργα. Με τον καιρό, ο Τζένκινς έγινε πιο δημοφιλής και ο Χάντσον δεν διατηρείται πια.
Γιατί να χρησιμοποιήσετε τη Συνεχή Ενσωμάτωση με το Jenkins;
Μερικοί άνθρωποι μπορεί να πιστεύουν ότι ο παλιομοδίτικος τρόπος ανάπτυξης του λογισμικού είναι ο καλύτερος τρόπος. Ας κατανοήσουμε τα πλεονεκτήματα του CI με τον Jenkins με το ακόλουθο παράδειγμα
Ας φανταστούμε, ότι υπάρχουν περίπου 10 προγραμματιστές που εργάζονται σε ένα κοινόχρηστο αποθετήριο. Ορισμένοι προγραμματιστές ολοκληρώνουν την εργασία τους σε 25 ημέρες, ενώ άλλοι χρειάζονται 30 ημέρες για να ολοκληρωθούν.
Πριν από τον Τζένκινς | Μετά τον Τζένκινς |
---|---|
Μόλις όλοι οι Προγραμματιστές είχαν ολοκληρώσει τις εργασίες κωδικοποίησης που τους είχαν ανατεθεί, συνήθιζαν να δεσμεύουν τον κώδικά τους ταυτόχρονα. Later, Το Build ελέγχεται και αναπτύσσεται.
Δημιουργήθηκε η δέσμευση κώδικα και ο κύκλος δοκιμών ήταν πολύ σπάνιος και μια μεμονωμένη κατασκευή έγινε μετά από πολλές ημέρες. |
Ο κώδικας δημιουργείται και δοκιμάζεται μόλις ο Προγραμματιστής δεσμεύσει τον κώδικα. Ο Jenkin θα δημιουργήσει και θα δοκιμάσει τον κώδικα πολλές φορές κατά τη διάρκεια της ημέρας
Εάν η κατασκευή είναι επιτυχής, τότε ο Jenkins θα αναπτύξει την πηγή στον δοκιμαστικό διακομιστή και θα ειδοποιήσει την ομάδα ανάπτυξης. Εάν η κατασκευή αποτύχει, τότε ο Jenkins θα ειδοποιήσει τα σφάλματα στην ομάδα προγραμματιστών. |
Δεδομένου ότι ο κώδικας δημιουργήθηκε ταυτόχρονα, ορισμένοι προγραμματιστές θα πρέπει να περιμένουν έως ότου οι άλλοι προγραμματιστές ολοκληρώσουν την κωδικοποίηση για να ελέγξουν την κατασκευή τους | Ο κώδικας δημιουργείται αμέσως μετά τη δέσμευση οποιουδήποτε από τους Προγραμματιστές. |
Δεν είναι εύκολη υπόθεση η απομόνωση, ο εντοπισμός και η διόρθωση σφαλμάτων για πολλαπλές δεσμεύσεις. | Δεδομένου ότι ο κώδικας δημιουργείται μετά από κάθε δέσμευση ενός μεμονωμένου προγραμματιστή, είναι εύκολο να εντοπιστεί ποιος κώδικας προκάλεσε την αποτυχία του ενσωματωμένου |
Δημιουργία κώδικα και διαδικασία δοκιμής είναι εξ ολοκλήρου χειροκίνητα, επομένως υπάρχουν πολλές πιθανότητες αποτυχίας. | Αυτοματοποιημένη διαδικασία κατασκευής και δοκιμής εξοικονομώντας χρόνο και μειώνοντας τα ελαττώματα. |
Ο κώδικας αναπτύσσεται μόλις διορθωθούν και δοκιμαστούν όλα τα σφάλματα. | Ο κώδικας αναπτύσσεται μετά από κάθε επιτυχημένη κατασκευή και δοκιμή. |
Ο κύκλος ανάπτυξης είναι αργός | Ο κύκλος ανάπτυξης είναι γρήγορος. Οι νέες λειτουργίες είναι πιο εύκολα διαθέσιμες στους χρήστες. Αυξάνει τα κέρδη. |
Μελέτη περίπτωσης Συνεχούς Ενσωμάτωσης σε πραγματικό κόσμο
Είμαι βέβαιος ότι όλοι γνωρίζετε το παλιό τηλέφωνο Nokia. Η Nokia συνήθιζε να εφαρμόζει μια διαδικασία που ονομάζεται nightly build. Μετά από πολλαπλές δεσμεύσεις από διαφορετικούς προγραμματιστές κατά τη διάρκεια της ημέρας, το λογισμικό κατασκευαζόταν κάθε βράδυ. Δεδομένου ότι το λογισμικό κατασκευαζόταν μόνο μία φορά την ημέρα, είναι πολύ δύσκολο να απομονώσετε, να εντοπίσετε και να διορθώσετε τα σφάλματα σε μια μεγάλη βάση κώδικα.
Later, υιοθέτησαν την προσέγγιση Συνεχούς Ενσωμάτωσης. Το λογισμικό κατασκευάστηκε και δοκιμάστηκε μόλις ένας προγραμματιστής δέσμευσε κώδικα. Εάν εντοπιστεί κάποιο σφάλμα, ο αντίστοιχος προγραμματιστής μπορεί να διορθώσει γρήγορα το ελάττωμα.
Jenkins Plugins
Από προεπιλογή, το Jenkins διαθέτει ένα περιορισμένο σύνολο λειτουργιών. Εάν θέλετε να ενσωματώσετε την εγκατάσταση του Jenkins με εργαλεία ελέγχου έκδοσης όπως το Git, τότε πρέπει να εγκαταστήσετε πρόσθετα που σχετίζονται με το Git. Στην πραγματικότητα, για ενσωμάτωση με εργαλεία όπως το Maven, Amazon EC2, πρέπει να εγκαταστήσετε αντίστοιχα πρόσθετα στο Jenkins σας.
Πλεονεκτήματα της χρήσης Jenkins
- Το Jenkins διοικείται από την κοινότητα που είναι πολύ ανοιχτή. Κάθε μήνα, πραγματοποιούν δημόσιες συναντήσεις και λαμβάνουν πληροφορίες από το κοινό για την ανάπτυξη του έργου Jenkins.
- Μέχρι στιγμής έχουν κλείσει περίπου 280 εισιτήρια και το έργο δημοσιεύει σταθερή κυκλοφορία κάθε τρεις μήνες.
- Καθώς η τεχνολογία αναπτύσσεται, τόσο μεγαλώνει και ο Τζένκινς. Μέχρι στιγμής η Jenkins έχει περίπου 320 προσθήκες δημοσιευμένες στη βάση δεδομένων προσθηκών της. Με τα πρόσθετα, το Jenkins γίνεται ακόμα πιο ισχυρό και πλούσιο σε χαρακτηριστικά.
- Το εργαλείο Jenkins υποστηρίζει επίσης αρχιτεκτονική που βασίζεται σε σύννεφο, ώστε να μπορείτε να αναπτύξετε το Jenkins σε πλατφόρμες που βασίζονται σε σύννεφο.
- Ο λόγος για τον οποίο το Jenkins έγινε δημοφιλές είναι ότι δημιουργήθηκε από έναν προγραμματιστή για προγραμματιστές.
Μειονεκτήματα της χρήσης Jenkins
Αν και το Jenkins είναι ένα πολύ ισχυρό εργαλείο, έχει τα ελαττώματα του.
- Η διεπαφή του είναι ξεπερασμένη και δεν είναι φιλική προς το χρήστη σε σύγκριση με τις τρέχουσες τάσεις διεπαφής χρήστη.
- Αν και το Jenkins αγαπιέται από πολλούς προγραμματιστές, δεν είναι τόσο εύκολο να το συντηρήσετε επειδή το Jenkins εκτελείται σε διακομιστή και απαιτεί ορισμένες δεξιότητες ως διαχειριστής διακομιστή για να παρακολουθεί τη δραστηριότητά του.
- Ένας από τους λόγους για τους οποίους πολλοί άνθρωποι δεν εφαρμόζουν το Jenkins οφείλεται στη δυσκολία εγκατάστασης και διαμόρφωσης του Jenkins.
- Οι συνεχείς ενσωματώσεις διακόπτουν τακτικά λόγω κάποιων μικρών αλλαγών στις ρυθμίσεις. Η συνεχής ενσωμάτωση θα τεθεί σε παύση και επομένως απαιτεί κάποια προσοχή από τον προγραμματιστή.
Συμπέρασμα
- Στη συνεχή ενοποίηση, μετά από δέσμευση κώδικα, το λογισμικό κατασκευάζεται και δοκιμάζεται αμέσως
- Ο Jenkins χρησιμοποίησε για την ενορχήστρωση μιας αλυσίδας ενεργειών για συνεχή ενοποίηση σε ένα έργο λογισμικού
- Πριν από τον Jenkins, όταν όλοι οι Προγραμματιστές είχαν ολοκληρώσει τις εργασίες κωδικοποίησης που τους είχαν ανατεθεί, συνήθιζαν να δεσμεύουν τον κώδικά τους ταυτόχρονα. Later, Το Build ελέγχεται και αναπτύσσεται.
- Μετά το Jenkins, ο κώδικας δημιουργείται και δοκιμάζεται μόλις ο Προγραμματιστής δεσμεύσει τον κώδικα. Ο Jenkin θα δημιουργήσει και θα δοκιμάσει τον κώδικα πολλές φορές κατά τη διάρκεια της ημέρας
- Από προεπιλογή, το Jenkins διαθέτει ένα περιορισμένο σύνολο λειτουργιών. Εάν θέλετε να ενσωματώσετε την εγκατάσταση του Jenkins με εργαλεία ελέγχου έκδοσης όπως το Git, τότε πρέπει να εγκαταστήσετε πρόσθετα που σχετίζονται με το Git. Ελέγξτε επίσης καλυτερα Jenkins Alternative tools
- Τα μεγαλύτερα πλεονεκτήματα του Jenkins είναι ότι διοικείται από την κοινότητα που πραγματοποιεί δημόσιες συναντήσεις και λαμβάνει πληροφορίες από το κοινό για την ανάπτυξη των έργων Jenkins
- Το μεγαλύτερο μειονέκτημα του Jenkins είναι ότι η διεπαφή του είναι ξεπερασμένη και μη φιλική προς το χρήστη σε σύγκριση με τις τρέχουσες τάσεις διεπαφής χρήστη. Εάν σκέφτεστε άλλες επιλογές που μπορεί να προσφέρουν μια πιο σύγχρονη εμπειρία χρήστη, ίσως θελήσετε να εξερευνήσετε μερικές από αυτές κορυφαία εργαλεία συνεχούς ολοκλήρωσης διαθέσιμα.