Skip to main content

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

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

Acerca de GitHub Actions la autenticación

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

Autenticación con GitHub App

Para poder usar un GitHub App para realizar solicitudes autenticadas a la API, debes registrar una GitHub App, almacenar las credenciales de tu aplicación e instalar tu aplicación. Una vez hecho esto, puede 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 GitHub Actions flujo de trabajo. También puedes pasar el token de acceso de instalación a una acción personalizada que requiera un token.

  1. Registre un GitHub App. Asigne a su GitHub App registro los permisos necesarios para acceder a los recursos deseados. Para más información, consulta Registro de una aplicación de GitHub y Elección de permisos para una aplicación de GitHub.

  2. Almacene el identificador de cliente de su GitHub App como una variable de configuración GitHub Actions. Puedes encontrar el id. de cliente en la página de configuración de la aplicación. El id. de cliente es diferente del id. de la aplicación. Para obtener más información sobre cómo navegar a la página de configuración de GitHub App, vea Modificación de un registro de aplicación de GitHub. 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. (Almacene todo el contenido del archivo, incluidos -----BEGIN RSA PRIVATE KEY----- y -----END RSA PRIVATE KEY-----). Para más información, consulte Administración de claves privadas para aplicaciones de GitHub. Para obtener más información sobre cómo almacenar secretos, consulta Uso de secretos en Acciones de GitHub.

  4. Instale el GitHub App en la cuenta correcta y concédale permisos y acceso a todos los repositorios a los que quiera que acceda el flujo de trabajo. Para más información, consulta Instalación de su propia aplicación de GitHub.

  5. En el GitHub Actions flujo de trabajo, cree un token de acceso de instalación, que puede usar para realizar solicitudes de API.

    Para ello, puede usar una acción propiedad de GitHub, como se muestra en el siguiente ejemplo. Si prefiere no usar esta acción, puede bifurcar y modificar la acción actions/create-github-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 GitHub.

    En el siguiente flujo de trabajo de ejemplo se usa la acción actions/create-github-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 GitHub CLI.

    En el siguiente flujo de trabajo, reemplace APP_CLIENT_ID por el nombre de la variable de configuración donde almacenó su ID de cliente. Reemplaza APP_PRIVATE_KEY con el nombre del secreto donde almacenaste la clave privada de la aplicación.

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

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