Τι είναι η Jenkins;
Η Jenkins είναι ένας διακομιστής συνεχούς ενοποίησης ανοιχτού κώδικα ικανός να ενορχηστρώσει μια αλυσίδα ενεργειών που βοηθούν στην επίτευξη της διαδικασίας συνεχούς ολοκλήρωσης (και όχι μόνο) με αυτοματοποιημένο τρόπο.
Η Jenkins είναι δωρεάν και γράφεται εξ ολοκλήρου στην Java. Η Jenkins είναι μια ευρέως χρησιμοποιούμενη εφαρμογή σε όλο τον κόσμο που έχει περίπου 300k εγκαταστάσεις και αυξάνεται μέρα με τη μέρα.
Είναι μια εφαρμογή που βασίζεται σε διακομιστή και απαιτεί έναν διακομιστή ιστού όπως το Apache Tomcat. Ο λόγος που η Jenkins έγινε τόσο δημοφιλής είναι αυτή της παρακολούθησης των επαναλαμβανόμενων εργασιών που προκύπτουν κατά την ανάπτυξη ενός έργου. Για παράδειγμα, εάν η ομάδα σας αναπτύσσει ένα έργο, η Jenkins θα δοκιμάζει συνεχώς τις κατασκευές του έργου σας και θα σας δείξει τα σφάλματα στα πρώτα στάδια της ανάπτυξής σας.
Χρησιμοποιώντας τη Jenkins, οι εταιρείες λογισμικού μπορούν να επιταχύνουν τη διαδικασία ανάπτυξης λογισμικού, καθώς η Jenkins μπορεί να αυτοματοποιήσει την κατασκευή και τη δοκιμή με ταχύ ρυθμό. Η Jenkins υποστηρίζει τον πλήρη κύκλο ζωής ανάπτυξης λογισμικού από τη δημιουργία, τη δοκιμή, την τεκμηρίωση του λογισμικού, την ανάπτυξη και άλλα στάδια ενός κύκλου ζωής ανάπτυξης λογισμικού.
Σε αυτό το σεμινάριο, θα μάθετε
- Τι είναι η Jenkins;
- Τι είναι η συνεχής ολοκλήρωση;
- Ιστορία της Τζένκιν
- Γιατί να χρησιμοποιήσετε τη συνεχή ενσωμάτωση με τη Jenkins;
- Μελέτη περίπτωσης σε πραγματικό κόσμο της συνεχούς ολοκλήρωσης
- Πλεονεκτήματα της χρήσης του Jenkins
- Μειονεκτήματα από τη χρήση του Jenkins
Τι είναι η συνεχής ολοκλήρωση;
Στη συνεχή ολοκλήρωση μετά από δέσμευση κώδικα, το λογισμικό δημιουργείται και δοκιμάζεται αμέσως. Σε ένα μεγάλο έργο με πολλούς προγραμματιστές, οι δεσμεύσεις γίνονται πολλές φορές κατά τη διάρκεια μιας ημέρας. Με κάθε κώδικα δεσμεύεται και δοκιμάζεται. Εάν περάσει ο έλεγχος, το build δοκιμάζεται για ανάπτυξη. Εάν η ανάπτυξη είναι επιτυχής, ο κώδικας ωθείται στην παραγωγή. Αυτή η δέσμευση, κατασκευή, δοκιμή και ανάπτυξη είναι μια συνεχής διαδικασία και ως εκ τούτου το όνομα συνεχής ολοκλήρωση / ανάπτυξη.
Ο αγωγός συνεχούς ολοκλήρωσης είναι ένα ισχυρό όργανο που αποτελείται από ένα σύνολο εργαλείων που έχουν σχεδιαστεί για να φιλοξενούν , να παρακολουθούν , να μεταγλωττίζουν και να δοκιμάζουν κώδικα ή αλλαγές κώδικα, όπως:
- Διακομιστής συνεχούς ενοποίησης (Jenkins, 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 έγινε πιο δημοφιλής και ο Hudson δεν διατηρείται πλέον.
Γιατί να χρησιμοποιήσετε τη συνεχή ενσωμάτωση με τη Jenkins;
Μερικοί άνθρωποι μπορεί να πιστεύουν ότι ο παλιομοδίτικος τρόπος ανάπτυξης του λογισμικού είναι ο καλύτερος τρόπος. Ας καταλάβουμε τα πλεονεκτήματα του CI με τον Jenkins με το ακόλουθο παράδειγμα
Ας φανταστούμε, ότι υπάρχουν περίπου 10 προγραμματιστές που εργάζονται σε ένα κοινόχρηστο αποθετήριο. Ορισμένοι προγραμματιστές ολοκληρώνουν την εργασία τους σε 25 ημέρες, ενώ άλλοι χρειάζονται 30 ημέρες για να ολοκληρωθούν.
Πριν από τον Τζένκινς | Μετά τον Τζένκινς |
---|---|
Μόλις όλοι οι προγραμματιστές είχαν ολοκληρώσει τις ανατεθείσες εργασίες κωδικοποίησης, συνήθιζαν να δεσμεύουν τον κώδικα ταυτόχρονα. Αργότερα, το Build δοκιμάζεται και αναπτύσσεται. Ο κώδικας δέσμευσης κώδικα χτίστηκε και ο κύκλος δοκιμών ήταν πολύ σπάνιος και ένα μόνο build έγινε μετά από πολλές ημέρες. | Ο κώδικας δημιουργείται και δοκιμάστε μόλις ο προγραμματιστής δεσμεύσει κώδικα. Η Jenkin θα δημιουργήσει και θα δοκιμάσει τον κώδικα πολλές φορές κατά τη διάρκεια της ημέρας Εάν η κατασκευή είναι επιτυχής, τότε η Jenkins θα αναπτύξει την πηγή στον δοκιμαστικό διακομιστή και θα ειδοποιήσει την ομάδα ανάπτυξης. Εάν η έκδοση αποτύχει, τότε η Jenkins θα ειδοποιήσει τα σφάλματα στην ομάδα προγραμματιστών. |
Δεδομένου ότι ο κώδικας δημιουργήθηκε ταυτόχρονα, ορισμένοι προγραμματιστές θα πρέπει να περιμένουν έως ότου άλλοι προγραμματιστές ολοκληρώσουν την κωδικοποίηση για να ελέγξουν την κατασκευή τους | Ο κώδικας δημιουργείται αμέσως μετά τη δέσμευση κάποιου προγραμματιστή. |
Δεν είναι εύκολο να απομονώσετε, να εντοπίσετε και να διορθώσετε σφάλματα για πολλές διαπράξεις. | Δεδομένου ότι ο κώδικας δημιουργείται μετά από κάθε δέσμευση ενός μόνο προγραμματιστή, είναι εύκολο να εντοπιστεί ποιος κωδικός προκάλεσε την αποτυχία του ενσωματωμένου |
Η διαδικασία δημιουργίας κώδικα και δοκιμής είναι εντελώς χειροκίνητη, οπότε υπάρχουν πολλές πιθανότητες αποτυχίας. | Η αυτοματοποιημένη διαδικασία κατασκευής και δοκιμής εξοικονομεί χρόνο και μειώνει τα ελαττώματα. |
Ο κώδικας αναπτύσσεται μόλις διορθωθούν και δοκιμαστούν όλα τα σφάλματα. | Ο κώδικας αναπτύσσεται μετά από κάθε επιτυχημένη έκδοση και δοκιμή. |
Ο κύκλος ανάπτυξης είναι αργός | Ο κύκλος ανάπτυξης είναι γρήγορος. Οι νέες δυνατότητες είναι πιο εύκολα διαθέσιμες στους χρήστες. Αυξάνει τα κέρδη. |
Μελέτη περίπτωσης σε πραγματικό κόσμο της συνεχούς ολοκλήρωσης
Είμαι σίγουρος ότι όλοι γνωρίζετε το παλιό τηλέφωνο Nokia. Η Nokia χρησιμοποιούσε μια διαδικασία που ονομάζεται νυχτερινή κατασκευή. Μετά από πολλές δεσμεύσεις από διαφορετικούς προγραμματιστές κατά τη διάρκεια της ημέρας, το λογισμικό κατασκευάστηκε κάθε βράδυ. Δεδομένου ότι το λογισμικό δημιουργήθηκε μόνο μία φορά την ημέρα, είναι τεράστιος πόνος για την απομόνωση, τον εντοπισμό και τη διόρθωση των σφαλμάτων σε μια μεγάλη βάση κώδικα.
Αργότερα, υιοθέτησαν προσέγγιση συνεχούς ολοκλήρωσης. Το λογισμικό δημιουργήθηκε και δοκιμάστηκε μόλις ο προγραμματιστής δεσμεύτηκε κωδικός. Εάν εντοπιστεί κάποιο σφάλμα, ο αντίστοιχος προγραμματιστής μπορεί να διορθώσει γρήγορα το ελάττωμα.
Πρόσθετα Jenkins
Από προεπιλογή, η Jenkins διαθέτει ένα περιορισμένο σύνολο χαρακτηριστικών. Εάν θέλετε να ενσωματώσετε την εγκατάσταση του Jenkins με εργαλεία ελέγχου εκδόσεων όπως το Git, τότε πρέπει να εγκαταστήσετε πρόσθετα που σχετίζονται με το Git. Στην πραγματικότητα, για ενσωμάτωση με εργαλεία όπως το Maven, το Amazon EC2, πρέπει να εγκαταστήσετε αντίστοιχα πρόσθετα στο Jenkins.
Πλεονεκτήματα της χρήσης του Jenkins
- Το Jenkins διοικείται από την κοινότητα που είναι πολύ ανοιχτή. Κάθε μήνα, πραγματοποιούν δημόσιες συναντήσεις και λαμβάνουν πληροφορίες από το κοινό για την ανάπτυξη του έργου Jenkins.
- Μέχρι στιγμής έχουν κλείσει περίπου 280 εισιτήρια και το έργο δημοσιεύει σταθερή κυκλοφορία κάθε τρεις μήνες.
- Καθώς η τεχνολογία μεγαλώνει, το ίδιο κάνει και ο Jenkins. Μέχρι στιγμής, η Jenkins έχει δημοσιεύσει περίπου 320 προσθήκες στη βάση δεδομένων των πρόσθετων. Με τα πρόσθετα, η Jenkins γίνεται ακόμα πιο ισχυρή και πλούσια σε χαρακτηριστικά.
- Το Jenkins υποστηρίζει επίσης αρχιτεκτονική που βασίζεται σε σύννεφο, ώστε να μπορείτε να αναπτύξετε το Jenkins σε πλατφόρμες που βασίζονται σε σύννεφο.
- Ο λόγος για τον οποίο η Jenkins έγινε δημοφιλής είναι ότι δημιουργήθηκε από έναν προγραμματιστή για προγραμματιστές.
Μειονεκτήματα από τη χρήση του Jenkins
Αν και ο Jenkins είναι ένα πολύ ισχυρό εργαλείο, έχει τα ελαττώματα του.
- Η διεπαφή του είναι ξεπερασμένη και δεν είναι φιλική προς το χρήστη σε σύγκριση με τις τρέχουσες τάσεις διεπαφής χρήστη.
- Αν και η Jenkins λατρεύεται από πολλούς προγραμματιστές, δεν είναι τόσο εύκολο να τη διατηρήσετε, επειδή η Jenkins τρέχει σε διακομιστή και απαιτεί κάποιες δεξιότητες ως διαχειριστής διακομιστή για την παρακολούθηση της δραστηριότητάς της.
- Ένας από τους λόγους για τους οποίους πολλοί άνθρωποι δεν εφαρμόζουν το Jenkins είναι η δυσκολία του στην εγκατάσταση και τη διαμόρφωση του Jenkins.
- Οι συνεχείς ενοποιήσεις διακόπτονται τακτικά λόγω κάποιων μικρών αλλαγών στις ρυθμίσεις. Η συνεχής ενοποίηση θα τεθεί σε παύση και συνεπώς απαιτεί κάποια προσοχή από τον προγραμματιστή.
Συμπέρασμα:
- Στη συνεχή ολοκλήρωση, μετά από δέσμευση κώδικα, το λογισμικό δημιουργείται και δοκιμάζεται αμέσως
- Η Jenkins είναι ένας διακομιστής συνεχούς ενοποίησης ανοιχτού κώδικα ικανός να ενορχηστρώσει μια αλυσίδα ενεργειών
- Πριν από την Jenkins, όταν όλοι οι προγραμματιστές είχαν ολοκληρώσει τις ανατεθείσες εργασίες κωδικοποίησης, συνήθιζαν να δεσμεύουν τον κώδικα ταυτόχρονα. Αργότερα, το Build δοκιμάζεται και αναπτύσσεται.
- Μετά τη Jenkins ο κώδικας δημιουργείται και δοκιμάστε μόλις ο προγραμματιστής δεσμεύσει τον κώδικα. Η Jenkin θα δημιουργήσει και θα δοκιμάσει κώδικα πολλές φορές κατά τη διάρκεια της ημέρας
- Από προεπιλογή, η Jenkins διαθέτει ένα περιορισμένο σύνολο χαρακτηριστικών. Εάν θέλετε να ενσωματώσετε την εγκατάσταση του Jenkins με εργαλεία ελέγχου εκδόσεων όπως το Git, τότε πρέπει να εγκαταστήσετε πρόσθετα που σχετίζονται με το Git
- Τα μεγαλύτερα πλεονεκτήματα της Jenkins είναι ότι διαχειρίζεται η κοινότητα που πραγματοποιεί δημόσιες συναντήσεις και λαμβάνει πληροφορίες από το κοινό για την ανάπτυξη έργων Jenkins
- Το μεγαλύτερο μειονέκτημα της Jenkin είναι ότι η διεπαφή του είναι ξεπερασμένη και δεν είναι φιλική προς τον χρήστη σε σύγκριση με τις τρέχουσες τάσεις διεπαφής χρήστη.