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.
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 saber mais, confira 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 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 |
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".
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.
O grafo de dependência exibirá as dependências enviadas agrupadas por ecossistema, mas separadamente das dependências analisadas dos arquivos de manifesto ou de bloqueio. Para saber mais sobre os API de envio de dependência, confira 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 |
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 saber mais, confira Usar a API de envio de dependências.