Skip to main content

Usando a API de envio de dependência

Você pode usar a API de submissão de dependência para enviar dependências para projetos, como as dependências resolvidas quando um projeto é criado ou compilado.

Note: The Dependency submission API is currently in public beta and subject to change.

Sobre a API de envio de dependência

The Dependency submission API lets you submit dependencies for a project. This enables you to add dependencies, such as those resolved when software is compiled or built, to GitHub's dependency graph feature, providing a more complete picture of all of your project's dependencies.

The dependency graph shows any dependencies you submit using the API in addition to any dependencies that are identified from manifest or lock files in the repository (for example, a package-lock.json file in a JavaScript project). For more information about viewing the dependency graph, see "Exploring the dependencies of a repository."

Submitted dependencies will receive Alertas do Dependabot and Atualizações de segurança do Dependabot for any known vulnerabilities. Você só obterá Alertas do Dependabot para dependências que são de um dos ecossistemas compatíveis do Banco de Dados Consultivo GitHub. Submitted dependencies will not be surfaced in dependency review or your organization's dependency insights.

As dependências são enviadas para a API de envio de dependência na forma de um instantâneo. Um instantâneo é um conjunto de dependências associadas a um commit SHA e outros metadados, que reflete o estado atual do seu repositório para um commit. Para obter mais informações sobre a API de envio de dependência, consulte a a documentação da API de envio de dependência.

Envio de dependências em tempo de compilação

Você pode usar a API de envio de dependência em um fluxo de trabalho GitHub Actions para enviar dependências para o seu projeto quando seu projeto for construído.

Usando ações pré-criadas

A maneira mais simples de usar a API de submissão de dependência é adicionando uma ação pré-criada ao 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. As ações que completam essas etapas para diversos ecossistemas estão disponíveis em GitHub Marketplace e mais ações serão criadas durante do beta e posteriormente. Você pode encontrar links para as ações disponíveis na tabela abaixo:

EcossistemaAção
GoEnvio de dependência do Go

Por exemplo, o fluxo de trabalho a seguir do Envio de dependência do Go calcula as dependências para uma meta de compilação do Go (um arquivo do Go com uma função principal) e envia a lista para a 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

# Envionment 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@v3

      - uses: actions/setup-go@v3
        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

Criando sua própria ação

Como alternativa, você pode escrever sua própria ação para enviar dependências para o seu projeto no momento da compilação. Seu fluxo de trabalho deverá:

  1. Gerar uma lista de dependências para o seu projeto.
  2. Traduzir a lista de dependências no formato snapshot aceito pela API de envio de dependência. Para obter mais informações sobre o formato, consulte os parâmetros do texto para a operação da API de "Criar um instantâneo de repositório" na Dcocumentação da API REST de envio de dependência.
  3. Enviar a lista de dependências formatadas à API de envio de dependência.

GitHub Enterprise Cloud mantém o Kit de ferramentas de envio de dependência, uma biblioteca TypeScript para ajudar você a construir o seu próprio GitHub Action para enviar dependências à API de envio de dependência. Para obter mais informações sobre como escrever uma ação, consulte "Criando ações".