IBM Cloud Docs
GitHub-Ereignisse an eine Anwendung senden

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.

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.

  1. Wechseln Sie zu Ihrem GitHub und wählen Sie Einstellungen aus.
  2. Wählen Sie Webhooks-> Webhook hinzufügen aus. Beachten Sie, dass Ihr GitHub-Repository möglicherweise Hooks anstelle von Webhooks verwendet.
  3. Geben Sie Ihre Anwendungs-URL als Nutzdaten-URL ein.
  4. Wählen Sie den Inhaltstyp aus, den Ihre Anwendung erfordert. Wenn Sie die github-Beispielapp verwenden, wählen Sie application/json als Ihren Inhaltstyp aus.
  5. Optional. Fügen Sie Ihrem Webhook einen geheimen Schlüssel hinzu. Weitere Informationen finden Sie unter Webhooks sichern.
  6. Wählen Sie SSL-Verifizierung aktivieren aus.
  7. Wählen Sie Nur das Push-Ereignis aus, um Ihren Webhook auszulösen.
  8. 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.
  9. 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.

  1. 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.

  2. 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.

  1. 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.

  2. Löschen Sie den Webhook, indem Sie Ihre GitHub-Einstellungen-> Webhooks öffnen und nach dem Webhook-Namen auf Löschen klicken.

  3. Löschen Sie die Bilder, die der Build von IBM Cloud Container Registry erstellt hat.

    1. Navigieren Sie in der IBM Cloud-Konsole zu Registry.
    2. Suchen Sie das Archiv und das Image, die Ihrer Anwendung zugeordnet sind, indem Sie nach Ihrem Anwendungsnamen suchen.
    3. Wählen Sie das Archiv und das Image aus und löschen Sie sie.