Πώς να ρυθμίσετε τη συνεχή ανάπτυξη στο οικιακό σας έργο με τον εύκολο τρόπο

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

Και σε αυτό το άρθρο, θέλω να σας δείξω πώς να το ολοκληρώσετε εύκολα στο σπίτι σας.

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

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

Θα μάθετε για τα εξής:

  • Πώς να φτιάξετε ένα Dockerfile
  • Πώς να προωθήσετε το έργο σας στο GitHub
  • Δημιουργία αυτόματα την εικόνα του docker στο Docker Hub
  • Αυτόματη λήψη και εκτέλεση της εικόνας με το Παρατηρητήριο

Προαπαιτούμενα:

  • Κάποιες γνώσεις για το Docker και το Dockerfile, αν και θα το εξηγήσω μερικά από αυτά
  • Έχετε εγκαταστήσει το git
  • Ένας λογαριασμός Docker Hub
  • Ένας διακομιστής (Linux) (φυσικός ή εικονικός) που εκτελεί το Docker

Για αναφορά, αυτό είναι το παράδειγμα αποθετηρίου GitHub και αυτό είναι το παράδειγμα αποθετηρίου hub docker που θα χρησιμοποιώ.

Επομένως, αυτό το σεμινάριο θα είναι χρήσιμο μόνο εάν σκοπεύετε να εκτελέσετε το λογισμικό σας με το Docker (το οποίο προτείνω ως Docker είναι φανταστικό).

Γιατί να χρησιμοποιήσετε το Docker;

Το Docker σάς δίνει τη δυνατότητα να έχετε το ίδιο περιβάλλον για ανάπτυξη και παραγωγή που εξαλείφει τα Heisenbugs και το πρόβλημα «λειτουργεί στο μηχάνημά μου». Επίσης, είναι απομονωμένα δοχεία που μας προσφέρουν οφέλη ασφαλείας.

Υπάρχουν πολλά περισσότερα, αλλά αυτά τα δύο οφέλη με κάνουν να παραδίδω πάντα το λογισμικό μου σε κοντέινερ Docker.

Ρύθμιση του Dockerfile

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

Ένα Dockerfile ξεκινά με τη FROMδήλωση που λέει στο Docker με ποια βασική εικόνα θέλετε να ξεκινήσετε. Μπορείτε να το φανταστείτε ως χρήση καμβά με το φόντο που έχει ήδη σχεδιαστεί και μόνο το κεντρικό τμήμα (το πρόγραμμά σας) λείπει.

Τις περισσότερες φορές η εικόνα που θέλετε να τραβήξετε είναι η βασική εικόνα της γλώσσας προγραμματισμού, την οποία μπορείτε να βρείτε στο προαναφερθέν Docker Hub.

Στη συνέχεια, αντιγράφουμε τα αρχεία του έργου μας στο κοντέινερ με την COPY..εντολή. Τι κάνει αυτό;

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

Στη συνέχεια, πρέπει να εγκαταστήσουμε εξαρτήσεις, για τις οποίες θα χρησιμοποιήσω python pip, αλλά οποιοδήποτε αντίστοιχο σύστημα διαχείρισης πακέτων ανάλογα με τη γλώσσα επιλογής σας θα κάνει. Το κρίσιμο πράγμα που πρέπει να μάθετε εδώ είναι πώς να εκτελέσετε εντολές στο κοντέινερ με το RUN.

From python:3.7COPY . .RUN pip install -r requirements.txt

Εύκολο, έτσι δεν είναι; Τώρα πρέπει να ξεκινήσουμε το πρόγραμμά μας στο κοντέινερ.

CMD ["python", "./my_script.py"]

Η δήλωση CMD είναι μοναδική. Κάθε Dockerfile πρέπει να το έχει ως την τελευταία του γραμμή επειδή ξεκινά την κύρια διαδικασία στο κοντέινερ.

Ολοκληρώσατε το Dockerfile! Τώρα μπορείτε να δημιουργήσετε χειροκίνητα την εικόνα και το κοντέινερ σας, αλλά θα το παραλείψουμε προς το παρόν.

Τώρα, θα δημιουργήσουμε το αποθετήριο μας στο GitHub, αλλά θυμηθείτε να αφήσετε το "Αρχικοποιήστε αυτό το αποθετήριο με README".

Τότε θα πρέπει να αντιγράψετε το απομακρυσμένο URL.

Ανοίξτε ένα cmd / shell στον ριζικό κατάλογο του έργου σας.

Πρέπει να αρχικοποιήσετε το αποθετήριο git, να προσθέσετε τα αρχεία σας, να διαμορφώσετε το τηλεχειριστήριο, να δεσμεύσετε τα αρχεία και να προωθήσετε το έργο σας στο GitHub.

git initgit add *git remote add origin //github.com//.gitgit commit -a -m "Make Dockerfile ready for CD"git push -u origin master

Τώρα, το αποθετήριο GitHub θα πρέπει να μοιάζει με αυτό:

Συγχαρητήρια, ολοκληρώσατε τη μέση!

Το επόμενο βήμα είναι να συνδέσετε το GitHub με το Docker Hub. Για αυτό, μεταβείτε στις ρυθμίσεις λογαριασμού.

Κάντε κύλιση προς τα κάτω και συνδέστε τον κεντρικό υπολογιστή σας.

Δημιουργήστε το αποθετήριο σας στο hub docker τώρα.

Δώστε στο repo ένα όνομα και κάντε κλικ στο εικονίδιο GitHub (ή Bitbucket, αν αυτό είναι δικό σας). Τώρα επιλέξτε τον οργανισμό σας (συνήθως το όνομα χρήστη σας) και το όνομα του έργου σας. Εάν θέλετε να χρησιμοποιήσετε την κύρια εικόνα σας για το build και να συνεχίσετε να χρησιμοποιείτε το πιο πρόσφατο, μπορείτε τώρα να κάνετε κλικ στο "Δημιουργία και κατασκευή" και να παρακολουθήσετε την εικόνα σας να κατασκευάζεται για εσάς. Διαφορετικά, πρέπει να επεξεργαστείτε τις ρυθμίσεις κατασκευής.

Τελευταία βήματα! Τώρα χρειάζεστε Σκοπιά στο μηχάνημα-στόχο σας.

Το Watchtower είναι ένα πρόγραμμα που τραβά τις τρέχουσες εικόνες του docker και ελέγχει για ενημερώσεις. Εάν υπάρχουν ενημερώσεις, τερματίζει χάρη το αρχικό κοντέινερ και δημιουργεί ένα κοντέινερ από τη νέα εικόνα με τις ίδιες ρυθμίσεις.

Το καλύτερο είναι ότι μπορούμε επίσης να εγκαταστήσουμε το Watchtower with Docker!

Εισαγάγετε τα ακόλουθα στο τερματικό σας:

docker run -d --name watchtower -v /var/run/docker.sock:/var/run/docker.sock v2tec/watchtower

Τότε πρέπει να εκτελέσετε το κοντέινερ Docker για το έργο σας!

docker run -d --name  /

Η επιλογή "-d" κάνει το πρόγραμμά σας να εκτελείται στο παρασκήνιο, οπότε το πρόγραμμα δεν τερματίζεται εάν κλείσετε το τερματικό.

Για να συνοψίσουμε, αν προωθήσετε μια δέσμευση στο αποθετήριο GitHub, το Docker hub θα δημιουργήσει αυτόματα μια εικόνα Docker για εσάς. Στη συνέχεια, αυτή η εικόνα τραβιέται από το WatchTower και εκτελείται με όλες τις αρχικές επιλογές.

Εάν χρειάζεστε βοήθεια σε οποιοδήποτε σημείο μην φοβάστε να ρωτήσετε, είμαι στην ευχάριστη θέση να σας βοηθήσω.

Εάν πρόκειται για τεχνικό πρόβλημα, ένα ζήτημα στο έργο GitHub θα ήταν φοβερό!

Τι γίνεται όμως με τις δοκιμές;

Καλή ερώτηση!

Μπορείτε να χρησιμοποιήσετε το Travis CI για να εκτελέσετε τις δοκιμές σας ταυτόχρονα.

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

Τι γίνεται όμως αν θέλω να δημιουργηθεί η εικόνα του λιμενεργάτη μου μόνο εάν περάσουν οι δοκιμές;

Αυτό σπάει λίγο τη ροή εργασίας μας.

Τώρα δεν μπορούμε να βασιστούμε στο hub docker για να δημιουργήσουμε τις εικόνες μας πια. Αντ 'αυτού, θα είναι επίσης το Travis CI που παράγει την εικόνα και στη συνέχεια την ωθεί στο αποθετήριο του Docker Hub. Διαβάστε για αυτό εδώ.