“Recurso no accesible por integración” en la publicación de github /repos/{propietario}/{repo}/actions/runners/registration-token API

5 minutos de lectura

Estoy haciendo una solicitud de publicación de curl desde mi flujo de trabajo de github (acción) para obtener el token de registro para un corredor autohospedado, pero recibo la siguiente respuesta:

{
  "message": "Resource not accessible by integration",
  "documentation_url": "https://docs.github.com/rest/reference/actions#create-a-registration-token-for-a-repository"
}

A continuación se muestra una versión reducida de mi flujo de trabajo de github:


name: get-token

"on":
  push: { branches: ["token"] }

jobs:
  
  print-token:
    name: print-token
    environment: dev
    # needs: pre-pkr
    runs-on: ubuntu-latest

    steps:
      - name: Check out code
        uses: actions/checkout@v2

      - name: Get registration token
        id: getRegToken
        run: |
          curl -X POST -H \"Accept: application/vnd.github.v3+json\"  -H 'Authorization: token ${{ secrets.GITHUB_TOKEN }}' https://api.github.com/repos/myprofile/myrepo/actions/runners/registration-token

Eventualmente, me gustaría pasar este token a la AMI que estoy creando con el comando de compilación Packer (siguiente paso). También probé la solicitud de curl anterior con el aprovisionador de shell del empaquetador, pero la misma respuesta. ¿No puedo averiguar si tengo que permitir algunos permisos de github ui? ¿O de qué otra manera se puede hacer esto? Gracias por adelantado.

  • Hola, ¿intentaste usar un token de acceso personal (PAT) en tu curl en lugar de GITHUB_TOKEN?

    – GuiFalourd

    21 de diciembre de 2021 a las 14:45

  • Hola. Lo siento por la respuesta tardía. Sí, lo tengo y me funciona. Me inclinaba por GITHUB_TOKEN ya que es un token temporal. Además, un paso menos (no es necesario crear un PAT con permisos relevantes y almacenarlo en secretos). Solo busco una explicación de por qué GITHUB_TOKEN no funciona. Gracias.

    – nu_popli

    22 de diciembre de 2021 a las 7:03

  • La mayoría de las veces, cuando una operación funciona con PAT y no con GITHUB_TOKEN, es un problema de alcance. El token GHA solo tiene un alcance específico, cuando la API de Github necesita alcances más amplios para realizar algunas operaciones. Aquí, la creación de un token de registro es algo que probablemente necesite permisos de administrador y no están incluidos en el token de GHA. Agregaré una respuesta oficial con más detalles 🙂👍🏼

    – GuiFalourd

    22 de diciembre de 2021 a las 10:36


avatar de usuario de frennky
frenético

Intenta agregar permissions a tu trabajo:

name: get-token

"on":
  push: { branches: ["token"] }

jobs:
  
  print-token:
    permissions: write-all
    name: print-token
    environment: dev
    # needs: pre-pkr
    runs-on: ubuntu-latest

    steps:
      - name: Check out code
        uses: actions/checkout@v2

      - name: Get registration token
        id: getRegToken
        run: |
          curl -X POST -H \"Accept: application/vnd.github.v3+json\"  -H 'Authorization: token ${{ secrets.GITHUB_TOKEN }}' https://api.github.com/repos/myprofile/myrepo/actions/runners/registration-token

Esto debería indicarle si ese es el problema, luego puede averiguar qué permiso le faltaba y configurarlos correctamente en más detalles.

Como se menciona en los comentarios y otras respuestas, hay varias formas de configurar los permisos:

  • usar PAT (Token de acceso personal)
  • anular los permisos en el propio archivo de flujo de trabajo, como se muestra en el fragmento anterior
  • configurar permisos en la configuración de Acciones

La tercera opción se puede hacer en algunos niveles diferentes:

Puede encontrar detalles sobre los permisos predeterminados aquí.

  • Hola. Gracias por la respuesta. Seguí el consejo y, según tengo entendido, esto no se puede hacer directamente en el flujo de trabajo. Asigné explícitamente todos los permisos permitidos en el flujo de trabajo, pero aún no funciona. Los permisos para el token GH también están configurados para lectura/escritura. PAT necesita permisos de repositorio para generar un token de registro, pero esas condiciones no se pueden asignar en el flujo de trabajo.

    – nu_popli

    23 de diciembre de 2021 a las 17:13

El problema aquí está relacionado con el GITHUB_TOKEN ámbito de permiso que se genera automáticamente en una ejecución de flujo de trabajo de Github Actions.

Como frennky compartido en su respuesta, se pueden encontrar los permisos predeterminados de este token aquí.

En base a esto, tienes 2 soluciones:

  • El primero es el sugerido por freenkyactualizando el GITHUB_TOKEN permisos en la ejecución del flujo de trabajo usando el campo de permisos En tu trabajo.

  • La segunda es usar un Token de acceso personal en lugar del predeterminado GITHUB_TOKENcreándolo con los permisos específicos que necesita y luego agregándolo como un secreto del repositorio.

  • Gracias por la respuesta. Según tengo entendido, la ruta con PAT es el único camino a seguir (que he probado, está funcionando). Corríjame si me equivoco, pero creo que la API del token de registro no se puede usar directamente con GITHUB_TOKEN en el flujo de trabajo de acciones.

    – nu_popli

    23 de diciembre de 2021 a las 17:16

  • La API no se puede utilizar con el por defecto GITHUB_TOKEN permisos Pero puede ser posible actualizar el GITHUB_TOKEN alcance del permiso usando el permission field (No lo probé, así que no puedo asegurarlo).

    – GuiFalourd

    23 de diciembre de 2021 a las 18:06


  • Intenté esto. Por lo que tengo entendido, no se puede hacer.

    – nu_popli

    25 de diciembre de 2021 a las 18:55

  • ¿Dónde puedo encontrar qué permiso tiene que configurar el PAT? ¿Hay alguna referencia para? Quiero que el bot de acciones agregue comentarios. Funciona bien, a menos que la solicitud de extracción no esté bifurcada. Usando ghcli

    – Ismoh

    28 de septiembre de 2022 a las 8:48

  • yo creo el completo repo alcance es suficiente para lo que quiere Ismoh. referencia

    – GuiFalourd

    28 de septiembre de 2022 a las 10:02

¿Ha sido útil esta solución?