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.

Package managerLanguagesRecommended formatsAll supported formats
CargoRustCargo.lockCargo.toml, Cargo.lock
ComposerPHPcomposer.lockcomposer.json, composer.lock
NuGet.NET languages (C#, F#, VB), C++.csproj, .vbproj, .nuspec, .vcxproj, .fsproj.csproj, .vbproj, .nuspec, .vcxproj, .fsproj, packages.config
GitHub Actions workflowsYAML.yml, .yaml.yml, .yaml
Go modulesGogo.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
Swift Package ManagerSwiftPackage.resolvedPackage.resolved
YarnJavaScriptyarn.lockpackage.json, yarn.lock

Notes:

  • If you list your Python dependencies within a setup.py file, we may not be able to parse and list every dependency in your project.

  • GitHub Actions workflows must be located in the .github/workflows/ directory of a repository to be recognized as manifests. Any actions or workflows referenced using the syntax jobs[*].steps[*].uses or jobs.<job_id>.uses will be parsed as dependencies. For more information, see "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. For more information, see "Sobre alertas do Dependabot" and "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

Observação: 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".