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.
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
freenky
actualizando elGITHUB_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_TOKEN
creá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 elGITHUB_TOKEN
alcance del permiso usando elpermission 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
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