Lokasi ngalangkungan proxy:   [ UP ]  
[Ngawartoskeun bug]   [Panyetelan cookie]                
Skip to main content

Solución de problemas de Dependabot en acciones de GitHub

En este artículo se proporciona información de solución de problemas que puede surgir al usar Dependabot con GitHub Actions.

Solución de problemas cuando Dependabot activa flujos de trabajo existentes

Después de configurar las actualizaciones del Dependabot para GitHub.com, puedes ver errores cuando los flujos de trabajo existentes los desencadenan los eventos del Dependabot.

De manera predeterminada, las ejecuciones de flujo de trabajo de GitHub Actions que se activan desde Dependabot a partir de los eventos push, pull_request, pull_request_review o pull_request_review_comment se tratan como si se abrieran desde una bifurcación de repositorio. A diferencia de los flujos de trabajo que activan otros actores, esto significa que recibieron un GITHUB_TOKEN de solo lectura y no tienen acceso a ninguno de los secretos que normalmente se encuentran disponibles. Esto ocasionará que cualquier flujo de trabajo que intente escribir en el repositorio falle cuando los activa el Dependabot.

Hay tres formas de resolver este problema:

  1. Puede actualizar los flujos de trabajo para que ya nos los active Dependabot mediante una expresión como: if: github.actor != 'dependabot[bot]'. Para más información, consulta Evaluación de expresiones en flujos de trabajo y acciones.
  2. Puede modificar los flujos de trabajo para usar un proceso en dos pasos que incluya pull_request_target, que no tiene estas limitaciones. Para más información, consulta Solución de problemas de Dependabot en acciones de GitHub.
  3. Puede proporcionar acceso a los flujos de trabajo que activa Dependabot a secretos y permitir que el término permissions aumente el alcance predeterminado de GITHUB_TOKEN.

En este artículo se proporcionan algunos consejos para solucionar problemas. También puedes consultar Sintaxis del flujo de trabajo para Acciones de GitHub.

Acceder a los secretos

Cuando un evento Dependabot activa un flujo de trabajo, los únicos secretos disponibles para el flujo de trabajo son los secretos Dependabot. GitHub Actions los secretos no están disponibles. Por lo tanto, debe almacenar como secretos de Dependabot todos los secretos que utilice un flujo de trabajo que se active con eventos Dependabot. Para obtener más información, vea Configuración del acceso a registros privados para Dependabot.

Los secretos Dependabot se agregan al contexto secrets y se hace referencia a ellos usando exactamente la misma sintaxis que los secretos para GitHub Actions. Para obtener más información, vea Uso de secretos en Acciones de GitHub.

Si tiene un flujo de trabajo que se active mediante Dependabot y también por otros actores, la solución más sencilla es almacenar el token con los permisos necesarios en una acción y en un secreto de Dependabot con el mismo nombre. Entonces, el flujo de trabajo puede incluir una llamada simple a estos secretos. Si el secreto de Dependabot tiene un nombre diferente, use condiciones para especificar los secretos correctos para que usen distintos actores.

Para obtener ejemplos en los que se usan condiciones, consulta Automatizar al Dependabot con las Acciones de GitHub.

Para acceder a un registro de contenedor privado en AWS con un nombre de usuario y una contraseña, un flujo de trabajo debe incluir un secreto para username y password.

En este ejemplo, cuando Dependabot activa el flujo de trabajo, se usan los secretos de Dependabot con los nombres READONLY_AWS_ACCESS_KEY_ID y READONLY_AWS_ACCESS_KEY. Si otro actor activa el flujo de trabajo, se utilizarán los secretos de las acciones con estos nombres.

YAML
# 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.
name: CI
on:
  pull_request:
    branches: [ main ]

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout repository
        uses: actions/checkout@v6

      - name: Login to private container registry for dependencies
        uses: docker/login-action@3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a1b2c
        with:
          registry: https://1234567890.dkr.ecr.us-east-1.amazonaws.com
          username: ${{ secrets.READONLY_AWS_ACCESS_KEY_ID }}
          password: ${{ secrets.READONLY_AWS_ACCESS_KEY }}

      - name: Build the Docker image
        run: docker build . --file Dockerfile --tag my-image-name:$(date +%s)

Cambio de permisos GITHUB_TOKEN

De forma predeterminada, GitHub Actions los flujos de trabajo activados por Dependabot obtienen un GITHUB_TOKEN con permisos de solo lectura. Puede usar la clave permissions del flujo de trabajo para aumentar el acceso del token:

YAML
name: CI
on: pull_request

# Set the access for individual scopes, or use permissions: write-all
permissions:
  pull-requests: write
  issues: write
  ...

jobs:
  ...

Para obtener más información, vea Uso de GITHUB_TOKEN para la autenticación en flujos de trabajo.

Volver a ejecutar un flujo de trabajo manualmente

Al volver a ejecutar manualmente un Dependabot flujo de trabajo, se ejecutará con los mismos privilegios que antes incluso si el usuario que inició la nueva ejecución tiene privilegios diferentes. Para obtener más información, vea Volver a ejecutar flujos de trabajo y tareas.