IBM Cloud Docs
Envío de sucesos de GitHub a una aplicación

Envío de sucesos de GitHub a una aplicación

Puede configurar un webhook para enviar un suceso GitHub, como un nuevo problema o una confirmación en la aplicación IBM Cloud® Code Engine. La aplicación debe utilizar un punto final público para recibir las solicitudes POST de webhook.

Para obtener más información sobre los webhooks de GitHub, consulte Acerca de los webhooks. Para más información sobre GitHub, consulta GitHub Docs.

Requisitos previos

Antes de empezar, configure la cuenta e instale el entorno de línea de mandatos. Aunque puede utilizar la consola para crear la aplicación, este ejemplo utiliza la CLI.

Todos los usuarios de Code Engine están obligados a tener una cuenta de pago por uso. Las guías de aprendizaje pueden incurrir en costes. Utilice el Estimador de costes para generar una estimación de costes basada en el uso previsto. Para obtener más información, consulte Precios deCode Engine.

Crear una aplicación

Cree una aplicación para recibir los sucesos de GitHub denominados my-github-app que utiliza una imagen denominada github con el mandato ibmcloud ce app create. Esta app registra cada suceso de confirmación que se produce en el repositorio GitHub. La imagen se crea a partir de github.go, disponible en el repositorio Samples for IBM Cloud Code Engine GitHub.

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

Después de crear la aplicación, verifique que la aplicación está en un estado Ready y busque el URL de la aplicación.

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

El URL de la aplicación se encuentra en el campo URL de la salida de ejemplo.

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

Crear un webhook

Cree un webhook GitHub para suscribir la aplicación a sucesos de GitHub. Puede suscribirse a uno o más sucesos de webhook. Cuando se produce un suceso al que se suscribe, GitHub envía una carga útil a la aplicación. Para obtener más información, consulte Sucesos y cargas útiles de Webhook.

Para crear un webhook GitHub, sigue estos pasos.

  1. Vaya al repositorio GitHub y seleccione Valores.
  2. Seleccione Webhooks-> Añadir webhook. Tenga en cuenta que el repositorio GitHub puede utilizar Hooks en lugar de Webhooks.
  3. Especifique el URL de la aplicación como URL de carga útil.
  4. Seleccione el Tipo de contenido que necesita la aplicación. Si está utilizando la app github de ejemplo, seleccione application/json como tipo de contenido.
  5. Opcional. Añada un secreto a su webhook. Para obtener más información, consulte Protección de los webhooks.
  6. Seleccione Habilitar verificación SSL.
  7. Seleccione Sólo el suceso push para desencadenar el webhook.
  8. Asegúrese de que está seleccionado Activo. Puede inhabilitar el webhook sin suprimirlo eliminando la marca de selección.
  9. Pulse Añadir webhook.

Después de finalizar, verifique que la aplicación está suscrita comprobando los archivos de registro de la aplicación. Para obtener más información sobre los registros, consulte Visualización de registros con la CLI.

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

En la salida de ejemplo, busque el puerto en el que escucha la app, así como el tipo de suceso.

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

Tenga en cuenta que si las aplicaciones se escalan a cero, es posible que reciba un mensaje sobre ninguna instancia de la app en ejecución. Esta app tiene una escala mínima de 1, por lo que siempre tiene una instancia en ejecución.

Pruebe el suceso GitHub

Pruebe el webhook desencadenando el suceso que espera la aplicación. En este caso, la aplicación espera que se confirme un cambio en el repositorio GitHub.

  1. En el repositorio GitHub, realice una acción que desencadene el webhook. Para la aplicación github, confirme un cambio en un archivo del repositorio.

  2. Después de uno o dos minutos, busque los registros de la aplicación. Si la aplicación se ha escalado a cero, es posible que vea un mensaje que indica que la app no tiene ninguna instancia en ejecución. La aplicación se escala cuando recibe un suceso, por lo que debe volver a intentarlo en unos minutos. Para obtener más información sobre los registros, consulte Visualización de registros con la CLI.

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

    Por ejemplo, vea la siguiente salida.

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

    La salida depende de la aplicación que utilice y del repositorio GitHub que contiene el webhook.

¡Su webhook está funcionando! Ahora la app recibe una notificación siempre que confirma un archivo en el repositorio GitHub.

Esta aplicación establece la escala mínima en 1 para que una instancia de la app esté siempre en ejecución. Puede establecer la escala en 0 actualizando la aplicación con el mandato siguiente. ibmcloud ce app update --name my-github-app --min-scale 0.

Limpieza

Cuando finalice esta guía de aprendizaje, puede limpiar los recursos que ha creado con los mandatos siguientes.

  1. Suprimir la aplicación

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

    Cuando suprime la aplicación, también se suprimen los archivos de compilación asociados.

  2. Suprima el webhook abriendo los valores de GitHub-> Webhooks y pulsando Suprimir después del nombre del webhook.

  3. Elimina las imágenes que la compilación creó a partir de IBM Cloud Container Registry.

    1. Vaya a Registry en la consola de IBM Cloud.
    2. Busque el archivo y la imagen que están asociados con la aplicación buscando el nombre de la aplicación.
    3. Seleccione el archivo y la imagen y suprímalos.