Τρόπος ενεργοποίησης ενεργειών GitHub από απόσταση χρησιμοποιώντας Webhooks
Το GitHub Actions είναι μια υπηρεσία CI/CD που μπορεί να εκτελέσει εκδόσεις και δοκιμές στη βάση κώδικα του έργου σας. Συνήθως, οι ενέργειες ενεργοποιούνται αυτόματα σε νέες δεσμεύσεις, αλλά μπορούν επίσης να ξεκινήσουν απομακρυσμένα χρησιμοποιώντας ειδοποιήσεις webhook.
Γιατί να χρησιμοποιήσετε Webhooks;
Οι εκδόσεις ενεργειών ενεργοποιούνται βάσει συμβάντων στο αποθετήριο σας. Συνήθως, αυτό σημαίνει ότι εκτελούνται εκδόσεις και δοκιμές κάθε φορά που γίνεται μια νέα δέσμευση, έκδοση με ετικέτα ή αίτημα έλξης. Δεδομένου ότι αυτός είναι ο κύριος τρόπος με τον οποίο θα αλλάξει ο κώδικάς σας, καλύπτει τις περισσότερες περιπτώσεις.
Ωστόσο, εάν βασίζεστε σε άλλες εκδόσεις λογισμικού ως εξαρτήσεις, είναι πολύ συνηθισμένο να απαιτούνται κανονικές εκδόσεις ακόμα κι αν ο κώδικας δεν αλλάζει. Επειδή το GitHub δεν γνωρίζει πότε ενημερώνονται οι εξαρτήσεις σας, θα πρέπει να προωθήσετε με μη αυτόματο τρόπο μια νέα έκδοση με ετικέτα ή να επανεκκινήσετε την προηγούμενη έκδοση για να την δημιουργήσετε ξανά με την ενημερωμένη εξάρτηση.
Τα Webhook είναι ένας τρόπος για να το χειριστείτε αυτό αυτόματα, ζητώντας από μια εξωτερική εφαρμογή να μιλήσει στο GitHub για να ενεργοποιήσετε μια νέα έκδοση. Τα webhook μπορούν εύκολα να σταλούν από οποιαδήποτε εφαρμογή που μπορεί να κάνει αιτήματα HTTP, η οποία περιλαμβάνει οποιαδήποτε γλώσσα προγραμματισμού αλλά και εργαλεία γραμμής εντολών όπως
curl
.
Μια άλλη κοινή περίπτωση χρήσης είναι η δημιουργία στατικής τοποθεσίας. Πλαίσια όπως
Γκάτσμπι
απαιτούν την ανακατασκευή του ιστότοπου κάθε φορά που αλλάζει το περιεχόμενο. Αυτό γίνεται συχνά με μη αυτόματο τρόπο, αλλά μπορεί να αυτοματοποιηθεί από υπηρεσίες διαχείρισης περιεχομένου χρησιμοποιώντας webhook.
Θα θελήσετε να ελέγξετε για να βεβαιωθείτε ότι ό,τι κάνετε δεν μπορεί να επιτευχθεί με υπάρχοντες κανόνες ενεργοποίησης GitHub Actions. Υπάρχει μια
εκπληκτική ποσότητα ενσωματωμένων σκανδάλων
για το οποίο μπορείτε να διαβάσετε στο GitHub Wiki. Για παράδειγμα, μπορείτε
ορίστε ένα χρονοδιάγραμμα για την εκτέλεση εκδόσεων με βάση τη σύνταξη του cron
το οποίο μπορεί να καλύψει τις ανάγκες σας εάν χρειάζεστε κανονικές κατασκευές σε μια συγκεκριμένη χρονική στιγμή.
Ρύθμιση ενεργοποίησης Webhook για ενέργειες Github
Αρχικά, θα θελήσετε να βεβαιωθείτε ότι η ροή εργασιών GitHub Actions έχει ρυθμιστεί σωστά και λειτουργεί κανονικά χωρίς το webhook. Αυτό θα εξαρτηθεί εξ ολοκλήρου από τη βάση του κώδικά σας, αλλά το GitHub έχει πολλά προκατασκευασμένα πρότυπα και μπορείτε να διαβάσετε τον οδηγό μας για τη ρύθμιση μιας ροής εργασίας για να μάθετε περισσότερα.
ΣΧΕΤΙΖΕΤΑΙ ΜΕ:
Πώς να χρησιμοποιήσετε τις ενέργειες Github για να αυτοματοποιήσετε τις κατασκευές του αποθετηρίου σας
Το έναυσμα που θα χρησιμοποιήσουμε για την εκτέλεση Actions από webhook είναι
repository_dispatch
το οποίο χρησιμοποιείται για εξωτερικά webhook.
Αρχικά, θα θέλετε να προσθέσετε το έναυσμα στην ενότητα “Ενεργοποίηση” του αρχείου ροής εργασίας σας. Αυτό δεν χρειάζεται να αντικαταστήσει τους άλλους κανόνες ετικέτας, επομένως μπορείτε να συνεχίσετε να εκτελείτε αυτήν τη ροή εργασίας τόσο σε δεσμεύσεις όσο και σε webhook.
ο
repository_dispatch
Το έναυσμα μπορεί να λάβει μια προαιρετική παράμετρο τύπου συμβάντος, η οποία μπορεί να χρησιμοποιηθεί για φιλτράρισμα μεταξύ διαφορετικών webhook, εάν θέλετε ένα μόνο αποθετήριο να δέχεται πολλά webhook.
Αυτό είναι το μόνο που απαιτείται στο τέλος του GitHub και τώρα μπορούμε να στείλουμε το webhook. Η μορφή URL είναι η εξής και δέχεται μόνο αιτήματα POST:
https://api.github.com/repos/{username}/{repo}/dispatches
Ωστόσο, ένα πράγμα που θα πρέπει να ορίσετε είναι η κεφαλίδα Εξουσιοδότηση. Αυτό είναι ενοχλητικό, αλλά είναι απολύτως λογικό – διαφορετικά, οποιοσδήποτε θα μπορούσε να στείλει ειδοποιήσεις webhook στο αποθετήριο σας.
"Accept": "application/vnd.github+json"
"Authorization": "token {personal_access_token}"
Τέλος, θα πρέπει να ρυθμίσετε το
event_type
με σώμα JSON στο αίτημα:
{
"event_type": "dependency_update"
}
Μπορείτε να δημιουργήσετε ένα προσωπικό διακριτικό πρόσβασης από τις προσωπικές ή τις ρυθμίσεις του οργανισμού σας. Μεταβείτε στις ρυθμίσεις, κάντε κλικ στο “Ρυθμίσεις προγραμματιστή” και δημιουργήστε ένα νέο διακριτικό. Αυτό το διακριτικό θα χρειαστεί άδεια για πρόσβαση στο χώρο αποθήκευσης και τις Ενέργειές του.
Μόλις έχετε το διακριτικό, μπορείτε να υποβάλετε εξουσιοδοτημένα webhook. Είναι χρήσιμο να χρησιμοποιείτε ένα εργαλείο εντοπισμού σφαλμάτων API όπως π.χ
Ταχυδρόμος
ή μπούκλα για να δοκιμάσεις αν δουλεύει? Εάν το webhook περάσει, θα λάβετε μια απάντηση 204 Χωρίς περιεχόμενο και θα δείτε τη ροή εργασίας να εκτελείται στην καρτέλα Ενέργειες, με τον τύπο συμβάντος να χρησιμοποιείται ως τίτλος.
Μόλις λειτουργήσει το webhook, θα πρέπει να διαμορφώσετε την εξωτερική σας εφαρμογή ώστε να τη χρησιμοποιεί και να συνδέετε πλήρως τη ροή εργασίας σας.


