Acerca de la autenticación de GitHub Actions
Si necesitas realizar solicitudes de API autenticadas en un flujo de trabajo de GitHub Actions o necesitas ejecutar una acción personalizada que requiera un token, debes usar el GITHUB_TOKEN
integrado si es posible. Sin embargo, GITHUB_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 GitHub App. Para más información sobre por qué podrías usar GitHub App sobre personal access token, consulta Acerca de la creación de GitHub Apps.
Autenticación con una GitHub App
Para usar una instancia de GitHub App para realizar solicitudes de API autenticadas, debes registrar una instancia de GitHub 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 GitHub Actions. También puedes pasar el token de acceso de instalación a una acción personalizada que requiera un token.
-
Registra una instancia de GitHub App. Proporciona al registro de tu instancia de GitHub App los permisos necesarios para acceder a los recursos deseados. Para más información, consulta Registro de una instancia de GitHub App y Elección de permisos para una aplicación de GitHub.
-
Almacene el identificador de la aplicación de GitHub App como una variable de configuración de GitHub 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 GitHub App, consulta Modificación del registro de una instancia de GitHub App. Para obtener más información sobre el almacenamiento de variables de configuración, consulta Almacenamiento de información en variables.
-
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 GitHub. Para obtener más información sobre cómo almacenar secretos, consulta Uso de secretos en Acciones de GitHub. -
Instala la GitHub 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 GitHub App.
-
En el flujo de trabajo de GitHub 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 creada previamente como se muestra en el ejemplo siguiente. Si prefieres no usar una acción de terceros, puedes bifurcar y modificar la acción
tibdex/github-app-token
, o puedes 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
tibdex/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 la GitHub 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. ReemplazaAPP_PRIVATE_KEY
por el nombre del secreto que contiene la clave privada de la aplicación.
# Este flujo de trabajo usa acciones que no GitHub no certifica. # Estas las proporcionan entidades terceras y las gobiernan # condiciones de servicio, políticas de privacidad y documentación de soporte # en línea. # GitHub recomienda anclar acciones a un SHA de confirmación. # Para obtener una versión más reciente, debes actualizar el SHA. # También puedes hacer referencia a una etiqueta o rama, pero la acción puede cambiar sin ninguna advertencia. on: workflow_dispatch: jobs: demo_app_authentication: runs-on: ubuntu-latest steps: - name: Generate a token id: generate-token uses: tibdex/github-app-token@32691ba7c9e7063bd457bd8f2a5703138591fa58 # v1.9.0 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
# Este flujo de trabajo usa acciones que no GitHub no certifica.
# Estas las proporcionan entidades terceras y las gobiernan
# condiciones de servicio, políticas de privacidad y documentación de soporte
# en línea.
# GitHub recomienda anclar acciones a un SHA de confirmación.
# Para obtener una versión más reciente, debes actualizar el SHA.
# También puedes hacer referencia a una etiqueta o rama, pero la acción puede cambiar sin ninguna advertencia.
on:
workflow_dispatch:
jobs:
demo_app_authentication:
runs-on: ubuntu-latest
steps:
- name: Generate a token
id: generate-token
uses: tibdex/github-app-token@32691ba7c9e7063bd457bd8f2a5703138591fa58 # v1.9.0
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