Skip to main content

Ecosistemas de paquetes admitidos para el gráfico de dependencias

El gráfico de dependencias admite diversos ecosistemas.

Sobre el gráfico de dependencias

El gráfico de dependencias es un resumen de los archivos de manifiesto y de bloqueo almacenados en un repositorio y las dependencias que se envían para el repositorio mediante API de envío de dependencias. Para cada repositorio, muestra:

  • Las dependencias, ecosistemas y paquetes de los cuales depende
  • Dependientes, los repositorios y paquetes que dependen de él

Puedes ver la información de la licencia y la gravedad de la vulnerabilidad para cada dependencia. También puedes buscar una dependencia específica mediante la barra de búsqueda. Las dependencias se ordenan automáticamente por gravedad de la vulnerabilidad.

Para obtener más información, consulte "Acerca del gráfico de dependencias".

En este artículo, puede ver cuáles son los ecosistemas admitidos.

Ecosistemas de paquetes compatibles

Los formatos recomendados definen explícitamente qué versiones se utilizan para todas las dependencias directas e indirectas. Si usa estos formatos, el gráfico de dependencias será más preciso. También refleja la configuración de compilación actual y permite que el gráfico de dependencias notifique vulnerabilidades tanto en las dependencias directas como en las indirectas. Las dependencias indirectas que se infieren de un archivo de manifiesto (o equivalente) se excluyen de las comprobaciones de dependencias no seguras.

Administrador de paquetesIdiomasFormatos recomendadosTodos los formatos admitidos
CargoRustCargo.lockCargo.toml, Cargo.lock
ComposerPHPcomposer.lockcomposer.json, composer.lock
NuGetLenguajes de .NET (C#, F#, VB), C++.csproj, .vbproj, .nuspec, .vcxproj, .fsproj.csproj, .vbproj, .nuspec, .vcxproj, .fsproj, packages.config
Flujos de trabajo de GitHub ActionsYAML.yml, .yaml.yml, .yaml
Módulos de GoGogo.modgo.mod
MavenJava, Scalapom.xmlpom.xml
npmJavaScriptpackage-lock.jsonpackage-lock.json, package.json
pipPythonrequirements.txt, pipfile.lockrequirements.txt, pipfile, pipfile.lock, setup.py
pnpmJavaScriptpnpm-lock.yamlpackage.json, pnpm-lock.yaml
pubDartpubspec.lockpubspec.yaml, pubspec.lock
Python PoetryPythonpoetry.lockpoetry.lock, pyproject.toml
RubyGemsRubyGemfile.lockGemfile.lock, Gemfile, *.gemspec
Administrador de paquetes de SwiftSwiftPackage.resolvedPackage.resolved
YarnJavaScriptyarn.lockpackage.json, yarn.lock

Notas:

  • Si enumera las dependencias de Python dentro de un archivo setup.py, es posible que no podamos analizar y enumerar cada una de las dependencias del proyecto.

  • Los flujos de trabajo de GitHub Actions se deben ubicar en el directorio .github/workflows/ de un repositorio para que se reconozcan como manifiestos. Las acciones o flujos de trabajo a los que se hace referencia mediante la sintaxis jobs[*].steps[*].uses o jobs.<job_id>.uses se analizarán como dependencias. Para obtener más información, vea «Sintaxis del flujo de trabajo para Acciones de GitHub».

  • Dependabot solo creará Dependabot alerts para los datos de GitHub Actions que usan el control de versiones semántico. No recibirás alertas para una acción vulnerable que use el control de versiones SHA. Si usas GitHub Actions con el control de versiones SHA, se recomienda habilitar Dependabot version updates para el repositorio u organización para mantener las acciones que usas actualizadas a las versiones más recientes. Para obtener más información, consulta «Acerca de las alertas Dependabot» y «Acerca de las actualizaciones a la versión del Dependabot».

Para ecosistemas que resuelven dependencias transitivas en tiempo de compilación, recomendamos configurar el envío de dependencias para enviarlas automáticamente al gráfico de dependencias. Para obtener más información, vea «Configuración del envío automático de dependencias para el repositorio».

Ecosistemas de paquetes admitidos a través de acciones de envío de dependencias

Puede usar API de envío de dependencias para agregar dependencias de compilación desde el administrador de paquetes o agregar dependencias de los administradores de paquetes y los ecosistema de su elección al gráfico de dependencias, incluso si el ecosistema no está en la lista de ecosistemas compatibles anterior. La información de dependencia de estas dependencias enviadas fluirá, a su vez, hacia Dependabot updates y Dependabot alerts.

Las dependencias enviadas a un proyecto mediante la API de envío de dependencias mostrarán qué detector se ha usado para su envío y cuándo se enviaron. Para obtener más información sobre API de envío de dependencias, vea "Uso de la Dependency submission API".

Normalmente puede usar la API de envío de dependencias en un flujo de trabajo de GitHub Actions para enviar dependencias para tu proyecto cuando se compila. La manera más sencilla de usar la API de envío de dependencias es agregar una acción hecha previamente al repositorio que recopilará y convertirá la lista de dependencias al formato de instantánea requerido y enviará la lista a la API. Puede encontrar vínculos a las acciones disponibles actualmente en la tabla siguiente.

EcosistemaAction
GoEnvío de dependencias de Go
GradleEnvío de dependencias de Gradle
MavenEnvío de dependencias del árbol de dependencias de Maven
MolinoEnvío de dependencias de Mill
ScalaEnvío de dependencias de SBT
NuGet y otrosAcción de envío de dependencia de detección de componentes

Nota: Para la acción de envío de dependencias de detección de componentes, otros ecosistemas admitidos incluyen Vcpkg, Conan, Conda, Crates, así como NuGet.

Por ejemplo, el flujo de trabajo de Envío de dependencias de Go siguiente calcula las dependencias de un destino de compilación de Go (un archivo de Go con una función main) y envía la lista a la API de envío de dependencias.

name: Go Dependency Submission
on:
  push:
    branches:
      - main

# The API requires write permission on the repository to submit dependencies
permissions:
  contents: write

# Environment variables to configure Go and Go modules. Customize as necessary
env:
  GOPROXY: '' # A Go Proxy server to be used
  GOPRIVATE: '' # A list of modules are considered private and not requested from GOPROXY
jobs:
  go-action-detection:
    runs-on: ubuntu-latest
    steps:
      - name: 'Checkout Repository'
        uses: actions/checkout@v4

      - uses: actions/setup-go@v5
        with:
          go-version: ">=1.18.0"

      - name: Run snapshot action
        uses: actions/go-dependency-submission@v1
        with:
            # Required: Define the repo path to the go.mod file used by the
            # build target
            go-mod-path: go-example/go.mod
            #
            # Optional. Define the repo path of a build target,
            # a file with a `main()` function.
            # If undefined, this action will collect all dependencies
            # used by all build targets for the module. This may
            # include Go dependencies used by tests and tooling.
            go-build-target: go-example/cmd/octocat.go

También puede crear su propia acción. Para obtener más información, vea «Uso de la Dependency submission API».