Skip to main content

Ecossistemas de pacotes com suporte para grafos de dependência

O grafo de dependência aceita vários ecossistemas.

Sobre o grafo de dependência

O grafo de dependência é um resumo dos arquivos de manifesto e de bloqueio armazenados em um repositório, além de outras dependências que sejam enviadas para o repositório ao usar a API de envio de dependência. Para cada repositório, ele mostra as dependências, os ecossistemas e os pacotes dos quais ele depende.

Para cada dependência, você pode ver as a gravidade da vulnerabilidade. Você também pode pesquisar uma dependência específica usando a barra de pesquisa. As dependências são classificadas automaticamente pela gravidade da vulnerabilidade.

O GitHub Enterprise Server não recupera informações de licença para dependências e não calcula informações sobre os dependentes, os repositórios e os pacotes que dependem de um repositório. Para mais informações, consulte “Sobre o gráfico de dependências”.

Neste artigo, é possível ver quais são os ecossistemas compatíveis.

Ecossistemas de pacote compatíveis

Os formatos recomendados definem explicitamente quais versões são usadas para todas as dependências diretas e indiretas. Se você usar esses formatos, o grafo de dependência será mais preciso. Ele também reflete a configuração de build atual e permite que o grafo de dependência relate as vulnerabilidades em dependências diretas e indiretas.

Gerenciador de pacotesIdiomasFormatos recomendadosTodos os formatos com suporte
CargoRustCargo.lockCargo.toml, Cargo.lock
CompositorPHPcomposer.lockcomposer.json, composer.lock
NuGet.NET languages (C#, F#, VB), C++.csproj, .vbproj, .nuspec, .vcxproj, .fsproj.csproj, .vbproj, .nuspec, .vcxproj, .fsproj, packages.config
Fluxos de trabalho GitHub ActionsYAML.yml, .yaml.yml, .yaml
Módulos 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 PoesiaPythonpoetry.lockpoetry.lock, pyproject.toml
RubyGemsRubyGemfile.lockGemfile.lock, Gemfile, *.gemspec
Gerenciador de Pacotes SwiftSwiftPackage.resolvedPackage.resolved
YarnJavaScriptyarn.lockpackage.json, yarn.lock

Note

  • Se você listar as dependências Python em um arquivo setup.py, talvez não seja possível analisar nem listar todas as dependências do projeto.
  • Os fluxos de trabalho do GitHub Actions precisam estar localizados no diretório .github/workflows/ de um repositório para serem reconhecidos como manifestos. As ações ou os fluxos de trabalho referenciados com a sintaxe jobs[*].steps[*].uses ou jobs.<job_id>.uses serão analisados como dependências. Para obter mais informações, confira "Sintaxe de fluxo de trabalho para o GitHub Actions".
  • O Dependabot criará apenas Dependabot alerts para GitHub Actions vulneráveis que usam controle de versão semântico. Você não receberá alertas sobre uma ação vulnerável que usa o controle de versão SHA. Se você usar GitHub Actions com o controle de versão SHA, recomendamos habilitar Dependabot version updates para que seu repositório ou organização mantenha as ações que você usa atualizadas com as versões mais recentes. Para obter mais informações, consulte "Sobre alertas do Dependabot" e "Sobre as atualizações da versão do Dependabot".

Ecossistemas de pacotes com suporte por meio de ações de envio de dependência

Você pode usar a API de envio de dependência para adicionar dependências do tempo de compilação ao grafo de dependência, ou adicionar dependências dos gerenciadores de pacotes e ecossistemas de sua escolha ao grafo de dependência, mesmo que o ecossistema não esteja na lista de ecossistemas compatíveis acima. As informações obtidas dessas dependências enviadas fluirão, por sua vez, para Dependabot updates e Dependabot alerts.

Dependências enviadas para um projeto usando a API de envio de dependência mostrarão qual detector foi usado para seu envio e quando elas foram enviadas. Para obter mais informações sobre os API de envio de dependência, consulte "Usar a API de envio de dependências".

Normalmente, você pode usar o fluxo de trabalho de API de envio de dependência em um fluxo de trabalho do GitHub Actions para enviar dependências a seu projeto quando ele é criado. A maneira mais simples de usar API de envio de dependência é adicionar uma ação predefinida a seu repositório que reunirá e converterá a lista de dependências para o formato de instantâneo necessário e enviará a lista para a API. É possível encontrar links para as ações disponíveis no momento na tabela abaixo.

EcossistemaAção
GoEnvio de Dependência Go
GradleGradle Dependency Submission
MavenMaven Dependency Tree Dependency Submission
MillMill Dependency Submission
ScalaSbt Dependency Submission
NuGet e outrosAção de envio de dependência de detecção de componente

Note

Para a ação de envio de dependência de Detecção de componente, outros ecossistemas com suporte incluem Vcpkg, Conan, Conda, Crates e NuGet.

Por exemplo, o fluxo de trabalho de Envio de Dependência Go a seguir calcula as dependências para um destino de compilação Go (um arquivo Go com uma função main) e envia a lista para API de envio de dependência.

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

Você também pode criar sua própria ação. Para obter mais informações, confira "Usar a API de envio de dependências".