Skip to main content

Como usar a API de envio de dependência

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

Observação: no momento, a API Envio de Dependência está na versão beta pública e sujeita a alterações.

Sobre a API de envio de Dependência

A API de envio de dependências permite enviar dependências para um projeto. Isso permite que você adicione dependências, como aquelas resolvidas quando o software é compilado ou criado, ao recurso de gráfico de dependências do GitHub, fornecendo uma visão mais completa de todas as dependências do seu projeto.

O gráfico mostra todas as dependências que você envia usando a API, além de quaisquer dependências identificadas por meio de arquivos de manifesto ou de bloqueio no repositório (por exemplo, um arquivo package-lock.json em um projeto JavaScript). Para ver mais informações sobre como visualizar o gráfico de dependências, confira "Como explorar as dependências de um repositório".

As dependências enviadas receberão Dependabot alerts e Dependabot security updates para quaisquer vulnerabilidades conhecidas. Você só obterá Dependabot alerts para dependências que são de um dos ecossistemas com suporte do GitHub Advisory Database. As dependências enviadas não serão exibidas na revisão de dependência ou nas informações de dependência da sua organização.

As dependências são enviadas à API Envio de dependência em forma de instantâneo. Um instantâneo é um conjunto de dependências associadas a um SHA de confirmação e outros metadados, que refletem o estado atual do repositório de um commit. Para ver mais informações sobre a API de envio de dependência, confira a Documentação da API REST de envio de dependência.

Como enviar dependências em tempo de build

Você pode usar a API de envio de dependência em um fluxo de trabalho GitHub Actions para enviar dependências para seu projeto quando ele é criado.

Usando ações pré-fabricadas

A maneira mais simples de usar a API de envio 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 concluem essas etapas para vários ecossistemas estão disponíveis em GitHub Marketplace e mais ações serão criadas durante a versão beta e posteriores. Você pode encontrar links para as ações atualmente disponíveis na tabela abaixo:

EcossistemaAção
GoEnvio de Dependência Go

Por exemplo, o seguinte fluxo de trabalho de Envio de Dependência Go calcula as dependências para um destino de build Go (um arquivo Go com uma função main) 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

Como criar sua própria ação

Como alternativa, você pode escrever sua própria ação para enviar dependências para seu projeto em tempo de compilação. Seu fluxo de trabalho deve:

  1. Gere uma lista de dependências para seu projeto.
  2. Traduza a lista de dependências para o formato de instantâneo aceito pela API de envio de dependência. Para obter mais informações sobre o formato, consulte os parâmetros do corpo da operação da API "Criar um instantâneo do repositório" na Documentação da API REST de envio de dependência.
  3. Envie a lista formatada de dependências para a API de envio de dependência.

GitHub mantém o Kit de ferramentas de envio de dependência, uma biblioteca TypeScript para ajudar você a criar sua própria ação do GitHub para enviar dependências à API de envio de dependências. Para ver mais informações sobre como escrever uma ação, confira "Criando ações".