Atlassian Bamboo vs Jetbrains Teamcity - υπάρχει σαφής νικητής

Έχω χρησιμοποιήσει διακομιστές συνεχούς ολοκλήρωσης για πάνω από μια δεκαετία. Χρησιμοποίησα Jenkins, Bamboo, Travis, προσπάθησα Circle, Jenkins, GOCD, Semaphore και BuildBot. Παίρνω δοκιμές και συνεχή ανάπτυξη πολύ σοβαρά και έχουν ισχυρές απαιτήσεις για να χτίσει server μου. Έτρεξα ένα εαυτό φιλοξενούνται μπαμπού για περισσότερα από 4 χρόνια, ενσωματωμένο με Jira και Bitbucket server και ήταν ικανοποιημένος, δεν είναι ευχαριστημένοι.

Όταν ο Atlassian αύξησε τις τιμές του για το Μπαμπού, αποφάσισα να αξιολογήσω μια νέα λύση CI. Δεν ήμουν ικανοποιημένος με την ανάπτυξη χαρακτηριστικών για το μπαμπού. Χρησιμοποίησα τον τρόπο για πολλές εργασίες σε σενάριο, επειδή δεν υπήρχαν αρκετά plugins για τις περιπτώσεις χρήσης μου. Δεν θα μπορούσα να αντέξω άλλο οικοδόμος παράγοντα, δεν θα μπορούσα να αντέξω το μπαμπού στην πρώτη θέση, επειδή είμαι μόνο μια ομάδα προγραμματιστών άνθρωπος.

Τους μαχαίρωσα όλους. Ξεκίνησα με open source, αλλά Jenkins και GOCD είμαστε ένας σοβαρός εφιάλτης για μένα. Jenkins λόγω της διασύνδεσης (ακόμη και με τον μπλε ωκεανό), GOCD λόγω της έλλειψης ολοκλήρωσης και της ακαμψίας. Ήμουν τόσο απογοητευμένος ...

Άρχισα να αξιολογώ το γνωστό SaaS όπως ο Κύκλος και το Semaphore και τίποτα. Αλλά όλοι ένιωθαν σαν να λείπει ένα ολόκληρο κομμάτι ροής εργασίας που είχα με το μπαμπού.

Δωρεάν για μικρές χρήσεις

Στο τέλος εξέτασα τη χορήγηση άδειας για το Jetbrains Teamcity και εξέπληξε το γεγονός ότι υπάρχει μια ελεύθερη βαθμίδα για τις μικρές επιχειρήσεις. Η εγκατάσταση ήταν εύκολη με το docker και όλα άρχισαν να αισθάνονται πολύ φυσικά. Το περιβάλλον εργασίας χρήστη είναι λίγο oldschool, αλλά είναι ΣΥΣΚΕΥΑΣΜΕΝΟ με πράγματα. Ήμουν λίγο σκεπτικός, αλλά έπειτα πωλούσα στον τεράστιο αριθμό επιλογών για όλα. Μια εβδομάδα στο UI είναι μόνο ένα αεράκι. Μπορείτε να προσαρμόσετε τα πάντα και δεν θα μπορούσα μόνο να μετακινήσετε όλα τα έργα μου από το μπαμπού στην Teamcity αλλά να βελτιώσω όλη μου τη ρύθμιση.

Πάντα πίστευα ότι η Teamcity είναι το αουτσάιντερ στο CI και πολύ oldschool, αλλά δεν ήταν.

Εδώ είναι ο κατάλογος των χαρακτηριστικών που συντρίβουν το μπαμπού για την περίπτωση χρήσης μου:

Αυτόματη συμπλήρωση παραμέτρων μεταβλητών και παραμέτρων

Υπάρχουν τόσες πολλές μεταβλητές σε κάθε CI-Server, που θέλουν να χρησιμοποιηθούν. Αλλά είναι πάντα τόσο δύσκολο να θυμηθούμε. Η τεκμηρίωση του Μπαμπού απαριθμεί όλες τις μεταβλητές, αλλά η ιδέα της TC είναι πολύ καλύτερη:

θα πραγματοποιήσει αυτόματη συμπλήρωση μεταβλητών μόλις πληκτρολογήσετε%. Αυτό λειτουργεί για απλές επιλογές διαμόρφωσης (όπως ο μετρητής δημιουργίας εδώ), αλλά και σε σελιδοδείκτες inline. Τόσο απλό, τόσο χρήσιμο!

Άμεση Πλοήγηση

Ένας από τους λόγους που πρέπει να συνηθίσετε με το UI είναι ότι οι κύριοι ηθοποιοί έχουν ένα μικρό βέλος που τους συνδέεται.

Τα μικρά βέλη παντού στο UI από την ομάδα - σημειώνονται με ένα κόκκινο κύκλο

Αλλά είναι τόσο απλά. Όταν κάνετε κλικ σε αυτά, θα λάβετε συνδέσμους πλοήγησης περιβάλλοντος για το στοιχείο. Για παράδειγμα, όταν κάνετε κλικ στο αποτέλεσμα της κατασκευής, μπορείτε να ερευνήσετε το αρχείο καταγραφής, να δείτε τα αποτελέσματα των δοκιμών, να επεξεργαστείτε τη διαμόρφωση κ.λπ. Υπάρχει πάντα μια προεπιλεγμένη διαδρομή για να πάτε, η οποία είναι συνήθως εκεί που θέλετε να πάτε στην πρώτη θέση, αλλά συχνά μπορείτε να διαθέσετε δύο ή περισσότερα κλικ. Μόλις μάθει, αυτό είναι ένας τόσο μεγάλος χρόνος ασφαλέστερος.

Τα μενού περιβάλλοντος διασφαλίζουν έναν τόνο χρόνου κατά την πλοήγηση

Δημιουργία και ανάπτυξη προτύπων

Teamcity έχει τόσες πολλές καλά σκεπτόμενες βελτιώσεις όταν πρόκειται για την επαναχρησιμοποίηση κοινών ανταλλακτικών στις διαμορφώσεις σας. Αυτό είναι το υλικό που τα όνειρα είναι κατασκευασμένα. Μπορείτε να δημιουργήσετε ένα πρότυπο από ένα build ή να ξεκινήσετε από το μηδέν και να δημιουργήσετε νέες παραμέτρους δημιουργίας βασισμένες σε αυτό το πρότυπο. Μόλις αλλάξει το πρότυπο, η διαμόρφωση δόμησης κληρονομεί τις αλλαγές. Αυτό γίνεται τόσο καλά, επειδή τα χαρακτήριζαν όλα καθαρά καθαρά: είναι αυτή η ρύθμιση που προέρχεται από το πρότυπο; Μήπως υπερισχύει σε αυτό το config;

Έργα και έργα-Ιεραρχία

Στην Teamcity ο πρώτος πολίτης είναι μια διαμόρφωση κατασκευής. Υπάρχουν επίσης διαμορφώσεις ανάπτυξης. Ζουν μέσα σε ένα έργο. Αλλά το ίδιο το έργο θα μπορούσε να είναι μέρος μιας μεγαλύτερης ιεραρχίας έργων, όπως: "Έργα για τον πελάτη Α" ή "Έργα με Symfony backend". Αυτό διοργανώνει τόσο καλά το Έργο-Πίνακα Ελέγχου. Είναι δυνατό να κληρονομήσετε τις ρυθμίσεις και τις μεταβλητές από τα γονικά έργα επίσης - ένα χαρακτηριστικό δολοφόνος.

Meta Runners (θα σβήσει το μυαλό σου)

Έχετε πολλές διαμορφώσεις κατασκευής; Χτίζουν διαφορετικά, αλλά εκτελείτε πάντα τις δοκιμές σας με τον ίδιο τρόπο; (για παράδειγμα: δοκιμές λειτουργίας νήματος). Το Teamcity έχει το χαρακτηριστικό γνώρισμα για εσάς: ονομάζεται meta runners. Μπορείτε να τα εξαγάγετε από μία από τις διαμορφώσεις που έχετε δημιουργήσει και να τα χρησιμοποιήσετε ως μια συλλογή βημάτων δημιουργίας που θα συνδυαστούν για άλλες διαμορφώσεις κατασκευής. Το meta runner παρέχεται ως xml, το οποίο μπορείτε να ρυθμίσετε. Εφαρμόστε το meta runner σε άλλα config constructs και τα ίδια ακριβώς βήματα θα ονομάζονται κάθε φορά που θα εκτελεστεί το build. Είναι δυνατή η παροχή παραμέτρων στον δρομέα meta.

XML Ορισμός ενός μεταγλωττιστή

Αυτό με χτύπησε από τα πόδια μου. Αν το ήξερα μόνο πριν από μερικά χρόνια: θα με έσωσε πολύ άγχος! Χρησιμοποιώ τους μεταγλωττιστές για να συνδέσω τα βήματα δημιουργίας για να εκτελέσω ολόκληρη τη σουίτα δοκιμών μου. Π.χ. εκτελέστε δοκιμές νήματος με phpunit, αναλύστε τις αναφορές δοκιμών και καθαρίστε.

Μεταφορτώστε τα κλειδιά ssh

Είναι τόσο δύσκολο να χρησιμοποιήσετε τα διαπιστευτήρια ssh στο μπαμπού. Είναι τόσο εύκολο να το κάνεις αυτό στην Teamcity. Μπορείτε να μεταφορτώσετε τα κλειδιά από τον περιβάλλον χρήστη ή απλά να τα αντιγράψετε σε ένα φάκελο που έχετε τοποθετήσει στην εικόνα του λιμένα. Στη συνέχεια, χρησιμοποιείτε τα πλήκτρα παντού για εργασίες ssh, scp ή rsync. Τόσο εύκολο, τόσο καλά σκέφτηκε - θα ήθελα μόνο να τους παράσχει ένα θησαυροφυλάκιο.

Διαχειριστείτε έναν παράγοντα ssh απευθείας για τις κατασκευές σας

Έχετε ποτέ αντιμετωπίσει προβλήματα πρόσβασης στα ιδιωτικά repos σας κατά την εγκατάσταση με το συνθέτη; Έχετε ποτέ την ανάγκη να εκδώσετε εντολές ssh στις κατασκευές σας; Ολη την ώρα? Σωστά!
Μια λειτουργία Buildingcity build σας επιτρέπει να προσθέσετε ssh πιστοποιήσεις στην κατασκευή σας. Στη συνέχεια δημιουργεί έναν ssh-agent, ο οποίος σας επιτρέπει να χρησιμοποιήσετε το ssh σε σελιδοδείκτες inline. Αυτό είναι τόσο εύκολο στη χρήση και καθαρό. Γιατί κανείς δεν το σκέφτηκε;

"Επιλέξτε ένα αρχείο" -διαλόγους

Δεν μπορώ να καταγράψω όλα τα πράγματα στο UI που σας κάνουν να νιώσετε σαν: "Ω! Αυτό είναι βολικό ". Εδώ είναι μόνο ένα παράδειγμα. Όταν αναφερθείτε σε αρχεία ρυθμίσεων σε plugins στο μπαμπού, πρέπει πάντα να θυμάστε τη σχετική διαδρομή και πότε ήταν ξανά ο τρέχων κατάλογος εργασίας; Στην ομάδα ομάδας, κάντε κλικ στο εικονίδιο μικροσκόπιο δίπλα στις ρυθμίσεις παραμέτρων και την έκρηξη: σας παραθέτει τον πιο πρόσφατο ελεγχόμενο δέντρο πηγής από το χώρο αποθήκευσής σας.

Παρακολουθήστε τις δοκιμές σας, ζωντανά και άμεσα!

Ένας τεράστιος πόνος από το μπαμπού είναι οι δοκιμές αναφοράς και η κατασκευή καταγραφών. Όταν όλα πάνε στραβά, πρέπει να μεταβείτε σε ένα μη μορφοποιημένο μη επισημανθέν αρχείο καταγραφής για να εντοπίσετε ποια δοκιμαστική περίπτωση αποτυγχάνει. Λείπουν ενοποιήσεις για εργαλεία όπως το phpunit ή άλλοι συνηθισμένοι δρομείς δοκιμής σας αναγκάζουν να το κάνετε αυτό από καιρό σε καιρό στο μπαμπού.

Η εξέλιξη των δοκιμών εμφανίζεται ζωντανά κατά την οικοδόμηση

Στο Teamcity οι δοκιμές παρατίθενται στο UI στα αποτελέσματα κατασκευής σας. Εξάγει την τρέχουσα δοκιμή λειτουργίας, την πρόοδο και τα αποτελέσματα των δοκιμών απευθείας από την έξοδο γραμμής εντολών. Αν χρησιμοποιείτε το phpunit, το μόνο που έχετε να κάνετε είναι να προσθέσετε το -log-teamcity στην κλήση phpunit και το Teamcity θα παραλάβει τα αποτελέσματα των δοκιμών ζωντανά από τα αρχεία καταγραφής. Αυτή είναι η καλύτερη ένδειξη προόδου που είχα ποτέ.

Ποτέ δεν σκέφτηκα…

... ότι θα ήμουν στην ΑΓΑΠΗ με έναν συνεχή διακομιστή ολοκλήρωσης και πάλι. Jetbrains, κάντε κάτι για την εικόνα σας. Αξίζετε να είστε ο βασιλιάς των CI-Servers, σοβαρά.

Αποποίηση: Το Jetbrains δεν μου πλήρωσε ή με ενθάρρυνε να γράψω αυτό το κομμάτι.

Ήθελα αυτό να είναι ένας έπαινος για την Teamcity, όχι για ένα μπαμπού. Εάν ενδιαφέρεστε για ένα κομμάτι για το "τι συμβαίνει στο μπαμπού" επιτρέψτε μου να ξέρω! Θα χαρώ να επεξεργαστώ.

Παρακαλώ ακολουθήστε με στο twitter!