Πώς να συνδέσετε το GitLab και το Pantheon και να βελτιστοποιήσετε τις ροές εργασίας Drupal και WordPress

Πώς να συνδέσετε το GitLab και το Pantheon και να βελτιστοποιήσετε τις ροές εργασίας Drupal και WordPress
Ο προσκεκλημένος δημιουργός εργαλείων προγραμματιστή στο Pantheon μιλάει για τον τρόπο αυτοματοποίησης των αναπτύξεων του WordPress χρησιμοποιώντας το GitLab CI/CD.

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

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

Είναι πολύ ευχάριστο να περιμένεις τη σειρά σου να χρησιμοποιήσεις έναν ενδιάμεσο διακομιστή ή να στείλεις στους πελάτες μια διεύθυνση URL με τη σημείωση: «Κοίτα εδώ, αλλά μην κοιτάς ακόμα εδώ».

Περιβάλλοντα Multidev - ένα από τα υπέροχα εργαλεία Pantheon - λύνει αυτό το πρόβλημα, γιατί με αυτά μπορείτε να δημιουργήσετε περιβάλλοντα για υποκαταστήματα Git κατά παραγγελία. Κάθε περιβάλλον multidev έχει τη δική του διεύθυνση URL και βάση δεδομένων, έτσι ώστε οι προγραμματιστές να μπορούν να εργάζονται αθόρυβα, να ελέγχουν την ποιότητα και να λαμβάνουν έγκριση χωρίς να πατούν ο ένας στα δάχτυλα του άλλου.

Αλλά το Pantheon δεν διαθέτει εργαλεία για έλεγχο έκδοσης ή συνεχή ενσωμάτωση και ανάπτυξη (CI/CD). Αλλά είναι μια ευέλικτη πλατφόρμα με την οποία μπορείτε να ενσωματώσετε οποιαδήποτε εργαλεία.

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

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

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

Λατρεύω την αυτοματοποίηση, γι' αυτό έμαθα πώς να συνδέω το Pantheon με το GitLab, έτσι ώστε οι δεσμεύσεις στον κύριο κλάδο στο GitLab να αναπτύσσονται στο κύριο περιβάλλον ανάπτυξης στο Pantheon. Και τα αιτήματα συγχώνευσης στο GitLab μπορούν να δημιουργήσουν και να αναπτύξουν κώδικα σε περιβάλλοντα multidev στο Pantheon.

Σε αυτό το σεμινάριο, θα σας καθοδηγήσω πώς να ρυθμίσετε μια σύνδεση μεταξύ του GitLab και του Pantheon και να βελτιστοποιήσετε τη ροή εργασίας σας στο WordPress και το Drupal.

Φυσικά είναι δυνατόν, mirror αποθετήριο GitLab, αλλά θα κάνουμε τα πάντα με τα χέρια μας για να εμβαθύνουμε GitLab CI και στο μέλλον χρησιμοποιήστε αυτό το εργαλείο όχι μόνο για ανάπτυξη.

Εισαγωγή

Για αυτήν την ανάρτηση, πρέπει να καταλάβετε ότι το Pantheon χωρίζει κάθε ιστότοπο σε τρία στοιχεία: κώδικα, βάση δεδομένων και αρχεία.

Ο κώδικας περιλαμβάνει αρχεία CMS, όπως πυρήνα WordPress, πρόσθετα και θέματα. Η διαχείριση αυτών των αρχείων γίνεται σε Αποθετήρια Git, που φιλοξενείται από το Pantheon, που σημαίνει ότι μπορούμε να αναπτύξουμε κώδικα από το GitLab στο Pantheon με το Git.
Τα αρχεία στο Pantheon είναι αρχεία πολυμέσων, δηλαδή εικόνες για τον ιστότοπο. Συνήθως ανεβαίνουν από χρήστες και το Git τα αγνοεί.

Δημιουργήστε έναν δωρεάν λογαριασμό, μάθετε περισσότερα για Ροή εργασιών Pantheon ή εγγραφείτε για μια επίδειξη στο pantheon.io.

Υποθέσεις

Το έργο μου στο Pantheon και στο GitLab ονομάζεται pantheon-gitlab-blog-demo. Το όνομα του έργου πρέπει να είναι μοναδικό. Εδώ θα εργαστούμε με έναν ιστότοπο WordPress. Μπορείτε να πάρετε το Drupal, αλλά θα χρειαστεί να αλλάξετε κάποια πράγματα.

θα χρησιμοποιήσω Γραμμή εντολών Gitκαι μπορείς να δουλέψεις γραφική διεπαφή, αν θέλεις.

Δημιουργήστε ένα έργο

Αρχικά, ας δημιουργήσουμε Έργο GitLab (θα επανέλθουμε σε αυτό αργότερα).

τώρα δημιουργώντας έναν ιστότοπο WordPress στο Pantheon. Στη συνέχεια εγκαθιστούμε το WordPress για τον πίνακα ελέγχου του ιστότοπου.

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

Μόλις εγκαταστήσουμε το WordPress, επιστρέψτε στον πίνακα ελέγχου του ιστότοπου Pantheon και αλλάξτε τη λειτουργία ανάπτυξης σε Git.

Πώς να συνδέσετε το GitLab και το Pantheon και να βελτιστοποιήσετε τις ροές εργασίας Drupal και WordPress

Αρχική δέσμευση στο GitLab

Τώρα πρέπει να μεταφέρετε τον αρχικό κώδικα του WordPress από τον ιστότοπο Pantheon στο GitLab. Για να γίνει αυτό, κλωνοποιούμε τον κώδικα από το αποθετήριο Git της τοποθεσίας Pantheon τοπικά και στη συνέχεια τον στέλνουμε στο αποθετήριο GitLab.

Για να είναι πιο εύκολο και ασφαλές, προσθέστε ένα κλειδί SSH στο Pantheon και δεν θα χρειάζεται να εισάγουμε κωδικό πρόσβασης κάθε φορά που κλωνοποιούμε ένα αποθετήριο Pantheon Git. Την ίδια στιγμή ήδη προσθέστε ένα κλειδί SSH στο GitLab.

Για να το κάνετε αυτό, κλωνοποιήστε την τοποθεσία Pantheon τοπικά αντιγράφοντας την εντολή από το πεδίο Clone with Git στον πίνακα ελέγχου της τοποθεσίας.

Πώς να συνδέσετε το GitLab και το Pantheon και να βελτιστοποιήσετε τις ροές εργασίας Drupal και WordPress
Εάν χρειάζεστε βοήθεια, διαβάστε την τεκμηρίωση ξεκινώντας με το Git for Pantheon.

Τώρα ας αλλάξουμε git remote originνα δείχνει στο GitLab αντί για το Pantheon. Μπορεί να γίνει командой git remote.

Ας πάμε στο έργο GitLab και ας αντιγράψουμε τη διεύθυνση URL του αποθετηρίου από το αναπτυσσόμενο μενού Clone στη σελίδα λεπτομερειών του έργου. Ας επιλέξουμε την επιλογή Clone with SSH, γιατί έχουμε ήδη διαμορφώσει το κλειδί SSH.

Πώς να συνδέσετε το GitLab και το Pantheon και να βελτιστοποιήσετε τις ροές εργασίας Drupal και WordPress

Από προεπιλογή git remote για ένα τοπικό αντίγραφο του αποθετηρίου κώδικα - origin. Αυτό μπορεί να αλλάξει γ git remote set-url origin [URL репозитория GitLab], όπου αντί για αγκύλες εισάγουμε την πραγματική διεύθυνση URL.

Τέλος, ξεκινάμε git push origin master --forceγια να προωθήσετε τον κώδικα του WordPress από το Pantheon στο GitLab.

Η επιλογή –force χρειάζεται μόνο μία φορά. Μετά σε ομάδες git push δεν θα είναι στο GitLab.

Ρύθμιση διαπιστευτηρίων και μεταβλητών

Θυμάστε πώς προσθέσαμε ένα κλειδί SSH τοπικά για να συνδεθείτε στο Pantheon και στο GitLab; Το διακριτικό SSH μπορεί να χρησιμοποιηθεί για την εξουσιοδότηση του GitLab και του Pantheon.

Το GitLab έχει εξαιρετική τεκμηρίωση. Ας δούμε ενότητα για τα κλειδιά SSH κατά τη χρήση του εκτελεστή Docker στο έγγραφο σχετικά με τη χρήση κλειδιών SSH με GitLab CI/CD.

Θα ολοκληρώσουμε τώρα τα δύο πρώτα βήματα: Ας δημιουργήσουμε ένα νέο ζεύγος κλειδιών SSH τοπικά με το ssh-keygen και ας προσθέσουμε το ιδιωτικό κλειδί ως μεταβλητή στο έργο.

Μετά θα ρωτήσουμε SSH_PRIVATE_KEY как Μεταβλητή περιβάλλοντος GitLab CI/CD στις ρυθμίσεις του έργου.
Στο τρίτο και τέταρτο βήμα θα δημιουργήσουμε ένα αρχείο .gitlab-ci.yml με περιεχόμενο σαν αυτό:

before_script:
  # See https://docs.gitlab.com/ee/ci/ssh_keys/README.html
  - eval $(ssh-agent -s)
  - echo "$SSH_PRIVATE_KEY" | tr -d 'r' | ssh-add - > /dev/null
  - mkdir -p $HOME/.ssh && echo "StrictHostKeyChecking no" >> "$HOME/.ssh/config"
  - git config --global user.email "$GITLAB_USER_EMAIL"
  - git config --global user.name "Gitlab CI"

Ας μην δεσμεύσουμε ακόμα το αρχείο .gitlab-ci.yml, τότε θα χρειαστεί να προσθέσετε κάτι άλλο σε αυτό.

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

Στην περίπτωσή μας, θέλουμε να αποκτήσουμε πρόσβαση στο Pantheon από το GitLab. Ακολουθούμε τις οδηγίες στο έγγραφο Pantheon στο προσθέτοντας ένα κλειδί SSH στο Pantheon και εκτελέστε αυτό το βήμα.

Θυμηθείτε: το ιδιωτικό SSH είναι στο GitLab, το ανοιχτό SSH είναι στο Pantheon.

Ας ρυθμίσουμε μερικές ακόμη μεταβλητές περιβάλλοντος. Το πρώτο ονομάζεται PANTHEON_SITE. Η αξία του είναι το όνομα της τοποθεσίας Pantheon στο μηχάνημά σας.

Το όνομα στο μηχάνημα αναγράφεται στο τέλος της εντολής Clone with Git. Έχετε ήδη κλωνοποιήσει τον ιστότοπο τοπικά, επομένως αυτό θα είναι το όνομα του τοπικού καταλόγου του αποθετηρίου.

Πώς να συνδέσετε το GitLab και το Pantheon και να βελτιστοποιήσετε τις ροές εργασίας Drupal και WordPress

Στη συνέχεια, ας ρυθμίσουμε τη μεταβλητή περιβάλλοντος PANTHEON_GIT_URL. Αυτή είναι η διεύθυνση URL του αποθετηρίου Git για τον ιστότοπο Pantheon που έχουμε ήδη χρησιμοποιήσει.

Εισαγάγετε μόνο τη διεύθυνση URL του αποθετηρίου SSH, χωρίς git clone και το όνομα της τοποθεσίας στο μηχάνημα στο τέλος.

Φτου. Αυτό έγινε, τώρα μπορούμε να ολοκληρώσουμε το αρχείο μας .gitlab-ci.yml.

Δημιουργήστε μια εργασία ανάπτυξης

Αυτό που θα κάνουμε αρχικά με το GitLab CI μοιάζει πολύ με αυτό που κάναμε με τα αποθετήρια Git στο παρελθόν. Αλλά αυτή τη φορά, ας προσθέσουμε το αποθετήριο Pantheon ως μια δεύτερη απομακρυσμένη πηγή Git και, στη συνέχεια, ωθήσουμε τον κώδικα από το GitLab στο Pantheon.

Για να γίνει αυτό, ας ρυθμίσουμε τις παραμέτρους στάδιο deploy и έργο deploy:dev, γιατί θα επεκταθούμε στο περιβάλλον ανάπτυξης στο Pantheon. Το αρχείο που προκύπτει .gitlab-ci.yml Θα μοιάζει με αυτό:

stages:
- deploy

before_script:
  # See https://docs.gitlab.com/ee/ci/ssh_keys/README.html
  - eval $(ssh-agent -s)
  - echo "$SSH_PRIVATE_KEY" | tr -d 'r' | ssh-add - > /dev/null
  - mkdir -p $HOME/.ssh && echo "StrictHostKeyChecking no" >> "$HOME/.ssh/config"
  - git config --global user.email "$GITLAB_USER_EMAIL"
  - git config --global user.name "Gitlab CI"

deploy:dev:
  stage: deploy
  environment:
    name: dev
    url: https://dev-$PANTHEON_SITE.pantheonsite.io/
  script:
    - git remote add pantheon $PANTHEON_GIT_URL
    - git push pantheon master --force
  only:
    - master

Μεταβλητές SSH_PRIVATE_KEY, PANTHEON_SITE и PANTHEON_GIT_URL θα πρέπει να φαίνεται οικείο - έχουμε ρυθμίσει αυτές τις μεταβλητές περιβάλλοντος νωρίτερα. Με αυτές τις μεταβλητές θα μπορούμε να χρησιμοποιήσουμε τις τιμές στο αρχείο .gitlab-ci.yml πολλές φορές και θα χρειαστεί να ενημερωθούν μόνο σε ένα μέρος.

Τέλος, προσθέστε, δεσμεύστε και στείλτε το αρχείο .gitlab-ci.yml στο GitLab.

Έλεγχος της ανάπτυξης

Αν κάναμε τα πάντα σωστά, το έργο deploy:dev θα τρέξει με επιτυχία στο GitLab CI/CD και θα υποβάλει μια δέσμευση .gitlab-ci.yml στο Πάνθεον. Ας ρίξουμε μια ματιά.

Πώς να συνδέσετε το GitLab και το Pantheon και να βελτιστοποιήσετε τις ροές εργασίας Drupal και WordPress

Πώς να συνδέσετε το GitLab και το Pantheon και να βελτιστοποιήσετε τις ροές εργασίας Drupal και WordPress

Πώς να συνδέσετε το GitLab και το Pantheon και να βελτιστοποιήσετε τις ροές εργασίας Drupal και WordPress

Αποστολή νημάτων αιτημάτων συγχώνευσης στο Pantheon

Εδώ θα χρησιμοποιήσουμε την αγαπημένη μου λειτουργία Pantheon − multidev, όπου μπορείτε να δημιουργήσετε πρόσθετα περιβάλλοντα Pantheon για υποκαταστήματα Git κατά παραγγελία.

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

Πρώτα ας δημιουργήσουμε ένα νέο κλάδο Git τοπικά χρησιμοποιώντας git checkout -b multidev-support. Τώρα ας αλλάξουμε κάτι ξανά .gitlab-ci.yml.

Μου αρέσει να συμπεριλάβω τον αριθμό αιτήματος συγχώνευσης στο όνομα περιβάλλοντος Pantheon. Για παράδειγμα, το πρώτο αίτημα συγχώνευσης είναι mr-1, δεύτερο - mr-2 και τα λοιπά.

Το αίτημα συγχώνευσης αλλάζει, επομένως πρέπει να προσδιορίσουμε δυναμικά τα ονόματα των υποκαταστημάτων Pantheon. Είναι εύκολο στο GitLab - απλά πρέπει να το χρησιμοποιήσετε προκαθορισμένες μεταβλητές περιβάλλοντος.

Μπορούμε να πάρουμε $CI_MERGE_REQUEST_IIDγια να καθορίσετε τον αριθμό αιτήματος συγχώνευσης. Ας τα εφαρμόσουμε όλα αυτά μαζί με τις καθολικές μεταβλητές περιβάλλοντος που καθορίσαμε νωρίτερα και ας προσθέσουμε μια νέα εργασία deploy:multidev στο τέλος του αρχείου .gitlab-ci.yml.

deploy:multidev:
  stage: deploy
  environment:
    name: multidev/mr-$CI_MERGE_REQUEST_IID
    url: https://mr-$CI_MERGE_REQUEST_IID-$PANTHEON_SITE.pantheonsite.io/
  script:
    # Checkout the merge request source branch
    - git checkout $CI_COMMIT_REF_NAME
    # Add the Pantheon git repository as an additional remote
    - git remote add pantheon $PANTHEON_GIT_URL
    # Push the merge request source branch to Pantheon
    - git push pantheon $CI_COMMIT_REF_NAME:mr-$CI_MERGE_REQUEST_IID --force
  only:
    - merge_requests

Θα είναι παρόμοιο με το καθήκον μας deploy:dev, μόνο το υποκατάστημα στέλνεται στο Πάνθεον, όχι στο master.

Προσθέσαμε και δεσμεύσαμε το ενημερωμένο αρχείο .gitlab-ci.yml, και τώρα ας προωθήσουμε έναν νέο κλάδο στο GitLab με git push -u origin multidev-support.

Τώρα ας δημιουργήσουμε ένα νέο αίτημα συγχώνευσης από το υποκατάστημα multidev-supportκάνοντας κλικ Δημιουργία αιτήματος συγχώνευσης.

Πώς να συνδέσετε το GitLab και το Pantheon και να βελτιστοποιήσετε τις ροές εργασίας Drupal και WordPress

Έχοντας δημιουργήσει ένα αίτημα συγχώνευσης, εξετάζουμε πώς εκτελείται η εργασία CI/CD deploy:multidev.

Πώς να συνδέσετε το GitLab και το Pantheon και να βελτιστοποιήσετε τις ροές εργασίας Drupal και WordPress

Κοιτάξτε, ένα νέο νήμα έχει σταλεί στο Pantheon. Αλλά αν πάμε στην ενότητα multidev στον πίνακα ελέγχου του ιστότοπου Pantheon, δεν θα δούμε το νέο περιβάλλον εκεί

Πώς να συνδέσετε το GitLab και το Pantheon και να βελτιστοποιήσετε τις ροές εργασίας Drupal και WordPress

Ας δούμε την ενότητα Git Branches.

Πώς να συνδέσετε το GitLab και το Pantheon και να βελτιστοποιήσετε τις ροές εργασίας Drupal και WordPress

Ως αποτέλεσμα, το νήμα μας mr-1 έφτασε στο Πάνθεον. Ας δημιουργήσουμε ένα περιβάλλον από ένα υποκατάστημα mr-1.

Πώς να συνδέσετε το GitLab και το Pantheon και να βελτιστοποιήσετε τις ροές εργασίας Drupal και WordPress

Έχουμε δημιουργήσει ένα περιβάλλον multidev, τώρα ας επιστρέψουμε στο GitLab και ας δούμε την ενότητα Λειτουργίες > Περιβάλλοντα. Θα δούμε συμμετοχές για dev и mr-1.

Αυτό συμβαίνει επειδή προσθέσαμε μια καταχώριση environment Με όνομα name и url σε εργασίες CI/CD. Εάν κάνουμε κλικ στο εικονίδιο ανοιχτού περιβάλλοντος, θα μεταφερθούμε στη διεύθυνση URL του περιβάλλοντος multidev στο Pantheon.

Αυτοματοποιήστε τη δημιουργία multidev

Κατ 'αρχήν, μπορείτε να σταματήσετε εδώ και απλώς να θυμάστε να δημιουργήσετε ένα περιβάλλον multidev για κάθε αίτημα συγχώνευσης, αλλά αυτή η διαδικασία μπορεί να αυτοματοποιηθεί.

Το Pantheon διαθέτει ένα εργαλείο γραμμής εντολών τέρμα, όπου μπορείτε να εργαστείτε αυτόματα με την πλατφόρμα. Το Terminus σάς επιτρέπει να δημιουργείτε περιβάλλοντα multidev από τη γραμμή εντολών - ιδανικό για GitLab CI.

Χρειαζόμαστε ένα νέο αίτημα συγχώνευσης για να το δοκιμάσουμε. Ας δημιουργήσουμε ένα νέο κλάδο χρησιμοποιώντας git checkout -b auto-multidev-creation.

Για να χρησιμοποιήσετε το Terminus σε εργασίες CI/CD του GitLab, χρειάζεστε ένα διακριτικό μηχανής για έλεγχο ταυτότητας με το Terminus και μια εικόνα κοντέινερ με το Terminus.

Δημιουργία ενός Pantheon Machine Token, αποθηκεύστε το σε ασφαλές μέρος και προσθέστε το ως καθολική μεταβλητή περιβάλλοντος στο GitLab με το όνομα PANTHEON_MACHINE_TOKEN.

Εάν ξεχάσατε πώς να προσθέσετε μεταβλητές περιβάλλοντος GitLab, επιστρέψτε στο σημείο που ορίσαμε PANTHEON_SITE.

Δημιουργία αρχείου Docker με το Terminus

Εάν δεν χρησιμοποιείτε το Docker ή δεν σας αρέσουν τα αρχεία Dockerfile, πάρε την εικόνα μου registry.gitlab.com/ataylorme/pantheon-gitlab-blog-demo:latest και παραλείψτε αυτήν την ενότητα.

Το GitLab έχει ένα μητρώο κοντέινερ, όπου μπορούμε να δημιουργήσουμε και να τοποθετήσουμε το Dockerfile για το έργο μας. Ας δημιουργήσουμε ένα Dockerfile με το Terminus για να δουλέψουμε με το Pantheon.

Το Terminus είναι ένα εργαλείο γραμμής εντολών PHP, οπότε ας ξεκινήσουμε με την εικόνα της PHP. Εγκαθιστώ το Terminus μέσω του Composer, οπότε θα το χρησιμοποιήσω επίσημη εικόνα του Docker Composer. Δημιουργούμε Dockerfile στον κατάλογο τοπικού αποθετηρίου με το ακόλουθο περιεχόμενο:

# Use the official Composer image as a parent image
FROM composer:1.8

# Update/upgrade apk
RUN apk update
RUN apk upgrade

# Make the Terminus directory
RUN mkdir -p /usr/local/share/terminus

# Install Terminus 2.x with Composer
RUN /usr/bin/env COMPOSER_BIN_DIR=/usr/local/bin composer -n --working-dir=/usr/local/share/terminus require pantheon-systems/terminus:"^2"

Ακολουθήστε τις οδηγίες για τη συναρμολόγηση και την αποστολή εικόνων από την ενότητα Δημιουργήστε και προωθήστε εικόνες в τεκμηρίωση μητρώου εμπορευματοκιβωτίωνγια να συλλέξετε μια εικόνα από Dockerfile και σπρώξτε το στο GitLab.

Άνοιγμα της ενότητας μητρώου στο έργο GitLab. Αν όλα πήγαν σύμφωνα με το σχέδιο, η εικόνα μας θα είναι εκεί. Γράψτε έναν σύνδεσμο προς την ετικέτα εικόνας - τη χρειαζόμαστε για το αρχείο .gitlab-ci.yml.

Πώς να συνδέσετε το GitLab και το Pantheon και να βελτιστοποιήσετε τις ροές εργασίας Drupal και WordPress

Τμήμα script στο πρόβλημα deploy:multidev αρχίζει να αναπτύσσεται, οπότε ας το μετακινήσουμε σε ξεχωριστό αρχείο. Δημιουργήστε ένα νέο αρχείο private/multidev-deploy.sh:

#!/bin/bash

# Store the mr- environment name
export PANTHEON_ENV=mr-$CI_MERGE_REQUEST_IID

# Authenticate with Terminus
terminus auth:login --machine-token=$PANTHEON_MACHINE_TOKEN

# Checkout the merge request source branch
git checkout $CI_COMMIT_REF_NAME

# Add the Pantheon Git repository as an additional remote
git remote add pantheon $PANTHEON_GIT_URL

# Push the merge request source branch to Pantheon
git push pantheon $CI_COMMIT_REF_NAME:$PANTHEON_ENV --force

# Create a function for determining if a multidev exists
TERMINUS_DOES_MULTIDEV_EXIST()
{
    # Stash a list of Pantheon multidev environments
    PANTHEON_MULTIDEV_LIST="$(terminus multidev:list ${PANTHEON_SITE} --format=list --field=id)"

    while read -r multiDev; do
        if [[ "${multiDev}" == "$1" ]]
        then
            return 0;
        fi
    done <<< "$PANTHEON_MULTIDEV_LIST"

    return 1;
}

# If the mutltidev doesn't exist
if ! TERMINUS_DOES_MULTIDEV_EXIST $PANTHEON_ENV
then
    # Create it with Terminus
    echo "No multidev for $PANTHEON_ENV found, creating one..."
    terminus multidev:create $PANTHEON_SITE.dev $PANTHEON_ENV
else
    echo "The multidev $PANTHEON_ENV already exists, skipping creating it..."
fi

Το σενάριο βρίσκεται σε έναν ιδιωτικό κατάλογο και δεν επιτρέπει την πρόσβαση στο διαδίκτυο στο Pantheon. Έχουμε ένα σενάριο για τη λογική multidev μας. Ας ενημερώσουμε τώρα την ενότητα deploy:multidev αρχείο .gitlab-ci.ymlώστε να βγει ως εξής:

deploy:multidev:
  stage: deploy
  environment:
    name: multidev/mr-$CI_MERGE_REQUEST_IID
    url: https://mr-$CI_MERGE_REQUEST_IID-$PANTHEON_SITE.pantheonsite.io/
  script:
    # Run the multidev deploy script
    - "/bin/bash ./private/multidev-deploy.sh"
  only:
    - merge_requests

Πρέπει να βεβαιωθούμε ότι οι εργασίες μας εκτελούνται στην προσαρμοσμένη εικόνα που δημιουργήθηκε, οπότε ας προσθέσουμε έναν ορισμό image από τη διεύθυνση URL μητρώου σε .gitlab-ci.yml. Ως αποτέλεσμα, καταλήξαμε σε ένα αρχείο όπως αυτό .gitlab-ci.yml:

image: registry.gitlab.com/ataylorme/pantheon-gitlab-blog-demo:latest

stages:
- deploy

before_script:
  # See https://docs.gitlab.com/ee/ci/ssh_keys/README.html
  - eval $(ssh-agent -s)
  - echo "$SSH_PRIVATE_KEY" | tr -d 'r' | ssh-add - > /dev/null
  - mkdir -p $HOME/.ssh && echo "StrictHostKeyChecking no" >> "$HOME/.ssh/config"
  - git config --global user.email "$GITLAB_USER_EMAIL"
  - git config --global user.name "Gitlab CI"

deploy:dev:
  stage: deploy
  environment:
    name: dev
    url: https://dev-$PANTHEON_SITE.pantheonsite.io/
  script:
    - git remote add pantheon $PANTHEON_GIT_URL
    - git push pantheon master --force
  only:
    - master

deploy:multidev:
  stage: deploy
  environment:
    name: multidev/mr-$CI_MERGE_REQUEST_IID
    url: https://mr-$CI_MERGE_REQUEST_IID-$PANTHEON_SITE.pantheonsite.io/
  script:
    # Run the multidev deploy script
    - "/bin/bash ./private/multidev-deploy.sh"
  only:
    - merge_requests

Προσθήκη, δέσμευση και αποστολή private/multidev-deploy.sh и .gitlab-ci.yml. Τώρα επιστρέφουμε στο GitLab και περιμένουμε να ολοκληρωθεί η εργασία CI/CD. Να είστε υπομονετικοί: η δημιουργία του multidev μπορεί να διαρκέσει αρκετά λεπτά.

Στη συνέχεια πηγαίνουμε να δούμε τη λίστα multidev στο Pantheon. Ω θαύμα! Περιβάλλον Multidev mr-2 ήδη εδώ.

Πώς να συνδέσετε το GitLab και το Pantheon και να βελτιστοποιήσετε τις ροές εργασίας Drupal και WordPress

Συμπέρασμα

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

Με τα ισχυρά εργαλεία του GitLab και του Pantheon, μπορείτε να συνδέσετε αυτόματα το GitLab στο Pantheon.

Εφόσον χρησιμοποιούμε το GitLab CI/CD, η ροή εργασιών μας θα έχει χώρο να αναπτυχθεί. Ακολουθούν μερικές ιδέες για να ξεκινήσετε:

  • Προσθέστε ένα βήμα κατασκευής.
  • Προσθήκη αυτοματοποιημένης δοκιμής.
  • Προσθέστε μια εργασία για να διασφαλίσετε ότι πληρούνται τα πρότυπα κώδικα.
  • Προσθέστε a δυναμική δοκιμή ασφάλειας εφαρμογών.

Πείτε μας τη γνώμη σας για το GitLab, το Pantheon και τον αυτοματισμό.

Υ.Γ. Γνωρίζατε ότι το Terminus, το εργαλείο γραμμής εντολών του Pantheon, μπορεί να επεκταθεί μέσω πρόσθετων?

Εμείς στο Pantheon έχουμε κάνει καλή δουλειά στην έκδοση 2 μας πρόσθετο για εργαλεία κατασκευής Terminus με υποστήριξη GitLab. Εάν δεν θέλετε να ταλαιπωρηθείτε με τις ρυθμίσεις για κάθε έργο, δοκιμάστε αυτήν την προσθήκη και βοηθήστε μας να δοκιμάσουμε το v2 beta. Για την ομάδα του Terminus build:project:create Χρειάζεστε μόνο ένα διακριτικό Pantheon και ένα διακριτικό GitLab. Θα αναπτύξει ένα από τα δείγματα έργων με το Composer και τις αυτοματοποιημένες δοκιμές, θα δημιουργήσει ένα νέο έργο στο GitLab, μια νέα τοποθεσία Pantheon, και θα τα συνδέσει χρησιμοποιώντας μεταβλητές περιβάλλοντος και κλειδιά SSH.

Σχετικά με τον συγγραφέα

Ο Andrew Taylor δημιουργεί εργαλεία για προγραμματιστές στο Πάνθεο.

Πηγή: www.habr.com

Προσθέστε ένα σχόλιο