Skip to main content

Usar a API de envio de dependências

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

Sobre API de envio de dependência

Você pode usar a API REST para 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 obter mais informações sobre exibição do grafo de dependência, confira 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á os Dependabot alerts das dependências de um dos ecossistemas compatíveis com o GitHub Advisory Database. Para saber mais sobre esses ecossistemas, confira Sobre o banco de dados de avisos do GitHub. Para dependências transitivas enviadas por meio de API de envio de dependência, o Dependabot abrirá automaticamente solicitações de pull para atualizar a dependência pai, se uma atualização estiver disponível.

As dependências enviadas serão mostradas na revisão de dependência, mas não estão disponíveis nos insights de dependência da sua organização.

Note

A API de revisão de dependência e API de envio de dependência funcionam em conjunto. Isso significa que a API de revisão de dependência incluirá dependências enviadas por meio de API de envio de dependência.

As dependências são enviadas para API de envio de dependência na forma de um instantâneo. Um instantâneo é um conjunto de dependências associadas a um SHA de commit e a outros metadados, que reflete o estado atual do repositório de um commit. Instantâneos podem ser gerados por meio de suas dependências detectadas no momento da compilação ou de uma SBOM (lista de materiais de software). Há GitHub Actions que dão suporte a qualquer um desses casos de uso. Para obter mais informações sobre o API de envio de dependência, consulte Pontos de extremidade da API REST para envio de dependências.

Como enviar dependências em tempo de build

Você poderá 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 for criado.

Usando ações pré-fabricadas

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.

Para obter mais informações sobre essas ações, consulte Ecossistemas de pacotes com suporte para grafos de dependência.

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 por API de envio de dependência. Para obter mais informações sobre o formato, consulte os parâmetros do corpo para o ponto de extremidade da API "Criar um instantâneo do repositório" em Pontos de extremidade da API REST para envio de dependências.
  3. Envie a lista formatada de dependências para API de envio de dependência.

O GitHub mantém o Kit de Ferramentas de Envio de Dependência, uma biblioteca TypeScript para auxiliar a criar sua própria ação do GitHub a fim de enviar dependências para API de envio de dependência. Para obter mais informações sobre como escrever uma ação, confira Compartilhar automações.

Como gerar e enviar uma SBOM (lista de materiais de software)

Uma SBOM é um inventário formal e legível por computador das dependências e das informações associadas de um projeto (como versões, identificadores de pacotes, licenças e informações de direitos autorais). As SBOMs ajudam a reduzir os riscos da cadeia de fornecedores:

  • Fornecendo transparência sobre as dependências usadas pelo repositório
  • Permitindo que as vulnerabilidades sejam identificadas no início do processo
  • Fornecendo insights sobre problemas de conformidade, segurança ou qualidade de licença que podem existir na base de código
  • Permitindo que você cumpra melhor os vários padrões de proteção de dados

Como gerar uma SBOM (lista de materiais de software)

Para gerar um SBOM, você pode usar:

AçãoDetalhes
Anchore SBOM ActionUsa o Syft para criar SBOMs compatíveis com SPDX 2.2 com os ecossistemas com suporte
Ferramenta de SBOM da MicrosoftExamina suas dependências e cria uma SBOM compatível com SPDX

Enviando uma SBOM (lista de materiais de software) para o API de envio de dependência

Para receber Dependabot alerts para dependências que apresentam vulnerabilidades conhecidas, é possível carregar e enviar a SBOM para o API de envio de dependência. Para enviar uma SBOM para o API de envio de dependência, você pode usar uma das ações na tabela a seguir.

Tip

A ação Enviar Dependência SPDX e a ação Ancorar SBOM podem ser usadas para gerar a SBOM e enviá-la para o API de envio de dependência.

AçãoDetalhes
Ação de Envio de Dependência do SPDXUsa a Ferramenta de SBOM da Microsoft para criar SBOMs compatíveis com SPDX 2.2 com os ecossistemas com suporte
Anchore SBOM ActionUsa o Syft para criar SBOMs compatíveis com SPDX 2.2 com os ecossistemas com suporte
Ação de Envio de Dependência de SBOMCarrega um SBOM CycloneDX para API de envio de dependência

Por exemplo, o seguinte fluxo de trabalho de Ação de Envio de Dependência SPDX calcula as dependências de um repositório, gera um SBOM exportável no formato SPDX 2.2 e o envia para API de envio de dependência.


name: SBOM upload

on:
  workflow_dispatch:
  push:
    branches: ["main"]

jobs:
  SBOM-upload:

    runs-on: ubuntu-latest
    permissions:
      id-token: write
      contents: write

    steps:
    - uses: actions/checkout@v4
    - name: Generate SBOM
      # generation command documentation: https://github.com/microsoft/sbom-tool#sbom-generation
      run: |
        curl -Lo $RUNNER_TEMP/sbom-tool https://github.com/microsoft/sbom-tool/releases/latest/download/sbom-tool-linux-x64
        chmod +x $RUNNER_TEMP/sbom-tool
        $RUNNER_TEMP/sbom-tool generate -b . -bc . -pn $ -pv 1.0.0 -ps OwnerName -nsb https://sbom.mycompany.com -V Verbose
    - uses: actions/upload-artifact@v4
      with:
        name: sbom
        path: _manifest/spdx_2.2
    - name: SBOM upload
      uses: advanced-security/spdx-dependency-submission-action@5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a1b2c3d4e
      with:
        filePath: "_manifest/spdx_2.2/"