Κεφάλαιο 1 Τι είναι ο Τζένκινς;
Το Jenkins είναι μια επεκτάσιμη, συνεχής μηχανή ολοκλήρωσης.
Χρησιμοποιείται κυρίως για:
- Συνεχής και αυτόματη κατασκευή/δοκιμή έργων λογισμικού.
- l Παρακολουθήστε ορισμένες εργασίες που εκτελούνται τακτικά.
Τα χαρακτηριστικά που διαθέτει ο Jenkins περιλαμβάνουν:
- Εύκολο στην εγκατάσταση - απλώς αναπτύξτε το jenkins.war σε ένα κοντέινερ servlet χωρίς υποστήριξη βάσης δεδομένων.
- l Εύκολη διαμόρφωση - όλες οι διαμορφώσεις επιτυγχάνονται μέσω της διεπαφής ιστού που παρέχεται από αυτήν.
- l Το ενσωματωμένο RSS/E-mail δημοσιεύει τα αποτελέσματα της κατασκευής μέσω RSS ή ειδοποιήσεις μέσω e-mail όταν ολοκληρωθεί η κατασκευή.
- l Δημιουργήστε αναφορές δοκιμών JUnit/TestNG.
- l Υποστήριξη κατανεμημένης κατασκευής Το Jenkins επιτρέπει σε πολλά μηχανήματα να κατασκευάζουν/δοκιμάζουν μαζί.
- l Αναγνώριση αρχείων: Ο Jenkins μπορεί να παρακολουθεί ποια βάζα δημιουργούνται από ποια έκδοση, ποια έκδοση του jar χρησιμοποιείται από ποια έκδοση κ.λπ.
- l Υποστήριξη προσθηκών: Υποστηρίζονται επεκτάσεις, ώστε να μπορείτε να αναπτύξετε εργαλεία που ταιριάζουν στη χρήση της ομάδας σας.
1 Προέλευση του Τζένκινς
Η συνεχής ενοποίηση (CI) έχει γίνει μια κοινή πρακτική για πολλές ομάδες ανάπτυξης λογισμικού να επικεντρώνονται στη διασφάλιση της ποιότητας του κώδικα σε όλο τον κύκλο ζωής ανάπτυξης λογισμικού. Είναι μια πρακτική που έχει σχεδιαστεί για να διευκολύνει και να σταθεροποιήσει τη διαδικασία δημιουργίας λογισμικού. Και μπορεί να βοηθήσει την ομάδα ανάπτυξής σας να αντιμετωπίσει προκλήσεις όπως:
- l Αυτοματισμός κατασκευής λογισμικού: Αφού ολοκληρωθεί η διαμόρφωση, το σύστημα CI θα δημιουργήσει το λογισμικό-στόχο σύμφωνα με το προκαθορισμένο χρονοδιάγραμμα ή για ένα συγκεκριμένο συμβάν.
- l Δημιουργήστε βιώσιμους αυτοματοποιημένους ελέγχους: Το σύστημα CI μπορεί να λαμβάνει συνεχώς νέο ή τροποποιημένο πηγαίο κώδικα check-in, δηλαδή, όταν η ομάδα ανάπτυξης λογισμικού χρειάζεται να ελέγχει περιοδικά τον νέο ή τροποποιημένο κώδικα, το σύστημα CI θα επιβεβαιώνει συνεχώς εάν ο νέος κώδικας έχει διαταράξει την επιτυχή κατασκευή του αρχικού λογισμικού. Αυτό μειώνει τον χρόνο και την προσπάθεια που ξοδεύουν οι προγραμματιστές για να ελέγξουν για αλλαγές στον αλληλοεξαρτώμενο κώδικά τους (για να είμαστε απλοί, χεχε).
- l Δημιουργήστε βιώσιμες αυτοματοποιημένες δοκιμές: δημιουργήστε ένα εκτεταμένο μέρος του ελέγχου, εκτελέστε ένα προκαθορισμένο σύνολο κανόνων δοκιμής μετά την κατασκευή και ενεργοποιήστε ειδοποιήσεις (email, RSS, κ.λπ.) στα σχετικά μέρη μετά την ολοκλήρωση.
- l Αυτοματοποίηση των επόμενων διαδικασιών μετά τη δημιουργία: Όταν ολοκληρωθούν επιτυχώς οι αυτοματοποιημένοι έλεγχοι και οι δοκιμές, ενδέχεται να απαιτηθούν πρόσθετες εργασίες στον κύκλο κατασκευής λογισμικού, όπως η δημιουργία τεκμηρίωσης, η συσκευασία λογισμικού και η ανάπτυξη στοιχείων σε χρόνο εκτέλεσης ή αποθετήριο λογισμικού. Αυτό επιτρέπει στα στοιχεία να διατίθενται στους χρήστες πιο γρήγορα.
- Οι ελάχιστες απαιτήσεις που απαιτούνται για την ανάπτυξη ενός συστήματος CI είναι ένα αποθετήριο διαθέσιμου πηγαίου κώδικα και ένα έργο με σενάρια κατασκευής.
Το παρακάτω διάγραμμα συνοψίζει τη βασική δομή ενός συστήματος CI:
Τα στοιχεία του συστήματος λειτουργούν με την ακόλουθη σειρά:
1. Ο προγραμματιστής ελέγχει τον κώδικα στο αποθετήριο πηγαίου κώδικα.
2. Το σύστημα CI δημιουργεί ξεχωριστό χώρο εργασίας για κάθε έργο. Όταν μια νέα έκδοση είναι προκαθορισμένη ή ζητηθεί, θα αποθηκεύσει τον πηγαίο κώδικα από το αποθετήριο πηγαίου κώδικα στον αντίστοιχο χώρο εργασίας.
3. Το σύστημα CI θα εκτελέσει τη διαδικασία κατασκευής στον αντίστοιχο χώρο εργασίας.
4. (Εάν υπάρχει διαμόρφωση) Μόλις ολοκληρωθεί η κατασκευή, το σύστημα CI εκτελεί ένα καθορισμένο σύνολο δοκιμών σε ένα νέο τεχνούργημα. Ενεργοποίηση ειδοποιήσεων (Email, RSS κ.λπ.) στα ενδιαφερόμενα μέρη μετά την ολοκλήρωση.
5. (Διαμόρφωση, εάν υπάρχει) Εάν η κατασκευή είναι επιτυχής, αυτό το τεχνούργημα συσκευάζεται και μεταφέρεται σε έναν προορισμό ανάπτυξης (π.χ. διακομιστή εφαρμογών) ή αποθηκεύεται ως νέα έκδοση στο αποθετήριο λογισμικού. Ένα αποθετήριο λογισμικού μπορεί να είναι μέρος ενός συστήματος CI ή ενός εξωτερικού αποθετηρίου, όπως ένας διακομιστής αρχείων ή ένας ιστότοπος όπως το Java.net, το SourceForge κ.λπ.
6. Το σύστημα CI συνήθως ξεκινά αντίστοιχες ενέργειες βάσει αιτημάτων, όπως άμεσες κατασκευές, δημιουργία αναφορών ή ανάκτηση ορισμένων κατασκευασμένων τεχνουργημάτων.
Το Jenkins είναι ένα τέτοιο σύστημα CI. Παλαιότερα γνωστό ως Hudson.
Ακολουθούν ορισμένοι λόγοι για να χρησιμοποιήσετε το Jenkins:
- l Είναι το πιο εύκολο στην εγκατάσταση και τη διαμόρφωση μεταξύ όλων των προϊόντων CI.
- l Με βάση την πρόσβαση στον ιστό, η διεπαφή χρήστη είναι πολύ φιλική, διαισθητική και ευέλικτη και σε πολλές περιπτώσεις παρέχει άμεση ανατροφοδότηση από το AJAX.
- l Το Jenkins έχει αναπτυχθεί σε Java (το οποίο είναι πολύ χρήσιμο αν είστε προγραμματιστής Java), αλλά δεν περιορίζεται στη δημιουργία λογισμικού που βασίζεται σε Java.
- l Το Jenkins έχει μεγάλο αριθμό προσθηκών. Αυτά τα πρόσθετα επεκτείνουν σημαντικά τη λειτουργικότητα του Jenkins. Είναι όλα ανοιχτού κώδικα και μπορούν να εγκατασταθούν και να διαχειριστούν απευθείας μέσω της διεπαφής ιστού.
1.1 Στόχοι του Jenkins Ο κύριος στόχος του Jenkins είναι να παρακολουθεί τη διαδικασία ανάπτυξης λογισμικού και να αποκαλύπτει γρήγορα προβλήματα. Ως εκ τούτου, μπορεί να διασφαλίσει ότι οι προγραμματιστές και το σχετικό προσωπικό εξοικονομούν χρόνο και προσπάθεια και βελτιώνουν την αποτελεσματικότητα της ανάπτυξης.
Ο κύριος ρόλος του συστήματος CI σε όλη τη διαδικασία ανάπτυξης είναι ο έλεγχος: όταν το σύστημα ανιχνεύει μια αλλαγή στο αποθετήριο κώδικα, αναθέτει το έργο της εκτέλεσης της κατασκευής στην ίδια τη διαδικασία κατασκευής. Εάν η κατασκευή αποτύχει, τότε το σύστημα CI ειδοποιεί το σχετικό άτομο και στη συνέχεια συνεχίζει να παρακολουθεί το αποθετήριο. Οι χαρακτήρες του φαίνεται να είναι παθητικοί. Αλλά αντικατοπτρίζει το πρόβλημα γρήγορα.
Συγκεκριμένα, έχει τα ακόλουθα πλεονεκτήματα:
- l Τζένκινς Όλες οι διαμορφώσεις μπορούν να γίνουν στη διεπαφή ιστού. Ορισμένες διαμορφώσεις, όπως MAVEN_HOME και email, πρέπει να διαμορφωθούν μόνο μία φορά και μπορούν να χρησιμοποιηθούν όλα τα έργα. Φυσικά, μπορεί επίσης να ρυθμιστεί τροποποιώντας το XML.
- l Ενότητες που υποστηρίζουν το Maven, η Jenkins έχει βελτιστοποιήσει το Maven, ώστε να μπορεί να αναγνωρίζει αυτόματα τις μονάδες και κάθε ενότητα μπορεί να διαμορφωθεί ως εργασία. Αρκετά ευέλικτο.
- l Συγκέντρωση αναφορών δοκιμών, οι αναφορές δοκιμών όλων των ενοτήτων συγκεντρώνονται μαζί και τα αποτελέσματα είναι ξεκάθαρα με μια ματιά, χρησιμοποιώντας άλλα CI, κάτι που είναι σχεδόν αδύνατο έργο.
- l Δακτυλικό αποτύπωμα Artifact, το αποτέλεσμα κάθε κατασκευής διαχειρίζεται καλά αυτόματα και μπορεί εύκολα να περιηγηθεί και να ληφθεί χωρίς καμία διαμόρφωση.
|