El gráfico de dependencias puede identificar las dependencias del proyecto mediante los métodos siguientes.
| Método | Cómo funciona |
|---|
**Análisis estático** | Analiza los archivos de manifiesto y de bloqueo en tu repositorio |
| | | Trabajos de gráficos de Dependabot | Usa un flujo de trabajo Dependabot GitHub Actions para generar instantáneas de dependencia | | | | | | Envío automático | Ejecuta un flujo de trabajo predefinido GitHub Actions para resolver las dependencias durante la compilación. | | | API de envío de dependencias | Acepta los datos de dependencia que envíe mediante programación. |
Una vez que las dependencias se han agregado al gráfico, puede recibir Dependabot alerts y Dependabot security updates para cualquier vulnerabilidad conocida.
Análisis estático
Al habilitar el gráfico de dependencias, GitHub examina el repositorio para ver los archivos de manifiesto admitidos y analiza el nombre y la versión de cada paquete. El gráfico se actualiza al cambiar un manifiesto o archivo de bloqueo admitidos en la rama predeterminada, o cuando una dependencia cambia en su propio repositorio.
El análisis estático puede identificar:
-
**Dependencias directas definidas** explícitamente en un manifiesto o archivo de bloqueo -
**Dependencias indirectas**: dependencias de estas dependencias directas, también denominadas "dependencias transitivas", pero solo si se definen en un manifiesto o archivo de bloqueo, no si se resuelven en tiempo de compilación.
Para obtener el gráfico más fiable, debe utilizar archivos de bloqueo (o su equivalente), ya que estos definen exactamente qué versiones de las dependencias directas e indirectas está utilizando actualmente. Los archivos de bloqueo también garantizan que todos los colaboradores del repositorio usen las mismas versiones, lo que hace más fácil probar y depurar código. Además, las dependencias indirectas inferidas de los archivos de manifiesto (en lugar de archivos de bloqueo) se excluyen de las comprobaciones de vulnerabilidad.
Envío automático de dependencias
Algunos ecosistemas resuelven dependencias indirectas en tiempo de compilación, por lo que el análisis estático no puede ver el árbol de dependencias completo. Al activar la presentación automática de dependencias para un repositorio, GitHub identifica automáticamente las dependencias transitivas en el repositorio para los ecosistemas admitidos. Consulta Ecosistemas de paquetes que soportan el gráfico de dependencias.
En segundo plano, el envío automático de dependencias ejecuta un flujo de trabajo de GitHub Actions que genera el árbol completo y lo carga mediante la API de envío de dependencias. El envío automático de dependencias se ejecuta en ejecutores hospedados por GitHub de forma predeterminada y cuenta para sus minutos de GitHub Actions. Opcionalmente, puede ejecutarlo en ejecutores autohospedados o en ejecutores más grandes.
Para habilitar el envío automático de dependencias, consulte Configuración del envío automático de dependencias para el repositorio.
Trabajos de gráficos de Dependabot
Este método usa un tipo especial de Dependabot que construye una instantánea de dependencia y la carga a la API de envío de dependencias. Actualmente solo se admite para dependencias de Go.
Este enfoque es similar al envío automático de dependencias, pero no incurre en cargos por minutos de GitHub Actions. También puede acceder a configuraciones de toda la organización para los registros privados que ha configurado para Dependabot.
La API de envío de dependencias
Puede llamar a la API de envío de dependencias en su propio script o flujo de trabajo. Esto es útil si:
- Debe enviar dependencias transitivas que no se puedan detectar desde archivos de bloqueo.
- Debe crear lógica personalizada o usar un sistema de CI/CD externo.
Las dependencias se envían a la API de envío de dependencias en forma de instantánea. Se trata de una lista de dependencias asociadas a un SHA de confirmación y otros metadatos, que reflejan el estado actual de su repositorio.
Si llama a la API en un flujo de trabajo de GitHub Actions, puede usar una acción predefinida para su ecosistema que recopile automáticamente las dependencias y las envíe a la API. De lo contrario, puede escribir su propia acción o llamar a la API desde un sistema externo.
Las dependencias enviadas se mostrarán en la revisión de dependencias, pero no están disponibles en la información de dependencias de la organización.
Nota:
La API de revisión de dependencias y la API de envío de dependencias funcionan conjuntamente. Esto significa que la API de revisión de dependencias incluirá las dependencias enviadas a través de la API de envío de dependencias.
Para más información, consulta Uso de la Dependency submission API.
Establecimiento de prioridades
Un repositorio puede utilizar múltiples métodos para la presentación de dependencias, lo que puede hacer que el mismo manifiesto de paquete se analice varias veces, potencialmente con resultados diferentes de cada análisis. El gráfico de dependencias usa lógica de desduplicación para analizar las salidas y priorizar la información más precisa para cada archivo de manifiesto.
El gráfico de dependencias muestra solo una instancia de cada archivo de manifiesto mediante las siguientes reglas de precedencia.
-
**Los envíos de usuario** tienen la prioridad más alta, ya que normalmente se crean durante las compilaciones de artefactos que tienen la información más completa.- Si hay varias instantáneas manuales de diferentes detectores, se ordenan alfabéticamente por correlación y la primera usada.
- Si hay dos correladores con el mismo detector, se combinan las dependencias resueltas. Para obtener más información sobre los correladores y detectores, consulta Puntos de conexión de la API de REST para el envío de dependencias.
-
**Los envíos automáticos** tienen la segunda prioridad más alta, ya que también se crean durante las compilaciones de artefactos, pero los usuarios no los envían. -
**Los resultados de análisis estáticos** se usan cuando no hay otros datos disponibles.