Skip to main content

Realización de solicitudes de API autenticadas con una aplicación de en un flujo de trabajo de Acciones de

Puedes utilizar un token de acceso de instalación desde App para realizar solicitudes de API autenticadas en un flujo de trabajo de Actions. También puedes pasar el token a una acción personalizada para habilitar la acción para realizar solicitudes de API autenticadas.

Acerca de la autenticación de Actions

Si necesitas realizar solicitudes de API autenticadas en un flujo de trabajo de Actions o necesitas ejecutar una acción personalizada que requiera un token, debes usar el _TOKEN integrado si es posible. Sin embargo, _TOKEN solo puedes acceder a los recursos dentro del repositorio del flujo de trabajo. Si necesitas acceder a recursos adicionales, como recursos de una organización o en otro repositorio, puedes usar App. Para más información sobre por qué podrías usar App sobre personal access token, consulta Acerca de la creación de Apps.

Autenticación con una App

Para usar una instancia de App para realizar solicitudes de API autenticadas, debes registrar una instancia de App, almacenar las credenciales de la aplicación e instalar la aplicación. Una vez hecho esto, puedes usar la aplicación para crear un token de acceso de instalación, que se puede usar para realizar solicitudes de API autenticadas en un flujo de trabajo de Actions. También puedes pasar el token de acceso de instalación a una acción personalizada que requiera un token.

  1. Registra una instancia de App. Proporciona al registro de tu instancia de App los permisos necesarios para acceder a los recursos deseados. Para más información, consulta Registro de una instancia de App y Elección de permisos para una aplicación de .

  2. Almacene el identificador de la aplicación de App como una variable de configuración de Actions. Puedes encontrar el id. de la aplicación en la página de configuración de la aplicación. El id. de la aplicación es diferente del id. de cliente. Para más información sobre cómo desplazarte a la página de configuración en tu App, consulta Modificación del registro de una instancia de App. Para obtener más información sobre el almacenamiento de variables de configuración, consulta Almacenamiento de información en variables.

  3. Generar una llave privada para tu app. Almacena el contenido del archivo resultante como un secreto. (Almacena todo el contenido del archivo, incluidos -----BEGIN RSA PRIVATE KEY----- y -----END RSA PRIVATE KEY-----). Para más información, consulta Administración de claves privadas para aplicaciones de . Para obtener más información sobre cómo almacenar secretos, consulta Uso de secretos en Acciones de .

  4. Instala la App en la cuenta de usuario u organización y concédele acceso a todos los repositorios a los que desees que acceda el flujo de trabajo. Para más información, consulta Instalación de tu propia instancia de App.

  5. En el flujo de trabajo de Actions, crea un token de acceso de instalación que podrás utilizar para realizar solicitudes a la API.

    Para ello, puede usar una acción de propietario de como se muestra en el ejemplo siguiente. Si prefiere no usar esta acción, puede bifurcar y modificar la acción actions/create--app-token o escribir un script para que el flujo de trabajo cree manualmente un token de instalación. Para más información, consulta Autenticación como una instalación de una aplicación de .

    En el siguiente flujo de trabajo de ejemplo se usa la acción actions/create--app-token para generar un token de acceso de instalación. A continuación, el flujo de trabajo usa el token para realizar una solicitud de API a través de la CLI.

    En el flujo de trabajo siguiente, reemplace APP_ID por el nombre de la variable de configuración donde se almacenó el identificador de aplicación. Reemplaza APP_PRIVATE_KEY por el nombre del secreto que contiene la clave privada de la aplicación.

YAML
on:
  workflow_dis:
jobs:
  demo_app_authentication:
    runs-on: ubuntu-latest
    steps:
      - name: Generate a token
        id: generate-token
        uses: actions/create--app-token@v2
        with:
          app-id: ${{ vars.APP_ID }}
          private-key: ${{ secrets.APP_PRIVATE_KEY }}

      - name: Use the token
        env:
          GH_TOKEN: ${{ steps.generate-token.outputs.token }}
        run: |
          gh api octocat