Pipeline ως κώδικας που εξηγείται με τον απλούστερο δυνατό τρόπο

Στην ανάπτυξη λογισμικού, οι αγωγοί CI/CD ή Continuous Integration/Continuous Delivery βοηθούν στη δημιουργία και την ανάπτυξη του κώδικά σας σε διαφορετικά περιβάλλοντα μέσω μιας αυτοματοποιημένης διαδικασίας.
Ωστόσο, η δημιουργία και η διατήρηση αυτού του αγωγού από μόνη της μπορεί να γίνει μια πρόκληση. Εισαγάγετε το Pipeline ως Code – μια προσέγγιση στην οποία δημιουργείτε ολόκληρη τη διοχέτευση CI/CD σε μορφή κώδικα. Αντί να βασίζεστε σε Διεπαφές χρήστη Ιστού και εργαλεία μεταφοράς και απόθεσης, χρησιμοποιείτε αρχεία διαμόρφωσης για να καθορίσετε πώς θα δημιουργηθεί, θα δοκιμαστεί και θα αναπτυχθεί ο κώδικας της εφαρμογής σας.
Αλλά προτού αναφερθούμε στις λεπτομέρειες του Pipeline ως Code και στο πώς μπορείτε να δημιουργήσετε το δικό σας, ας καταλάβουμε πρώτα τι ακριβώς είναι ένας αγωγός.
Πίνακας περιεχομένων
Τι είναι ένας αγωγός στην ανάπτυξη λογισμικού;
Μια διοχέτευση στην ανάπτυξη λογισμικού είναι μια σειρά από αυτοματοποιημένα βήματα που πραγματοποιούν τις τελευταίες αλλαγές στον κώδικα, εκτελούν συγκεκριμένες διαδικασίες σε αυτόν και τον αναπτύσσουν στο περιβάλλον της επιλογής σας. Ας το καταλάβουμε καλύτερα με ένα παράδειγμα.
Φανταστείτε ότι έχετε τρεις microservices και έχετε προσθέσει νέες δυνατότητες σε μία από αυτές. Τώρα, θέλετε να εκτελέσετε τις δοκιμές μονάδας σε επίπεδο κώδικα. Μόλις περάσουν, θέλετε επίσης να ελέγξετε για προβλήματα μορφοποίησης κώδικα. Στη συνέχεια, θέλετε να δημιουργήσετε τον κωδικό σας. Μετά από αυτό, θέλετε να το αναπτύξετε σε δύο διαφορετικά περιβάλλοντα με πολλά μηχανήματα σε κάθε περιβάλλον. Τέλος, θα θέλατε να εκτελέσετε δοκιμές ενοποίησης για να βεβαιωθείτε ότι οι αλλαγές σας είναι συγχρονισμένες με τις άλλες υπηρεσίες.
Μπορείτε να επιλέξετε να κάνετε όλα τα παραπάνω βήματα χειροκίνητα. Αλλά αυτό θα σας πάρει πολύ χρόνο και θα είστε επιρρεπείς σε λάθη. Λοιπόν, υπάρχει τρόπος να τα αυτοματοποιήσουμε; Ναί! Μπορείτε να δημιουργήσετε μια διοχέτευση και να ορίσετε όλα τα βήματα. Στη συνέχεια, κάθε φορά που κάνετε αλλαγές στον κώδικά σας, μπορείτε να ενεργοποιείτε τη διοχέτευση και να μην ανησυχείτε για τυχόν μη αυτόματα βήματα.
Οφέλη του Pipeline ως Code
Εάν χρησιμοποιείτε εργαλεία όπως μεταφορά και απόθεση, τότε θα είναι δύσκολο για εσάς να παρακολουθείτε τις αλλαγές, να διατηρήσετε την τυποποίηση ή να προωθήσετε τη συνεργασία. Το Pipeline as Code είναι ένας καλύτερος τρόπος για να ορίσετε τη γραμμή ανάπτυξης λογισμικού σας.
Βοηθά τα πράγματα να είναι συνεπή. Με την προώθηση του αυτοματισμού, αποκτάτε επαναληψιμότητα και χρησιμοποιείτε τον ίδιο αγωγό για άλλα συστήματα. Και ακριβώς όπως ο κώδικας εφαρμογής, ο κώδικας που χρησιμοποιείται για τον καθορισμό του αγωγού σας προωθεί τη συνεργασία.
#1. Συνοχή
Ο ορισμός σε μορφή κειμένου διασφαλίζει ότι τίποτα δεν συμβαίνει εκτός λειτουργίας. Επιβάλλοντας μια τυπική ροή εργασίας για όλες τις εκδόσεις και τις αναπτύξεις εφαρμογών σας, έχετε συνέπεια και μειώνετε τον κίνδυνο απροσδόκητων ζητημάτων.
Και με συνέπεια, κερδίζετε επίσης ελέγχους συμμόρφωσης και ασφάλεια. Η διασφάλιση μιας συνεπούς διοχέτευσης σάς επιτρέπει να ορίζετε τις σαρώσεις ασφαλείας και τους ελέγχους ευπάθειας έτσι ώστε τίποτα να μην σας ξεπερνά.
#2. Επαναληψιμότητα
Δημιουργήστε τον αγωγό σας και ορίστε την αυτοματοποίηση. Εκτός από τη συνέπεια, η αυτοματοποιημένη διοχέτευση σας διασφαλίζει ότι κάθε κώδικας εφαρμογής περνά από τα ίδια στάδια και ελέγχους.
Ο κώδικάς σας θα ρέει μέσω της ίδιας διαδικασίας κατασκευής και ανάπτυξης κάθε φορά που εκτελείτε τη διοχέτευση σας. Διατηρείτε την επαναληψιμότητα σε όλες τις διαδρομές σας.
#3. Συνεργασία
Με τον κώδικα να είναι το μέσο με το οποίο δημιουργείτε τη διοχέτευσή σας, προωθείτε τη συνεργασία. Πολλά άτομα στις ομάδες σας μπορούν να συνεισφέρουν στον ίδιο κώδικα, όπως ακριβώς κάνετε εσείς για τον κώδικα εφαρμογής.
Το Pipeline as Code σάς επιτρέπει επίσης να διατηρείτε τον έλεγχο έκδοσης και να επιτρέπετε ελέγχους κώδικα. Αυτό διασφαλίζει ότι ακολουθούνται οι βέλτιστες πρακτικές και ότι τα πιθανά ζητήματα εντοπίζονται έγκαιρα.
Τώρα, ας δούμε πώς μπορείτε να δημιουργήσετε το δικό σας αγωγό χρησιμοποιώντας το Pipeline ως κώδικα.
Pipeline ως κώδικας στο Jenkins
Όταν πρόκειται για συστήματα συνεχούς ενοποίησης και συνεχούς ανάπτυξης (CI/CD), Τζένκινς είναι ο κορυφαίος διακομιστής αυτοματισμού ανοιχτού κώδικα. Με το Jenkins, μπορείτε να ενσωματώσετε αβίαστα τις αλλαγές του κώδικα, να αυτοματοποιήσετε τη δοκιμή και τη δημιουργία και να αναπτύξετε λογισμικό. Και μπορείτε να τα κάνετε όλα αυτά αξιόπιστα και αποτελεσματικά.
Είτε είστε χομπίστας που προσπαθεί να μάθετε περισσότερα για τους αγωγούς αυτοματισμού είτε κατασκευάζετε πολύπλοκα εταιρικά συστήματα, η Jenkins πληροί όλες τις μοναδικές απαιτήσεις του έργου σας. Η αφθονία των προσθηκών και η συνεχώς αναπτυσσόμενη κοινότητα μπορούν να σας βοηθήσουν να αξιοποιήσετε στο έπακρο τον αυτοματισμό σας.
Στο Jenkins, ένας Pipeline είναι ένα σύνολο διαφόρων διαφορετικών προσθηκών που ορίζονται με μια συγκεκριμένη σειρά που δημιουργεί το σύστημά σας CI/CD. Είτε πρόκειται για απλές είτε περίπλοκες περιπτώσεις χρήσης, μπορείτε να δημιουργήσετε τη διοχέτευσή σας χρησιμοποιώντας κώδικα με το Σύνταξη ειδικής γλώσσας τομέα αγωγού (DSL).. Το DSL είναι χτισμένο πάνω από Apache Groovy.
Το θεμέλιο του Pipeline as Code στο Jenkins είναι το Jenkinsfile – ένα αρχείο κειμένου που περιέχει κώδικα που περιγράφει όλα τα διαφορετικά στάδια και ενέργειες. Ας μάθουμε πώς να δημιουργήσετε το Pipeline σας ως κώδικα χρησιμοποιώντας το Jenkinsfile.
Πώς να δημιουργήσετε τον αγωγό σας ως κώδικα;
Αφού εγκαταστήσετε και εκκινήσετε το Jenkins, μεταβείτε στη διεπαφή χρήστη Web στο πρόγραμμα περιήγησής σας. Ίσως χρειαστεί να συνδεθείτε. Στη συνέχεια, θα καταλήξετε στην κύρια σελίδα του Πίνακα ελέγχου. Θα ξεκινήσετε από εδώ και θα δημιουργήσετε τον αγωγό σας.
Ας ξεκινήσουμε με μια απλή διοχέτευση που μπορείτε να διαμορφώσετε απευθείας από τη διεπαφή χρήστη.
Δημιουργία Pipeline ως Code απευθείας στο Jenkins
Μόλις βρεθείτε στην ενότητα Pipeline, είστε έτοιμοι να δημιουργήσετε τον πρώτο σας Pipeline ως Code.
Από το αναπτυσσόμενο μενού Ορισμός, επιλέξτε την επιλογή δέσμη ενεργειών Pipeline. Κάτω από αυτό, θα βρείτε μια περιοχή Script όπου μπορείτε να κωδικοποιήσετε τη διοχέτευσή σας. Ο Τζένκινς διατηρεί το σενάριο που δημιουργήθηκε εδώ.
Το Jenkins σάς επιτρέπει να επιλέξετε μεταξύ δύο στυλ ή συντακτικών κωδικοποίησης – Δηλωτική Σύνταξη και Σενάριο Σύνταξης. Ενώ το Declarative είναι εύκολο στη χρήση και ιδανικό για απλούς αγωγούς, το Scripted Syntax είναι για δυναμικούς χρήστες και για το σχεδιασμό πολύπλοκων ροών.
Χρησιμοποιώντας τη δηλωτική σύνταξη, δημιουργήστε 3 απλά στάδια – Κώδικας δόμησης, Κώδικας δοκιμής και κώδικα ανάπτυξης, χρησιμοποιώντας το ακόλουθο απόσπασμα κώδικα:
pipeline { agent any stages { stage('Build Code') { steps { echo 'This is the step for build...' } } stage('Test Code') { steps { echo 'This is the step to test...' } } stage('Deploy Code') { steps { echo 'This step deploys the code...' } } } }
Μπορείτε επίσης να χρησιμοποιήσετε τη Σύνταξη με σενάρια όπως φαίνεται παρακάτω:
node { stage('Build Code') { echo 'This is the step for build...' } stage('Test Code') { echo 'This is the step to test...' } stage('Deploy Code') { echo 'This step deploys the code...' } }
Κάντε κλικ στην Αποθήκευση. Τώρα, κάντε κλικ στο κουμπί Δημιουργία τώρα που υπάρχει στον αριστερό πίνακα. Αυτό θα ενεργοποιήσει τη διοχέτευση που μόλις δημιουργήσατε.
Μόλις ολοκληρωθεί η διοχέτευσή σας, μπορείτε να την ελέγξετε στο Ιστορικό κατασκευής. Εάν αυτή είναι η πρώτη σας εκτέλεση, κάντε κλικ στον αριθμό κατασκευής #1 που υπάρχει. Στη συνέχεια, κάντε κλικ στην Έξοδος Κονσόλας που υπάρχει στον αριστερό πίνακα. Θα βρείτε τις 3 δηλώσεις ηχούς που έχετε στον κώδικα διοχέτευσης σε κάθε στάδιο.
Δημιουργήστε Pipeline ως κώδικα χρησιμοποιώντας ένα εξωτερικό αρχείο
Γίνεται πρόκληση να διατηρήσετε τον αγωγό σας απευθείας στο Jenkins όταν αρχίζει να γίνεται πολύπλοκος. Σε αυτήν την περίπτωση, θα θέλατε να δημιουργήσετε ένα εξωτερικό αρχείο και να το χρησιμοποιήσετε.
Πριν δημιουργήσετε τη διοχέτευση Jenkins, χρειάζεστε ένα εξωτερικό αποθετήριο και ένα σύστημα ελέγχου έκδοσης. Ας δημιουργήσουμε ένα αποθετήριο Git και ας το φιλοξενήσουμε εξ αποστάσεως στο GitHub. Θα δημιουργήσετε το Jenkinsfile σας και θα το αποθηκεύσετε εδώ.
pipeline { agent any stages { stage('Build Code') { steps { echo 'This is the step for build defined in custom file...' } } stage('Test Code') { steps { echo 'This is the step to test defined in custom file...' } } stage('Deploy Code') { steps { echo 'This step defined in custom file deploys the code...' } } } }
Τώρα δημιουργήσατε ένα απομακρυσμένο αποθετήριο στο GitHub που περιέχει ένα προσαρμοσμένο αρχείο Jenkinsfile. Ας διαμορφώσουμε τον Jenkins ώστε να το χρησιμοποιεί.
Διαμορφώστε το Jenkins ώστε να χρησιμοποιεί το Jenkinsfile από το GitHub
Μετά από αυτό, εκτελέστε τη διοχέτευση σας. Ο Jenkins θα πάρει πρώτα τον κωδικό σας από το απομακρυσμένο αποθετήριο. Στη συνέχεια, θα δημιουργήσει μια διοχέτευση χρησιμοποιώντας το προσαρμοσμένο αρχείο Jenkinsfile και θα εκτελέσει όλα τα στάδια.
Τώρα δημιουργήσατε με επιτυχία τη δική σας γραμμή ανάπτυξης λογισμικού χρησιμοποιώντας το Pipeline ως κώδικα. Επιπλέον, έχετε ενεργοποιήσει τον έλεγχο έκδοσης στο σενάριο διοχέτευσης. Οποιεσδήποτε αλλαγές κάνετε στον κώδικα διοχέτευσης μπορούν πλέον να παρακολουθούνται με κάθε δέσμευση Git. Στη συνέχεια, ήρθε η ώρα να δούμε τις βέλτιστες πρακτικές.
Βέλτιστες πρακτικές για τη σύνταξη αποτελεσματικού αγωγού ως κώδικα
Ας δούμε τις βέλτιστες πρακτικές που πρέπει να ακολουθήσετε όταν γράφετε το Pipeline σας ως κώδικα.
- Διατηρήστε τον αγωγό σας καθαρό και αποφύγετε να γράψετε πάρα πολλές περίπλοκες συνθήκες.
- Εάν εκτελείτε πάρα πολλές εντολές εντός του αγωγού, τότε χωρίστε τις σε διαφορετικά βήματα.
- Χρησιμοποιήστε εξωτερικά αρχεία με έλεγχο έκδοσης για το Pipeline σας ως σενάρια κώδικα.
- Χρησιμοποιήστε τις δυνατότητες της γλώσσας κωδικοποίησης, όπως η Groovy, για να ενσωματώσετε διαφορετικά βήματα.
- Αποφύγετε τις κλήσεις προς το Jenkins.getInstance ή τα εξαρτήματά του για τον μετριασμό ζητημάτων ασφάλειας και απόδοσης.
- Μην αντικαθιστάτε τις ενσωματωμένες εντολές διοχέτευσης όπως sh και timeout.
- Δημιουργήστε εξωτερικά εργαλεία ή σενάρια για σύνθετες εργασίες έντασης CPU και συνδέστε τα στο pipeline σας.
- Αξιοποιήστε τη μεγάλη ποικιλία των υπαρχόντων προσθηκών που είναι διαθέσιμες για το Jenkins για να αντιμετωπίσετε την περίπτωση χρήσης σας.
- Βεβαιωθείτε ότι έχετε ενσωματώσει τον χειρισμό εξαιρέσεων και σφαλμάτων, καθώς τα πράγματα μπορεί να πάνε στραβά.
- Μην κάνετε το Pipeline σας ως Κώδικα στενά συνδυασμένο με πολλή επιχειρηματική λογική μέσα του.
- Χρησιμοποιήστε παραμετροποιημένα ορίσματα όπου είναι δυνατόν για να κάνετε τη διοχέτευσή σας επαναχρησιμοποιήσιμη.
Pipeline as Code: A Simple Approach for Complex Processes
Συνοπτικά, το Pipeline as Code απλοποιεί την αυτοματοποίηση του αγωγού CI/CD σας αναπαριστά την όλη διαδικασία ως κώδικα. Ενώ οι αγωγοί CI/CD αυτοματοποιούν τη δημιουργία, τη δοκιμή και την ανάπτυξη των αλλαγών του κώδικά σας, η μόχλευση του Pipeline as Code το πηγαίνει ένα βήμα παραπέρα. Σας επιτρέπει να ορίζετε τη ροή εργασίας σας σε κείμενο αντί να βασίζεστε σε γραφικές διεπαφές.
Με το Pipeline ως Code, διασφαλίζετε ότι κάθε βήμα στη ροή εργασίας σας πραγματοποιείται με τη σωστή σειρά. Μειώνετε τον κίνδυνο να αντιμετωπίσετε ανεπιθύμητα προβλήματα. Επιπλέον, λαμβάνετε πολλά πλεονεκτήματα -συμπεριλαμβανομένης της συνέπειας, της επαναληψιμότητας και της προώθησης της συνεργασίας.
Χρησιμοποιώντας αυτόν τον οδηγό, τώρα ξέρετε πώς να δημιουργήσετε τις δικές σας αγωγές χρησιμοποιώντας το Jenkins, ένα ευρέως χρησιμοποιούμενο εργαλείο CI/CD. Η Jenkins προσφέρει μια ισχυρή και ευέλικτη πλατφόρμα για την εφαρμογή του Pipeline ως Code μέσω του Jenkinsfile της. Ακολουθήστε τις βέλτιστες πρακτικές και δημιουργήστε ροές εργασίας που αντιμετωπίζουν όλες τις περιπτώσεις χρήσης αγωγών.
Αν θέλετε να μάθετε περισσότερα για το Jenkins, μπορείτε να δείτε πώς να δημιουργήσετε το δικό σας αγωγό Jenkins.