Skip to main content

Envío automático de dependencias

Requisitos de acceso a la red, solución de problemas y comportamiento específico del ecosistema para el envío automático de dependencias.

Configuración del acceso de red para ejecutores autohospedados

Si los ejecutores autohospedados funcionan detrás de un firewall con acceso restringido a Internet saliente, debe agregar determinadas direcciones URL a la lista de permitidos para el envío automático de dependencias. Las direcciones URL necesarias dependen de los ecosistemas que usan los repositorios.

Direcciones URL necesarias para todos los ecosistemas

Estas direcciones URL son necesarias para todos los flujos de trabajo de envío automático de dependencias:

  •         `https://github.com`—Necesario para acceder a GitHub y descargar acciones.
    
  •         `https://api.github.com`: se requiere para el GitHub acceso a la API.
    
  •         `https://*.githubusercontent.com`: es necesario para descargar el código fuente de la acción y las versiones (incluidos `raw.githubusercontent.com`, `github-releases.githubusercontent.com` y `objects.githubusercontent.com`).
    

Direcciones URL específicas del ecosistema

En función de los ecosistemas que use, es posible que tenga que incluir direcciones URL adicionales en la lista de permitidos.

Go

  •         `https://go.dev`—Para descargar la cadena de herramientas de Go.
    
  •         `https://golang.org`: dominio alternativo para descargas de Go.
    
  •         `https://proxy.golang.org`: proxy oficial del módulo Go para descargar módulos de Go durante la detección de dependencias.
    

Nota:

A el actions/go-versions repositorio se accede a través de https://raw.githubusercontent.com, que ya está cubierto en los requisitos generales.

Java (Maven y Gradle)

  •         `https://repo.maven.apache.org`—repositorio de Maven Central para descargar dependencias.
    
  •         `https://api.adoptium.net`—Para descargar distribuciones de JDK de Adoptium/Temurin (distribución predeterminada usada por `actions/setup-java`).
    

Si usa una distribución de JDK diferente, es posible que también necesite lo siguiente:

  •         `https://aka.ms` y `https://download.microsoft.com`: para Compilación de Microsoft de OpenJDK (nota: `aka.ms` también se usa para descargas de .NET).
    
  •         `https://download.oracle.com`— Para Oracle JDK.
    
  •         `https://api.azul.com`—Para Azul Zulu OpenJDK.
    

.NET (C#, F#, Visual Basic)

  •         `https://aka.ms`—Microsoft acortador de URL que redirige a ubicaciones de descarga de .NET.
    
  •         `https://builds.dotnet.microsoft.com`—Fuente principal para descargas de SDK y tiempo de ejecución de .NET.
    
  •         `https://ci.dot.net`—Fuente secundaria para compilaciones de .NET.
    

Nota:

La herramienta microsoft/component-detection utilizada por el envío automático .NET se descarga desde las versiones de GitHub, lo cual ya está cubierto en los requisitos generales (https://github.com y https://*.githubusercontent.com).

Python

  •         `https://python.org`: para descargar intérpretes de Python.
    

Nota:

Se accede al repositorio actions/python-versions y a las versiones microsoft/component-detection a través de direcciones URL que ya se tratan en los requisitos generales (https://*.githubusercontent.com y https://github.com).

Use ejecutores más grandes alojado en GitHub para el envío automático de dependencias.

          Los usuarios de GitHub Team o GitHub Enterprise Cloud pueden usar ejecutores más grandes para ejecutar trabajos de envío automático de dependencias.
  1. Aprovisione un ejecutor mayor en el nivel de organización con el nombre dependency-submission. Para obtener más información, consulte Adición de un elemento ejecutor más grande a una organización.
  2. Asigne al ejecutor acceso al repositorio. Para obtener más información, consulte Permitir que los repositorios accedan a ejecutores más grandes.
  3. En "Gráfico de dependencias", haga clic en el menú desplegable situado junto a "Envío automático de dependencias" y seleccione Habilitado para ejecutores etiquetados.

Solución de problemas de envío automático de dependencias

El envío automático de dependencias hace todo lo posible por almacenar en caché las descargas de paquetes entre ejecuciones mediante la acción Cache para acelerar los flujos de trabajo. En el caso de los ejecutores autohospedados, puede que quieras administrar esta memoria caché en tu propia infraestructura. Para ello, puedes deshabilitar el almacenamiento en caché integrado si estableces una variable de entorno de GH_DEPENDENCY_SUBMISSION_SKIP_CACHE en true. Para más información, consulta Almacenamiento de información en variables.

Desduplicación de manifiesto

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.

  1.        **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.
  2.        **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.
    
  3.        **Los resultados de análisis estáticos** se usan cuando no hay otros datos disponibles.
    

Información específica del ecosistema del paquete

Proyectos de Maven

En el caso de los proyectos de Maven, el envío automático de dependencias ejecuta una bifurcación de código abierto del envío de dependencias del árbol de dependencias de Maven. El fork permite que GitHub se mantenga sincronizado con el repositorio ascendente y conservar algunos cambios que solo son aplicables al envío automático. El origen de la bifurcación está disponible en advanced-security/maven-dependency-submission-action.

Si las dependencias del repositorio parecen inexactas, comprueba que la marca de tiempo de la última compilación del gráfico de dependencia coincide con el último cambio en el archivo pom.xml. La marca de tiempo está visible en la tabla de alertas de la pestaña del repositorio Dependabot. Hacer un commit que actualice pom.xml desencadenará una nueva ejecución de la acción Envío del Árbol de Dependencias y forzará una recompilación del gráfico de dependencias de ese repositorio.

Proyectos de Gradle

En el caso de los proyectos de Gradle, el envío automático de dependencias ejecuta una bifurcación de las acciones de Gradle de código abierto desde gradle/actions. La bifurcación está disponible en actions/gradle-build-tools-actions. Puedes ver los resultados de la acción de envío automático en la pestaña Actions del repositorio. Cada ejecución se etiquetará como "Envío automático de dependencias (Gradle)" y su salida contendrá la carga JSON que la acción envió a la API.

proyectos de .NET

La acción de envío automático de .NET utiliza el proyecto de código abierto component-detection como motor para la detección de dependencias. Admite .NET 8.x, 9.x y 10.x. El envío automático de .NET se ejecuta si el repositorio dependabot.yml define nuget como package-ecosystem o cuando hay un archivo de manifiesto admitido en el directorio raíz del repositorio. Entre los archivos de manifiesto admitidos se incluyen .sln, .csproj, packages.config, .vbproj, .vcxproj y .fsproj.

proyectos de Python

Python usa el proyecto código abierto component-detection como motor de generación de grafos subyacente. La acción de sumisión automática para Python solo se ejecutará si hay un archivo /requirements.txt en el directorio raíz del repositorio. El envío automático de Python no admite actualmente paquetes privados; los paquetes a los que se hace referencia en requirements.txt, que no están disponibles públicamente, harán que se produzca un error en la acción de envío automático.

Nota:

Esta acción usa actions/setup-python para instalar Python. Debe incluir un archivo .python-version en su repositorio para especificar la versión de Python que se va a instalar.