Προγραμματισμός

CI / CD ως υπηρεσία: 10 εργαλεία για συνεχή ενσωμάτωση και παράδοση στο cloud

Το cloud και η συνεχής ολοκλήρωση (CI) είναι ένας φυσικός συνδυασμός. Ενώ το cloud μας ελευθερώνει από τον πόνο της εγκατάστασης και της συντήρησης φυσικών διακομιστών, η συνεχής ενσωμάτωση αυτοματοποιεί μεγάλο μέρος του πόνου από την κατασκευή, τον έλεγχο και την ανάπτυξη του κώδικα μας. Αν και οι δύο στοχεύουν να πάρουν τη δουλειά από τους ώμους των ομάδων ανάπτυξης, είναι λογικό να τα συνδυάσετε και να εξαλείψετε ακόμη πιο βαρετή δουλειά με ένα βήμα.

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

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

Ορισμένες λίστες εργασιών για τον διακομιστή CI τελειώνουν με τις δοκιμές, αλλά πρόσφατα όλο και περισσότερες ομάδες επεκτείνουν τις λίστες για να συμπεριλάβουν την ανάπτυξη του νέου κώδικα, μια διαδικασία που μερικές φορές ονομάζεται «συνεχής ανάπτυξη». Η πλήρως αυτοματοποιημένη ανάπτυξη κάνει μερικούς ανθρώπους νευρικούς και συχνά προσθέτουν μερικές χειροκίνητες παύσεις στη διαδικασία. Προσθέτοντας λίγο υπευθυνότητα και ανθρώπινη διαβεβαίωση τους επιτρέπει να χαλαρώσουν λίγο. Θα ονομάσουν αυτήν την υβριδική προσέγγιση «συνεχή παράδοση» επειδή παραδίδει τον κώδικα σε κάποιο σύμπλεγμα σταδιοποίησης ή δοκιμών όπου θα περιμένει έναν άνθρωπο να κάνει την τελική ώθηση στην παραγωγή.

Εάν η συνεχής ενσωμάτωση είναι μεγάλη στο δωμάτιο διακομιστή, μπορεί να είναι ακόμα καλύτερη στο cloud όπου υπάρχουν μεγάλες ευκαιρίες για ταχύτερη παράδοση και μεγαλύτερη απόδοση. Στις καλύτερες περιπτώσεις, τα σύννεφα μπορούν να χωρίσουν την εργασία και να εκτελέσουν τις εργασίες παράλληλα. Οι υπηρεσίες ξεκινούν με μια μεγάλη ομάδα υλικού και, στη συνέχεια, το μοιράζονται σε πολλές ομάδες. Εφόσον όλοι δεν προωθούν τον κωδικό τους ταυτόχρονα, οι εκδόσεις και οι δοκιμές θα εκτελούνται πολύ πιο γρήγορα. Η αγορά του ίδιου τεράστιου εξοπλισμού υλικού για τις στιγμές που οι προγραμματιστές θέλουν να εκτελέσουν όλες τις δοκιμές είναι απαγορευτική, αλλά εάν οι ομάδες μοιράζονται το ράφι, μπορούν όλοι να απολαύσουν τις εκρήξεις ταχύτητας.

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

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

Ακολουθούν 10 διαφορετικές επιλογές για συνεχή ενσωμάτωση στο cloud.

CloudBees

Το CloudBees Core ξεκίνησε με τη Jenkins, το γνωστό έργο ανοιχτού κώδικα για συνεχή ενσωμάτωση, στη συνέχεια πρόσθεσε δοκιμές, υποστήριξη και κάποια διαβεβαίωση ότι ο κώδικας θα εκτελεστεί. Η εταιρεία κέρδισε όλα τα πειραματικά πρόσθετα, πρόσθεσε μερικά από τα δικά τους και έπειτα γυαλίζει τα σωστά, ώστε να λειτουργούν όπως αναμενόταν όταν τα χρειάζεστε.

Το CloudBees εξακολουθεί να απασχολεί το 80% της ομάδας ανάπτυξης της Jenkins και συχνά συνεισφέρουν κώδικα στο έργο ανοιχτού κώδικα, οπότε μπορείτε να είστε σίγουροι ότι έχουν καλή κατανόηση αυτής της κυρίαρχης πλατφόρμας. Για να επιταχυνθούν τα πράγματα, το CloudBees πρόσθεσε επίσης εκτεταμένη παραλληλοποίηση καθώς και όργανα για την παρακολούθηση της διαδικασίας ανάπτυξης.

Το CloudBees προσφέρει μια ποικιλία από πόντους τιμών που κυμαίνονται από δωρεάν επίπεδα έως «κιτ εκκίνησης» για ένα ολόκληρο έτος της υπηρεσίας. Η εταιρεία διασπά επίσης επίσης την υποστήριξη της Jenkins για όποιον χρειάζεται βοήθεια με το εργαλείο, αλλά δεν χρειάζεται ή δεν θέλει το cloud computing.

Αγωγός κώδικα AWS

Το εργαλείο Amazon για συνεχή ενσωμάτωση και ανάπτυξη, AWS CodePipeline, βελτιστοποιείται για την παράδοση κώδικα σε διακομιστή AWS, ενώ εξακολουθεί να είναι ανοιχτό σε πιο περίπλοκες διαδρομές για τον κώδικα και τα δεδομένα σας. Το βασικό εργαλείο προσφέρει μια ωραία επιλογή από προκαθορισμένα περιβάλλοντα κατασκευής για τις κύριες γλώσσες (Java, Python, Node.js, Ruby, Go, Android, .Net Core για Linux) και στη συνέχεια απορρίπτει το αποτέλεσμα σε έναν κάδο S3 πριν από την αποστολή του για να ξεκινήσει να εκτελείται.

Υπάρχει ένας εκπληκτικά μεγάλος αριθμός επιπέδων με ελαφρώς διαφορετικά ονόματα. Το CodeBuild αρπάζει την τελευταία σας ιδιοφυΐα από το CodeCommit όταν ενεργοποιείται από το CodePipeline και έπειτα παραδίδει το αποτέλεσμα στο CodeDeploy. Εάν είναι πάρα πολλά πράγματα κώδικα για να διαμορφώσετε, μπορείτε να μεταβείτε απευθείας στο CodeStar, το οποίο προσφέρει ένα άλλο επίπεδο αυτοματισμού. Αν μόνο υπήρχε ένα CodeBugEraserStar για να εξαλείψει αυτόματα όλα μας τα λάθη. Αξίζει να σημειωθεί ότι δεν πληρώνετε τεχνικά για κανένα από αυτά τα επίπεδα κώδικα. Η Amazon σας χρεώνει μόνο για τους υπολογισμούς και τους πόρους αποθήκευσης που χρησιμοποιούνται στην πορεία. Δεν είναι ακριβώς δωρεάν, παρόλο που αισθάνεται έτσι.

Αγωγοί Bitbucket

Η Atlassian, οι προγραμματιστές του δημοφιλούς πίνακα εντοπισμού θέσεων εργασίας, η Jira, και το αποθετήριο κώδικα, Bitbucket, αποφάσισαν να αξιοποιήσουν τη ροή εργασίας μας δημιουργώντας το Bitbucket Pipelines, ένα εργαλείο συνεχούς ενοποίησης στο σύννεφο Bitbucket. Η μυστική σάλτσα είναι πιο ενοποιημένη, σε αυτήν την περίπτωση με τη μορφή συνδέσεων μεταξύ του μηχανισμού κατασκευής και των άλλων εργαλείων της Ατλασίας. Τουλάχιστον αισθητικά, οι σωληνώσεις δεν είναι καν ένα ξεχωριστό πράγμα. Είναι απλώς μια άλλη επιλογή μενού για κάθε έργο στο Bitbucket. Μια άλλη επιλογή μενού δείχνει τις αναπτύξεις, επιτρέποντάς σας να επιλέξετε πού καταλήγουν οι εκδόσεις.

Οι συνδέσεις είναι ευλογία και περιορισμός. Εάν επιλέξετε ένα από τα πρότυπα που έχουν ήδη καθοριστεί για τις κύριες γλώσσες (Java, JavaScript, Python, PHP, .Net κ.λπ.), μπορείτε να δημιουργήσετε και να αναπτύξετε τον κώδικά σας με λίγα κλικ. Αλλά αν απομακρυνθείτε από τα πρότυπα, θα αρχίσετε να διαπιστώνετε ότι οι επιλογές δεν υπάρχουν. Το Atlassian ενθαρρύνει μια αγορά εφαρμογών που φαίνεται να είναι ένα μείγμα γραφημάτων και webhooks σε άλλες υπηρεσίες. Η κορυφαία εφαρμογή στο γράφημα καθώς γράφω αυτό θα συνδέσει το Bitbucket με τη Jenkins, πιθανώς να κάνει κάτι που δεν μπορεί να γίνει γρήγορα μέσα στους τοίχους.

Το βασικό πλεονέκτημα των αγωγών είναι η ταχύτητα. Το Atlassian έχει προκατασκευάσει τις περισσότερες από τις κύριες διαδρομές από κώδικα έως εκτελέσεις και μπορείτε να ακολουθήσετε τα βήματα της εταιρείας με λίγα μόνο δολάρια. Είναι δύσκολο να συγκρίνουμε το κόστος χρήσης του Bitbucket, επειδή οι κατασκευές διατίθενται σε λίγα λεπτά, όπως τα περισσότερα μοντέλα χωρίς διακομιστές, αλλά οι ομάδες συχνά αφιερώνουν ένα σύμπλεγμα παρουσιών για τον χειρισμό των κατασκευών της Jenkins. Ακόμα κι αν τα κλείσετε τις νύχτες και τα σαββατοκύριακα, οι ώρες αυξάνονται.

GitLab CI / CD

Ένας από τους μεγαλύτερους ανταγωνιστές της Atlassian είναι η GitLab, μια άλλη εταιρεία που θέλει να χειριστεί κάθε βήμα της διαδικασίας μεταξύ των δακτύλων σας και της εκτέλεσης της ανάπτυξης. Οι μηχανισμοί κατασκευής, δοκιμών και ανάπτυξης του GitLab συνδέονται επίσης άμεσα με τα αποθετήρια του Git, ώστε να μπορούν να ενεργοποιηθούν βάσει δέσμευσης. Η διαδικασία βασίζεται σε μεγάλο βαθμό σε κοντέινερ Docker και αυτή η προσωρινή αποθήκευση μπορεί να απλοποιήσει σε μεγάλο βαθμό ορισμένες από τις εργασίες διαμόρφωσης που πρέπει να γίνουν γύρω από τις κατασκευές του Jenkins.

Οι εργασίες κατασκευής μπορούν να στοχεύουν οποιαδήποτε γλώσσα, αλλά πρέπει να ενεργοποιούνται από το GitLab Runner, ένα εργαλείο αυτόματης κλιμάκωσης γραμμένο στο Go που είναι έτοιμο για τις περισσότερες πλατφόρμες. Αυτή η ευελιξία σημαίνει ότι μπορείτε να ενεργοποιήσετε οποιαδήποτε τυχαία εργασία σε άλλα μηχανήματα, κάτι που μπορεί να είναι χρήσιμο με περίτεχνες αρχιτεκτονικές που κάνουν κάτι περισσότερο από απλώς την παροχή μικροσυσκευών.

Η τιμολόγηση συνδυάζεται με τα διάφορα επίπεδα για να προσεγγίσει τις ανάγκες. Οι ομάδες χρυσού επιπέδου, για παράδειγμα, λαμβάνουν όλες τις καλύτερες δυνατότητες, όπως πίνακες ελέγχου ασφαλείας και 50.000 λεπτά με βάση το κοινό σύμπλεγμα μηχανών. Δεν υπάρχει καμία χρέωση για τη χρήση των δικών σας μηχανών για μέρος της διαδικασίας ή για ξεχωριστές παρουσίες σε κάποιο άλλο cloud.

ΚύκλοςCI

Πολλά από τα εργαλεία συνεχούς ενοποίησης εστιάζουν στον κώδικα που μπορεί να δημιουργηθεί στο περιβάλλον Linux. Το CircleCI δημιουργεί και προσφέρει στον κόσμο του Linux, αλλά προσφέρει επίσης ένα προϊόν που θα κατασκευάζει εφαρμογές Android και οτιδήποτε βγαίνει από τον Xcode της Apple (για iOS, MacOS, tvOS ή watchOS). Εάν εργάζεστε σε μια ομάδα που παράγει εφαρμογές για αυτές τις πλατφόρμες, μπορείτε να δεσμεύσετε τον κώδικά σας και να επιτρέψετε στο CircleCI να εφαρμόσει κάποια πειθαρχική πειθαρχία σε όλη τη διαφορετική ιδιοφυΐα της ομάδας σας.

Οι λίστες των εργασιών περιγράφονται σε αρχεία YAML. Το CircleCI χρησιμοποιεί το Docker, σε όλη του την πολυεπίπεδη δόξα, για να διαμορφώσει τα περιβάλλοντα δοκιμής για τον κώδικα. Οι κατασκευές ξεκινούν με φρέσκα δοχεία και το ίδιο κάνουν όλες οι δοκιμές. Η εργασία Mac εκτελείται σε εικονικές μηχανές που έχουν παρόμοια μικρή διάρκεια ζωής. Αυτό αποφεύγει ορισμένα από τα προβλήματα με τη διαμόρφωση, επειδή τα καθαρά περιβάλλοντα δεν έχουν υπόλοιπα κομμάτια. (Επομένως, εάν τα προβλήματά σας προκαλούνται από την καθυστέρηση του ψηφιακού flotsam, αυτό είναι δικό σας λάθος.)

Η τιμολόγηση εστιάζεται στο πόσο απορροφά η CPU σας. Ο αριθμός των χρηστών και ο αριθμός των αποθετηρίων περιορίζονται στο άπειρο. Ωστόσο, ο αριθμός των λεπτών κατασκευής και των εμπορευματοκιβωτίων που κάνουν αυτό το κτίριο είναι μετρημένοι. Το πρώτο κοντέινερ είναι δωρεάν και μπορείτε να εκτελέσετε ένα build σε αυτό. Αν θέλετε περισσότερο παραλληλισμό ή περισσότερη απόδοση, το CircleCI κερδίζει χρήματα. Οι χρήστες Mac δεν έχουν την ίδια δωρεάν προσφορά, αλλά υπάρχουν εισαγωγικά σχέδια για οποιονδήποτε δοκιμάζει την υπηρεσία.

Travis CI

Εάν οι κατασκευές σας παράγουν κώδικα που πρέπει να δοκιμαστεί σε κουτιά Windows, τότε το Travis CI σας προσφέρει μία στάση. Η εταιρεία έχει προσφέρει επιλογές MacOS και Linux για κάποιο χρονικό διάστημα, αλλά μόλις κυκλοφόρησε την επιλογή Windows, καθιστώντας απλούστερη την παραγωγή κώδικα που εκτελείται σε ακόμη περισσότερα μέρη.

Οι λίστες εργασιών διατυπώνονται επίσης στο YAML και οι εργασίες εκτελούνται σε καθαρές εικονικές μηχανές με αρκετά τυπική διαμόρφωση. Ο κώδικας Linux λαμβάνει μερικές βασικές εκδόσεις του Ubuntu, ο κώδικας Mac εκτελείται σε έναν από τους δώδεκα συνδυασμούς OS X και Xcode και JDK. Ο κωδικός των Windows μπορεί να καταλήξει μόνο σε μία έκδοση του Windows Server (1803) προς το παρόν. Το Travis CI προσφέρει μια μεγάλη λίστα με 30 γλώσσες και κανόνες δημιουργίας που είναι προ-διαμορφωμένοι και σχεδόν έτοιμοι να εκτελεστούν.

Η τιμολόγηση βασίζεται στον αριθμό των ταυτόχρονων εργασιών που μπορούν να εκτελεστούν ταυτόχρονα, αλλά δεν υπάρχουν επίσημα όρια στον αριθμό των λεπτών που μπορούν να καταλάβουν αυτές οι εκδόσεις. Είναι σαν να λαμβάνετε έναν καθορισμένο αριθμό ειδικών παρουσιών για την εργασία σας και να είναι έτοιμοι όλη την ώρα. Δεν υπάρχουν δωρεάν επιλογές για ιδιόκτητη εργασία, αλλά τα έργα ανοιχτού κώδικα είναι "πάντα δωρεάν" - έτσι μπορεί να είναι ο απλούστερος τρόπος για να δοκιμάσετε το Travis CI.

Αγωγοί Azure

Εάν αναρωτιέστε εάν η σύγχρονη Microsoft έχει τη στάση «Δεν εφευρέθηκε εδώ», μην ψάχνετε περισσότερο από το Azure Pipelines. Η βιβλιογραφία πωλήσεων λέει, «Οποιαδήποτε γλώσσα, οποιαδήποτε πλατφόρμα». Αν και αυτό είναι σχεδόν σίγουρα λίγο υπερβολικό και το Azure πιθανώς δεν έχει πολλά να προσφέρει στους προγραμματιστές ENIAC, προσφέρει εμφανώς διαδρομές Microsoft, Linux και MacOS για τον κώδικά σας. Η γωνιά της Apple στοχεύει μόνο τις εκδόσεις MacOS, όχι iOS ή tvOS ή watchOS, αλλά ας μην γίνουμε επιλεκτικοί. Αυτό είναι ένα ποτήρι που είναι περισσότερο από μισό γεμάτο.

Στην περίληψη, το σύστημα είναι παρόμοιο με τα άλλα. Υπάρχουν πράκτορες που εκτελούν κτήρια για την παραγωγή αντικειμένων. Μερικά από αυτά μπορούν να φιλοξενηθούν μόνοι σας, εάν αυτή η επιλογή σας βοηθήσει. Η στοίβα αγκαλιάζει πλήρως τα κοντέινερ Docker και το υλικό του Azure είναι έτοιμο να τα τρέξει για εσάς. Μπορείτε να κάνετε κλικ σε όλες αυτές τις λεπτομέρειες μαζί με έναν οπτικό σχεδιαστή ενσωματωμένο σε μια ιστοσελίδα ή να προσδιοριστεί με το YAML εάν προτιμάτε να ζείτε στον κόσμο της γραμμής εντολών.

Η τιμολόγηση συνοδεύεται από μια δωρεάν «παράλληλη εργασία» με χρόνο κατασκευής 1800 λεπτών. Αν θέλετε περισσότερο παραλληλισμό ή περισσότερο χρόνο, αρχίζετε να πληρώνετε. Το σχέδιο περιλαμβάνει μια γενναιόδωρη δωρεάν βαθμίδα για έργα ανοιχτού κώδικα, τονίζοντας και πάλι την επιθυμία της Microsoft να συμμετάσχει στη γενική κοινότητα ανοιχτού κώδικα. Αλλά αν η Microsoft πρόκειται να ξοδέψει 7,5 δισεκατομμύρια δολάρια για να αγοράσει μια θέση στο τραπέζι αποκτώντας το GitHub, λοιπόν, έχει νόημα. Πού θα εκτελεστεί αυτός ο κωδικός; Το Azure Pipelines θα χαρεί να το μεταφέρει ομαλά στο υλικό Azure.

$config[zx-auto] not found$config[zx-overlay] not found