Invio di eventi GitHub a una applicazione

Puoi configurare un webhook per inviare un evento GitHub, come un nuovo problema o un commit alla tua applicazione IBM Cloud® Code Engine. La tua applicazione deve utilizzare un endpoint pubblico per ricevere le richieste POST webhook.

Per ulteriori informazioni sui webhook GitHub, vedi Informazioni sui webhook. Per ulteriori informazioni su GitHub, vedere GitHub Docs.

Prerequisiti

Prima di iniziare, imposta il tuo account e installa l'ambiente della riga di comando. Mentre puoi utilizzare la console per creare la tua applicazione, questo esempio utilizza la CLI.

Tutti gli utenti Code Engine devono avere un account Pagamento a consumo. Le esercitazioni potrebbero comportare dei costi. Utilizzate l'Estimatore di costi per generare una stima dei costi in base all'utilizzo previsto. Per ulteriori informazioni, vedi Prezzi diCode Engine.

Crea un'applicazione

Crea un'applicazione per ricevere i tuoi eventi GitHub denominati my-github-app che utilizza un'immagine denominata github con il comando ibmcloud ce app create. Questa applicazione registra ogni evento di commit che si verifica nel repository GitHub. L'immagine viene creata da github.go, disponibile da Esempi per il repository IBM Cloud Code Engine GitHub.

ibmcloud ce application create --name my-github-app --image icr.io/codeengine/github --min-scale 1

Dopo la creazione della tua applicazione, verifica che la tua applicazione sia in uno stato Ready e trova l'URL dell'applicazione.

ibmcloud ce application get --name my-github-app

L'URL dell'applicazione si trova nel campo URL nell'output dell'esempio.

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

Crea un webhook

Crea un webhook GitHub per sottoscrivere la tua applicazione agli eventi GitHub. Puoi sottoscrivere uno o più eventi webhook. Quando si verifica un evento a cui ti sottoscrivi, GitHub invia un payload alla tua applicazione. Per ulteriori informazioni, vedi Eventi e payload Webhook.

Per creare un webhook GitHub, seguite i seguenti passaggi.

  1. Vai al tuo repository GitHub e seleziona Settings.
  2. Seleziona Webhooks-> Aggiungi webhook. Nota che il tuo repository GitHub potrebbe utilizzare Hooks invece di Webhooks.
  3. Immettere l'URL dell'applicazione come URL payload.
  4. Selezionare il Tipo di contenuto richiesto dall'applicazione. Se si utilizza l'app github di esempio, selezionare application/json come tipo di contenuto.
  5. Facoltativo. Aggiungi un segreto al tuo webhook. Per ulteriori informazioni, vedi Protezione dei tuoi webhook.
  6. Selezionare Abilita verifica SSL.
  7. Seleziona Solo l'evento push per attivare il tuo webhook.
  8. Assicurarsi che sia selezionato Attivo. Puoi disabilitare il tuo webhook senza eliminarlo rimuovendo il segno di spunta.
  9. Fai clic su Add webhook.

Una volta terminato, verificare che l'applicazione sia sottoscritta controllando i file di log per l'applicazione. Per ulteriori informazioni sui log, vedi Visualizzazione dei log con la CLI.

ibmcloud ce app logs --name my-github-app

Nell'output di esempio, cerca la porta su cui è in attesa la tua applicazione e il tipo di evento.

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

Nota che se le tue applicazioni vengono ridimensionate a zero, potresti ricevere un messaggio su nessuna istanza della tua applicazione in esecuzione. Questa applicazione ha una scala minima di 1, quindi ha sempre un'istanza in esecuzione.

Verifica il tuo evento GitHub

Verifica il tuo webhook attivando l'evento previsto dalla tua applicazione. In questo caso, l'applicazione prevede il commit di una modifica nel repository GitHub.

  1. Nel tuo repository GitHub, esegui un'azione che attiva il tuo webhook. Per l'app github, esegui il commit di una modifica a un file nel repository.

  2. Dopo un minuto o due, trova i log per la tua applicazione. Se la tua applicazione è stata scalata a zero, potresti visualizzare un messaggio che indica che la tua applicazione non ha alcuna istanza in esecuzione. L'applicazione viene ridimensionata quando riceve un evento, quindi riprovare in pochi minuti. Per ulteriori informazioni sui log, vedi Visualizzazione dei log con la CLI.

    ibmcloud ce app logs --name my-github-app
    

    Ad esempio, si veda il seguente output.

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

    Il tuo output dipende dall'applicazione che utilizzi e dal repository GitHub che contiene il webhook.

Il tuo webhook sta funzionando! Ora la tua app riceve una notifica ogni volta che esegui il commit di un file nel tuo repository GitHub.

Questa applicazione imposta la scala minima su 1 in modo che un'istanza dell'app sia sempre in esecuzione. Puoi impostare la scala su 0 aggiornando l'applicazione con il seguente comando. ibmcloud ce app update --name my-github-app --min-scale 0.

Ripulisci

Una volta terminata questa esercitazione, è possibile ripulire le risorse create con i seguenti comandi.

  1. Elimina la tua applicazione

    ibmcloud ce app delete --name my-github-app
    

    Quando elimini la tua applicazione, vengono eliminati anche i file di build associati.

  2. Elimina il webhook aprendo le tue impostazioni GitHub-> Webhook e facendo clic su Elimina dopo il nome webhook.

  3. Elimina le immagini create dalla build da IBM Cloud Container Registry.

    1. Passa a Registry nella console IBM Cloud.
    2. Trova l'archivio e l'immagine associati alla tua applicazione ricercando il tuo nome applicazione.
    3. Selezionare l'archivio e l'immagine ed eliminare.