Skip to main content

Creación de reglas de protección de implementación personalizadas

Usa GitHub Apps para automatizar la protección de las implementaciones con sistemas de terceros.

¿Quién puede utilizar esta característica?

Las reglas de protección de implementación personalizadas están disponibles en repositorios públicos para todos los planes. Para acceder a otras reglas de protección de implementación personalizadas en los repositorios privados o internos, debes utilizar GitHub Enterprise.

Requisitos previos

Nota:

Las reglas de protección de implementación personalizadas se encuentran actualmente en beta y están sujetas a cambios.

Para obtener información general sobre las reglas de protección de implementación, consulta Desplegar con GitHub Actions.

Creación de una regla de protección de implementación personalizada con GitHub Apps

  1. Crea un GitHub App. Para más información, consulta Registro de una instancia de GitHub App. Configura los datos de GitHub App como se indica a continuación.

    1. Opcionalmente, en el campo de texto URL de devolución de llamada en "Identificación y autorización de usuarios", escribe la dirección URL de devolución de llamada. Para más información, consulta Acerca de la dirección URL de devolución de llamada de autorización de usuario.
    2. En "Permisos", selecciona Permisos de repositorio.
    3. A la derecha de "Acciones", haz clic en el menú desplegable y selecciona Acceso: Solo lectura.
      Captura de pantalla de la sección "Permisos de repositorio" para una aplicación nueva de GitHub. El permiso Actions muestra "Solo lectura" y está resaltado en naranja.
    4. A la derecha de "Implementaciones", haz clic en el menú desplegable y selecciona Acceso: Lectura y escritura.
      Captura de pantalla de la sección "Permisos de repositorio" para una aplicación nueva de GitHub. El permiso Implementaciones muestra "Lectura y escritura" y está resaltado en naranja.
    5. En "Suscribirse a eventos", selecciona Regla de protección de implementación.
      Captura de pantalla de la sección "Suscribirse a sección de eventos" al crear una aplicación de GitHub. La casilla de la regla de protección de implementación está resaltada en naranja.
  2. Instala la regla de protección de implementación personalizada en los repositorios y habilítala para su uso. Para más información, consulta Configuración de reglas de protección de implementación personalizadas.

Aprobación o rechazo de implementaciones

Una vez que un flujo de trabajo alcanza un trabajo que hace referencia a un entorno que tiene habilitada la regla de protección de implementación personalizada, GitHub envía una solicitud POST a una dirección URL que configura que contiene la carga útil deployment_protection_rule. Puedes escribir la regla de protección de implementación para enviar automáticamente solicitudes de API REST que aprueben o rechacen la implementación en función de la carga deployment_protection_rule. Configura las solicitudes de la API REST de la siguiente manera.

  1. Valida la solicitud entrante POST. Para más información, consulta Validación de entregas de webhook.

  2. Usa un JSON Web Token para autenticarte como GitHub App. Para más información, consulta Autenticarse como una GitHub App.

  3. Con el identificador de instalación de la carga del webhook deployment_protection_rule, genera un token de instalación. Para más información, consulta Acerca de la autenticación con una aplicación de GitHub.

    curl --request POST \
    --url "http(s)://HOSTNAME/api/v3/app/installations/INSTALLATION_ID/ACCESS_TOKENS" \
    --header "Accept: application/vnd.github+json" \
    --header "Authorization: Bearer {jwt}" \
    --header "Content-Type: application/json" \
    --data \
    '{ \
       "repository_ids": [321], \
       "permissions": { \
          "deployments": "write" \
       } \
    }'
    
  4. Opcionalmente, para agregar un informe de estado sin realizar ninguna otra acción a GitHub, envía una solicitud POST a /repos/OWNER/REPO/actions/runs/RUN_ID/deployment_protection_rule. En el cuerpo de la solicitud, omite el state Para más información, consulta Puntos de conexión de API de REST para ejecuciones de flujo de trabajo. Puedes publicar un informe de estado en la misma implementación hasta 10 veces. Los informes de estado admiten el formato Markdown y pueden tener hasta 1024 caracteres de longitud.

  5. Para aprobar o rechazar una solicitud, envía una solicitud POST a /repos/OWNER/REPO/actions/runs/RUN_ID/deployment_protection_rule. En el cuerpo de la solicitud, establece la propiedad state en approved o rejected. Para más información, consulta Puntos de conexión de API de REST para ejecuciones de flujo de trabajo.

  6. Opcionalmente, solicita el estado de una aprobación para una ejecución de flujo de trabajo mediante el envío de una solicitud GET a /repos/OWNER/REPOSITORY_ID/actions/runs/RUN_ID/approvals. Para más información, consulta Puntos de conexión de API de REST para ejecuciones de flujo de trabajo.

  7. Opcionalmente, revisa la implementación en GitHub. Para más información, consulta Revisar los despliegues.