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 do qual depende
- Os dependentes, os repositórios e os pacotes que dependem dele
Para cada dependência, você pode ver as informações de licença e 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.
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. As dependências indiretas que são inferidas por meio de um arquivo de manifesto (ou um equivalente), são excluídas das verificações de dependências não seguras.
Gerenciador de pacotes | Idiomas | Formatos recomendados | Todos os formatos com suporte |
---|---|---|---|
Cargo | Rust | Cargo.lock | Cargo.toml , Cargo.lock |
Compositor | PHP | composer.lock | composer.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 Actions | YAML | .yml , .yaml | .yml , .yaml |
Módulos Go | Go | go.mod | go.mod |
Maven | Java, Scala | pom.xml | pom.xml |
npm | JavaScript | package-lock.json | package-lock.json , package.json |
pip | Python | requirements.txt , pipfile.lock | requirements.txt , pipfile , pipfile.lock , setup.py |
pnpm | JavaScript | pnpm-lock.yaml | package.json , pnpm-lock.yaml |
pub | Dart | pubspec.lock | pubspec.yaml , pubspec.lock |
Python Poesia | Python | poetry.lock | poetry.lock , pyproject.toml |
RubyGems | Ruby | Gemfile.lock | Gemfile.lock , Gemfile , *.gemspec |
Gerenciador de Pacotes Swift | Swift | Package.resolved | Package.resolved |
Yarn | JavaScript | yarn.lock | package.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 sintaxejobs[*].steps[*].uses
oujobs.<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".
Para ecossistemas que resolvem dependências transitivas em tempo de compilação, recomendamos configurar o envio de dependência para enviar automaticamente essas dependências para o grafo de dependência. Para obter mais informações, confira "Configuração do envio automático de dependência para o repositório".
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.
Ecossistema | Ação |
---|---|
Go | Envio de Dependência Go |
Gradle | Gradle Dependency Submission |
Maven | Maven Dependency Tree Dependency Submission |
Mill | Mill Dependency Submission |
Scala | Sbt Dependency Submission |
NuGet e outros | Açã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".