Επισκόπηση της Ενσωμάτωσης Αναφορών Έκτασης
Η ενσωμάτωση της Έκτασης Αναφοράς με το Jenkins για αυτοματοποιημένα έργα Java ενισχύει την ορατότητα των αποτελεσμάτων των δοκιμών, κάτι που είναι ζωτικής σημασίας για περιβάλλοντα συνεχούς ενοποίησης. Αυτή η ρύθμιση περιλαμβάνει συνήθως τα TestNG, Maven και Extent Reporter, τα οποία διαχειρίζονται μέσω SureFire, επιτρέποντας νυχτερινές κατασκευές και λεπτομερείς αναφορές.
Ωστόσο, μια κοινή πρόκληση είναι η εξαγωγή συγκεκριμένων δεδομένων, όπως μετρήσεις δοκιμών και αναλογίες επιτυχίας/αποτυχίας από τον πίνακα εργαλείων HTML του Extent Reporter για συμπερίληψη στις ειδοποιήσεις email Jenkins. Αυτό απαιτεί ένα σενάριο ή μια μέθοδο για την αποτελεσματική ανάλυση αυτών των λεπτομερειών από το περιεχόμενο HTML για αυτοματοποιημένη διάδοση.
| Εντολή | Περιγραφή |
|---|---|
| groovy.json.JsonSlurper | Χρησιμοποιείται στο Groovy για την ανάλυση δεδομένων μορφοποιημένων JSON, διευκολύνοντας το χειρισμό δεδομένων από αρχεία JSON ή απαντήσεις. |
| new URL().text | Δημιουργεί ένα νέο αντικείμενο URL και ανακτά το περιεχόμενο ως κείμενο, που χρησιμοποιείται συνήθως για την ανάγνωση δεδομένων απευθείας από πόρους ιστού. |
| jenkins.model.Jenkins.instance | Μοτίβο Singleton για πρόσβαση στην τρέχουσα λειτουργία του Jenkins, επιτρέποντας τον χειρισμό των διαμορφώσεων και των ρυθμίσεων εργασίας. |
| Thread.currentThread().executable | Χρησιμοποιείται στο σενάριο Jenkins για να λάβετε μια αναφορά στην τρέχουσα έκδοση ή εργασία, συχνά για δυναμικό χειρισμό. |
| hudson.util.RemotingDiagnostics | Επιτρέπει την εκτέλεση σεναρίων Groovy σε απομακρυσμένους κόμβους Jenkins, που χρησιμοποιούνται κυρίως για διαγνωστικούς σκοπούς μέσα σε σενάρια. |
| Transport.send(message) | Μέρος του JavaMail API που χρησιμοποιείται για την αποστολή ενός μηνύματος email προετοιμασμένου στο σενάριο, απαραίτητο για συστήματα ειδοποιήσεων. |
Επεξήγηση υλοποίησης σεναρίου
Τα παρεχόμενα σενάρια έχουν σχεδιαστεί για να αυτοματοποιούν την εξαγωγή δεδομένων δοκιμών από Εκθέσεις Έκτασης στο Jenkins και να αποστέλλουν αυτά τα δεδομένα μέσω email ως μέρος ενός βρόχου ανατροφοδότησης συνεχούς ενοποίησης. Η πρώτη σημαντική εντολή είναι , το οποίο είναι απαραίτητο για την ανάλυση δεδομένων JSON στο περιβάλλον Jenkins. Αυτό επιτρέπει στο σενάριο να χειρίζεται αποτελεσματικά τις απαντήσεις ή τα αρχεία JSON, κάτι που είναι ζωτικής σημασίας για την εξαγωγή των αποτελεσμάτων δοκιμής που έχουν μορφοποιηθεί σε JSON από τις Εκθέσεις Έκτασης. Μια άλλη βασική εντολή που χρησιμοποιείται είναι , το οποίο έχει πρόσβαση στην αναφορά HTML των Αναφορών Έκτασης που φιλοξενούνται στο Jenkins. Αυτή η εντολή ανακτά το περιεχόμενο HTML ως απλό κείμενο, επιτρέποντας στο σενάριο να αποκόψει τα απαραίτητα δεδομένα, όπως συνολικές δοκιμές, επιτυχείς και αποτυχημένες δοκιμές.
Η εξαγωγή δεδομένων γίνεται περαιτέρω με τη χρήση κανονικών εκφράσεων για την εύρεση συγκεκριμένων μοτίβων στο κείμενο HTML, προσδιορίζοντας τους αριθμούς που σχετίζονται με τις συνολικές, τις επιτυχείς και τις αποτυχημένες δοκιμές. ο Στη συνέχεια, η εντολή χρησιμοποιείται για την αναφορά της τρέχουσας παρουσίας Jenkins, η οποία είναι απαραίτητη για την ανάκτηση διαφόρων λεπτομερειών εργασίας και τη διαμόρφωση των ρυθμίσεων μέσω προγραμματισμού. Μετά την εξαγωγή δεδομένων, το σενάριο χρησιμοποιεί από το JavaMail API για να στείλετε το δημιουργημένο email. Αυτή η εντολή είναι ζωτικής σημασίας για την αποστολή ειδοποιήσεων μέσω email με τα εξαγόμενα αποτελέσματα δοκιμών, διασφαλίζοντας ότι οι ενδιαφερόμενοι ενημερώνονται με τα πιο πρόσφατα αποτελέσματα δοκιμών απευθείας μέσω email, βελτιώνοντας έτσι τους χρόνους επικοινωνίας και απόκρισης στους κύκλους ανάπτυξης.
Εξαγωγή δεδομένων από Αναφορές Έκτασης στο Jenkins
Java και Groovy Scripting για Jenkins Pipelines
import hudson.model.*import hudson.util.RemotingDiagnosticsimport groovy.json.JsonSlurperdef extractData() {def build = Thread.currentThread().executabledef reportUrl = "${build.getProject().url}${build.number}/HTML_20Report/index.html"def jenkinsConsole = new URL(reportUrl).textdef matcher = jenkinsConsole =~ "<span class=\\"param_name\\">\\s*Total Tests:\\s*</span>(\\d+)</br>"def totalTests = matcher ? Integer.parseInt(matcher[0][1]) : 0matcher = jenkinsConsole =~ "<span class=\\"param_name\\">\\s*Passed Tests:\\s*</span>(\\d+)</br>"def passedTests = matcher ? Integer.parseInt(matcher[0][1]) : 0matcher = jenkinsConsole =~ "<span class=\\"param_name\\">\\s*Failed Tests:\\s*</span>(\\d+)</br>"def failedTests = matcher ? Integer.parseInt(matcher[0][1]) : 0return [totalTests, passedTests, failedTests]}def sendEmail(testResults) {def emailExt = Jenkins.instance.getExtensionList('hudson.tasks.MailSender')[0]def emailBody = "Total Tests: ${testResults[0]}, Passed: ${testResults[1]}, Failed: ${testResults[2]}"emailExt.sendMail(emailBody, "jenkins@example.com", "Test Report Summary")}def results = extractData()sendEmail(results)
Σενάριο για τη βελτίωση των ειδοποιήσεων ηλεκτρονικού ταχυδρομείου στο Jenkins
Χρησιμοποιώντας το Groovy στο Jenkins Post-Build Actions
import groovy.json.JsonSlurperimport jenkins.model.Jenkinsimport javax.mail.Messageimport javax.mail.Transportimport javax.mail.internet.InternetAddressimport javax.mail.internet.MimeMessagedef fetchReportData() {def job = Jenkins.instance.getItemByFullName("YourJobName")def lastBuild = job.lastBuilddef reportUrl = "${lastBuild.url}HTML_20Report/index.html"new URL(reportUrl).withReader { reader ->def data = reader.textdef jsonSlurper = new JsonSlurper()def object = jsonSlurper.parseText(data)return object}}def sendNotification(buildData) {def session = Jenkins.instance.getMailSession()def message = new MimeMessage(session)message.setFrom(new InternetAddress("jenkins@example.com"))message.setRecipients(Message.RecipientType.TO, "developer@example.com")message.setSubject("Automated Test Results")message.setText("Test Results: ${buildData.totalTests} Total, ${buildData.passed} Passed, ${buildData.failed} Failed.")Transport.send(message)}def reportData = fetchReportData()sendNotification(reportData)
Βελτιώσεις στην Αυτοματοποιημένη Αναφορά μέσω του Jenkins
Η εφαρμογή αυτοματοποιημένης εξαγωγής δεδομένων και ειδοποιήσεων μέσω email στο Jenkins χρησιμοποιώντας τις Εκθέσεις Έκτασης βελτιστοποιεί σημαντικά τη διαδικασία συνεχούς ενοποίησης (CI). Αυτή η μεθοδολογία όχι μόνο διασφαλίζει έγκαιρες ενημερώσεις, αλλά διευκολύνει επίσης την προληπτική επίλυση προβλημάτων παρέχοντας στους ενδιαφερόμενους άμεσα αποτελέσματα δοκιμών. Η διαδικασία αξιοποιεί τις δυνατότητες του Jenkins να προγραμματίζει και να εκτελεί αυτοματοποιημένες δοκιμές κατά τη διάρκεια της νύχτας, οι οποίες στη συνέχεια αναλύονται για την εξαγωγή βασικών μετρήσεων όπως ο συνολικός αριθμός δοκιμών, επιτυχιών και αποτυχιών απευθείας από τις αναφορές HTML που δημιουργούνται από το Extent Reporter.
Αυτή η αυτοματοποιημένη εξαγωγή και αναφορά βελτιστοποιεί τον μηχανισμό ανάδρασης που είναι απαραίτητος για ευέλικτα περιβάλλοντα ανάπτυξης. Με την ενσωμάτωση των Εκθέσεων Έκτασης με το Jenkins, οι ομάδες μπορούν να διαχειρίζονται καλύτερα τα αποτελέσματα των δοκιμών και να διατηρούν υψηλά πρότυπα ποιότητας κώδικα μέσω συνεχούς παρακολούθησης και αξιολόγησης. Αυτές οι λειτουργίες είναι κρίσιμες για τη διατήρηση ενός αποτελεσματικού αγωγού ανάπτυξης και για τη διασφάλιση ότι όλα τα μέλη της ομάδας ευθυγραμμίζονται με τα πιο πρόσφατα αποτελέσματα δοκιμών και την κατάσταση του έργου.
- Πώς μπορώ να ρυθμίσω το Jenkins να στέλνει ένα email μετά από μια κατασκευή;
- Μπορείτε να το διαμορφώσετε στις ενέργειες μετά την κατασκευή της διαμόρφωσης της εργασίας σας, χρησιμοποιώντας την επιλογή Ειδοποίηση μέσω email.
- Τι είναι το Extent Reports στο πλαίσιο του Jenkins;
- Το Extent Reports είναι ένα εργαλείο αναφοράς ανοιχτού κώδικα που παρέχει διαδραστικές και λεπτομερείς αναφορές για αυτοματοποιημένες δοκιμές, που ενσωματώνονται εύκολα στους αγωγούς Jenkins.
- Μπορεί το Jenkins να ενσωματωθεί με άλλα εργαλεία αναφοράς εκτός από τις Εκθέσεις Έκτασης;
- Ναι, το Jenkins υποστηρίζει την ενοποίηση με πολλά άλλα εργαλεία αναφοράς όπως το JUnit, το TestNG και άλλα, χρησιμοποιώντας αντίστοιχες προσθήκες.
- Πώς μπορώ να εξαγάγω δεδομένα δοκιμής από μια αναφορά HTML στο Jenkins;
- Συνήθως χρησιμοποιείτε δέσμες ενεργειών Groovy ή Python στο Jenkins για να αναλύσετε περιεχόμενο HTML και να εξαγάγετε τα απαιτούμενα δεδομένα.
- Ποια είναι τα οφέλη των αυτοματοποιημένων ειδοποιήσεων email στο Jenkins;
- Τα αυτοματοποιημένα μηνύματα ηλεκτρονικού ταχυδρομείου παρέχουν άμεση ανατροφοδότηση σχετικά με τις καταστάσεις έκδοσης και δοκιμής, βοηθώντας τις ομάδες να αντιμετωπίζουν τα προβλήματα πιο γρήγορα και να διατηρούν συνεχείς ροές εργασιών ανάπτυξης.
Η αυτοματοποίηση της εξαγωγής μετρήσεων δοκιμής από τις Εκθέσεις Έκτασης και η ενσωμάτωσή τους στις ειδοποιήσεις email Jenkins ενισχύει σημαντικά τις δυνατότητες παρακολούθησης σε έναν αγωγό CI. Αυτή η προσέγγιση επιτρέπει στις ομάδες να λαμβάνουν έγκαιρες ενημερώσεις σχετικά με τα αποτελέσματα των δοκιμών, προωθώντας γρήγορες ενέργειες για τη διόρθωση αστοχιών και τη βελτίωση του κώδικα. Η βελτιστοποιημένη διαδικασία όχι μόνο εξοικονομεί χρόνο αλλά και βελτιστοποιεί την κατανομή των πόρων διασφαλίζοντας ότι όλοι οι ενδιαφερόμενοι φορείς ενημερώνονται έγκαιρα για την κατάσταση των νυχτερινών εκδόσεων, διατηρώντας έτσι έναν συνεχή βρόχο ανατροφοδότησης και ανάπτυξης.