GitHub-Ereignisse an eine Anwendung senden
Sie können einen Webhook einrichten, um ein GitHub-Ereignis wie ein neues Problem oder eine Festschreibung an Ihre IBM Cloud® Code Engine-Anwendung zu senden. Ihre Anwendung muss einen öffentlichen Endpunkt verwenden, um die Webhook-POST-Anforderungen zu empfangen.
Weitere Informationen zu GitHub-Webhooks finden Sie unter Informationen zu Webhooks. Weitere Informationen über GitHub, finden Sie unter GitHub Docs.
Voraussetzungen
Richten Sie zunächst Ihr Konto ein und installieren Sie die Befehlszeilenumgebung. Sie können Ihre Anwendung zwar über die Konsole erstellen, aber in diesem Beispiel wird die Befehlszeilenschnittstelle verwendet.
- Stellen Sie sicher, dass Sie über ein nutzungsabhängiges Konto verfügen.
- Konfigurieren Sie die Umgebung der Code Engine-Befehlszeilenschnittstelle.
- Erstellen Sie ein Projekt und arbeiten Sie damit.
Alle Code Engine-Benutzer müssen über ein nutzungsabhängiges Konto verfügen. Für Tutorien können Kosten anfallen. Verwenden Sie den Cost Estimator, um einen Kostenvoranschlag auf der Grundlage Ihrer voraussichtlichen Nutzung zu erstellen. Weitere Informationen finden Sie unter Preisstruktur fürCode Engine.
Anwendung erstellen
Erstellen Sie eine Anwendung, um Ihre GitHub-Ereignisse mit dem Namen my-github-app
zu empfangen, die ein Image mit dem Namen github
mit dem Befehl ibmcloud ce app create
verwenden. Diese App protokolliert jedes Festschreibungsereignis, das im GitHub-Repository auftritt. Das Image wird aus github.go
erstellt, das aus den Beispielen für IBM Cloud Code Engine GitHub Repositoryverfügbar ist.
ibmcloud ce application create --name my-github-app --image icr.io/codeengine/github --min-scale 1
Überprüfen Sie nach der Erstellung Ihrer Anwendung, ob sich Ihre Anwendung im Status Ready
befindet, und suchen Sie die Anwendungs-URL.
ibmcloud ce application get --name my-github-app
Die Anwendungs-URL befindet sich im Feld URL in der Beispielausgabe.
Name: my-github-app
ID: abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f
Project Name: myproject
Project ID: 01234567-abcd-abcd-abcd-abcdabcd1111
Age: 20h
Created: 2022-11-28T13:16:49-06:00
URL: https://my-github-app.abcdabcdabc.us-south.codeengine.appdomain.cloud
Cluster Local URL: http://my-github-app.abcdabcdabc.svc.cluster.local
Console URL: https://cloud.ibm.com/codeengine/project/us-south/abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f/application/my-github-app/configuration
Status Summary: Application deployed successfully
...
Webhook erstellen
Erstellen Sie einen GitHub-Webhook, um Ihre Anwendung für GitHub-Ereignisse zu abonnieren. Sie können ein oder mehrere Webhook-Ereignisse abonnieren. Wenn ein Ereignis eintritt, das Sie abonnieren, sendet GitHub Nutzdaten an Ihre Anwendung. Weitere Informationen finden Sie unter Webhook-Ereignisse und -Nutzdaten.
Um einen GitHub zu erstellen, gehen Sie folgendermaßen vor.
- Wechseln Sie zu Ihrem GitHub und wählen Sie Einstellungen aus.
- Wählen Sie Webhooks-> Webhook hinzufügen aus. Beachten Sie, dass Ihr GitHub-Repository möglicherweise Hooks anstelle von Webhooks verwendet.
- Geben Sie Ihre Anwendungs-URL als Nutzdaten-URL ein.
- Wählen Sie den Inhaltstyp aus, den Ihre Anwendung erfordert. Wenn Sie die
github
-Beispielapp verwenden, wählen Sieapplication/json
als Ihren Inhaltstyp aus. - Optional. Fügen Sie Ihrem Webhook einen geheimen Schlüssel hinzu. Weitere Informationen finden Sie unter Webhooks sichern.
- Wählen Sie SSL-Verifizierung aktivieren aus.
- Wählen Sie Nur das Push-Ereignis aus, um Ihren Webhook auszulösen.
- Stellen Sie sicher, dass Aktiv ausgewählt ist. Sie können Ihren Webhook inaktivieren, ohne ihn zu löschen, indem Sie das Häkchen entfernen.
- Klicken Sie auf Webhook hinzufügen.
Stellen Sie anschließend sicher, dass Ihre Anwendung subskribiert ist, indem Sie die Protokolldateien für die Anwendung überprüfen. Weitere Informationen zu Protokollen finden Sie unter Protokolle über die CLI anzeigen.
ibmcloud ce app logs --name my-github-app
Suchen Sie in der Beispielausgabe nach dem Port, an dem Ihre App empfangsbereit ist, sowie nach dem Ereignistyp.
my-github-app-00001-deployment-abcdabcdabc-1234/user-container:
2022/12/02 17:07:27 Listening on port 8080
2022/12/02 17:10:08 Event Type: ping
2022/12/02 17:10:08 Not a 'push' event so exit
Wenn Ihre Anwendungen auf null skaliert werden, erhalten Sie möglicherweise eine Nachricht, dass keine Instanzen Ihrer App ausgeführt werden. Diese App hat eine Mindestskala von 1, sodass sie immer eine aktive Instanz hat.
GitHub-Ereignis testen
Testen Sie Ihren Webhook, indem Sie das Ereignis auslösen, das Ihre Anwendung erwartet. In diesem Fall erwartet die Anwendung, dass eine Änderung im GitHub-Repository festgeschrieben wird.
-
Führen Sie in Ihrem GitHub-Repository eine Aktion aus, die Ihren Webhook auslöst. Schreiben Sie für die
github
-App eine Änderung an einer Datei im Repository fest. -
Suchen Sie nach ein oder zwei Minuten nach den Protokollen für Ihre Anwendung. Wenn Ihre Anwendung auf null skaliert wurde, wird möglicherweise eine Nachricht angezeigt, dass Ihre App keine aktiven Instanzen hat. Ihre Anwendung wird skaliert, wenn sie ein Ereignis empfängt. Versuchen Sie es in einigen Minuten erneut. Weitere Informationen zu Protokollen finden Sie unter Protokolle über die CLI anzeigen.
ibmcloud ce app logs --name my-github-app
Sehen Sie sich zum Beispiel die folgende Ausgabe an.
2022/11/28 19:45:28 Event: { "ref": "refs/heads/main", "before": "0a11d22ebdaacdbb7bf5fdb6c92565c7c00fa97b", "after": "af363efb8568874fe219bc73f3bccd0f4991907f", "repository": { ... "committer": { "name": "GitHub", "email": "noreply@github.com", "username": "web-flow" }, "added": [], "removed": [], "modified": [ "README.md" ] } } 2022/11/28 19:45:28 kersten1 committed "af363efb8568874fe219bc73f3bccd0f4991907f" to "refs/heads/main" branch 2022/11/28 19:45:28 ibmcloud ce buildrun submit ...
Ihre Ausgabe hängt von der Anwendung ab, die Sie verwenden, und vom GitHub-Repository, das den Webhook enthält.
Ihr Webhook funktioniert! Jetzt empfängt Ihre App eine Benachrichtigung, wenn Sie eine Datei im GitHub-Repository festschreiben.
Diese Anwendung setzt die Mindestskala auf 1, sodass eine Instanz der App immer aktiv ist. Sie können die Anzahl der Kommastellen auf 0 setzen, indem Sie die App mit folgendem Befehl aktualisieren. In: ibmcloud ce app update --name my-github-app --min-scale 0
.
Bereinigen
Nach Beendigung dieses Lernprogramms können Sie die Ressourcen, die Sie erstellt haben, mit den folgenden Befehlen löschen.
-
Anwendung löschen
ibmcloud ce app delete --name my-github-app
Wenn Sie Ihre App löschen, werden auch die zugehörigen Build-Dateien gelöscht.
-
Löschen Sie den Webhook, indem Sie Ihre GitHub-Einstellungen-> Webhooks öffnen und nach dem Webhook-Namen auf Löschen klicken.
-
Löschen Sie die Bilder, die der Build von IBM Cloud Container Registry erstellt hat.
- Navigieren Sie in der IBM Cloud-Konsole zu Registry.
- Suchen Sie das Archiv und das Image, die Ihrer Anwendung zugeordnet sind, indem Sie nach Ihrem Anwendungsnamen suchen.
- Wählen Sie das Archiv und das Image aus und löschen Sie sie.