Περίληψη: | Καθώς η τεχνολογία εξελίσσεται και τα project όλο και μεγαλώνουν οι ανάγκες υιοθέτησης τεχνικών που μειώνουν το χρόνο παραγωγής τους και αυξάνουν την αξιοπιστία τους, μεγαλώνει. Μία από αυτές τις τεχνικές είναι και θα είναι η Συνεχής Ενσωμάτωση (Continuous Integration). Αν και συστήματα συνεχούς ενσωμάτωσης υπάρχουν πλέον σε κάθε εταιρεία που θέλει να βελτιώσει τις διαδικασίες της, συχνό είναι και πάλι, τα κτισίματα λογισμικού να αποτυγχάνουν, χωρίς να έχει γίνει ιδιαίτερη έρευνα στις αιτίες. Ακόμη, τα κτισίματα αυτά διαρκούν πολλές φορές μεγάλα χρονικά διαστήματα, με αποτέλεσμα σε περίπτωση αποτυχίας πολύς χρόνος και πόροι να σπαταλούνται άσκοπα.
Κατά την διάρκεια της πρακτικής μου στην εταιρεία Nokia, είχα σαν στόχο να εξαλείψω τα παραπάνω προβλήματα και δημιούργησα ένα σύστημα, στα πλαίσια ενός προϊόντος της συγκεκριμένης εταιρείας, το οποίο αποθήκευε metadata που παρήγαγε o CI server της εταιρείας, τα καθαρίσαμε, μελετήσαμε αιτίες που αποτύγχαναν τα κτισίματα και προβλέπαμε για όλα τα μελλοντικά κτισίματα το αποτέλεσμά τους. Για πρόβλεψη χρησιμοποιήθηκαν πολλαπλοί αλγόριθμοι αλλά καταλήξαμε στην χρήση Random Forest.
Το σύστημα μας έφτασε σε ποσοστά επιτυχίας κοντά στο 80% και έγινε δεκτό να χρησιμοποιηθεί σε περιβάλλον production. Όσο μάλιστα συνέχιζε να δέχεται δεδομένα, τόσο βελτιωνόταν. Όσον αφορά τις αιτίες που αποτυγχάνουν τα build, η μελέτη μας έδειξε πως οι σημαντικότερες είναι: το αποτέλεσμα του προηγούμενου κτισίματος, το build climate, που είναι μια μετρική που δείχνει τα αποτελέσματα των τελευταίων 5 κτισιμάτων, πόσες γραμμές έχουν προστεθεί σε αυτό το build και τέλος, πόσα αρχεία που αφορούν tests έχουν αλλαχθεί. Καθώς βασιστήκαμε σε μεγάλο βαθμό σε προηγούμενη εργασία που αναφέρεται στην συνέχεια, είδαμε πως τα αποτελέσματα μας είναι σχετικά μεταξύ τους, αν και η εργασία μας αφορά εταιρικό προϊόν κλειστού κώδικα, ενώ η εν λόγο εργασία ανοικτά project που συνεργάζονται διαφορετικά άτομα ανά τον κόσμο.
|