Skip to main content

Envio automático de dependência

Requisitos de acesso à rede, solução de problemas e comportamento específico do ecossistema para envio automático de dependência.

Configurar o acesso à rede para executores auto-hospedados

Se os executores auto-hospedados operarem atrás de um firewall com acesso restrito à Internet de saída, você deverá adicionar determinadas URLs à lista de permissões para envio automático de dependência. As URLs necessárias dependem dos ecossistemas que seus repositórios usam.

URLs necessárias para todos os ecossistemas

Essas URLs são necessárias para todos os fluxos de trabalho de envio automático de dependências:

  •           `https://github.com`– Obrigatório para acessar o GitHub e baixar ações.
    
  •         `https://api.github.com`— Necessário para o acesso à API GitHub .
    
  •           `https://*.githubusercontent.com`– Obrigatório para baixar o código-fonte da ação e de versões (incluindo `raw.githubusercontent.com`, `github-releases.githubusercontent.com` e `objects.githubusercontent.com`).
    

URLs específicas do ecossistema

Dependendo dos ecossistemas usados, talvez seja necessário permitir a lista de URLs adicionais.

Go

  •           `https://go.dev`– Para baixar a cadeia de ferramentas do Go.
    
  •         `https://golang.org`— Domínio alternativo para downloads do Go.
    
  •           `https://proxy.golang.org`– Proxy oficial do módulo Go para baixar módulos Go durante a detecção de dependências.
    

Observação

O repositório actions/go-versions é acessado por meio do https://raw.githubusercontent.com, que já está coberto pelos requisitos gerais.

Java (Maven e Gradle)

  •           `https://repo.maven.apache.org`– Repositório do Maven Central para baixar dependências.
    
  •         `https://api.adoptium.net`— Para baixar distribuições do JDK do Adoptium/Temurin (distribuição padrão usada por `actions/setup-java`).
    

Se você usar uma distribuição JDK diferente, também poderá precisar:

  •         `https://aka.ms` e `https://download.microsoft.com`— Para Microsoft Build of OpenJDK (observação: `aka.ms` também é usado para downloads .NET).
    
  •         `https://download.oracle.com`— Para o Oracle JDK.
    
  •         `https://api.azul.com`— Para Azul Zulu OpenJDK.
    

.NET (C#, F#, Visual Basic)

  •         `https://aka.ms` — encurtador de URL da Microsoft que redireciona para os locais de download do .NET.
    
  •         `https://builds.dotnet.microsoft.com` – Feed primário para downloads do SDK e do runtime do .NET.
    
  •           `https://ci.dot.net`– Feed secundário para builds do .NET.
    

Observação

A ferramenta microsoft/component-detection usada pelo envio automático do .NET é baixada das versões do GitHub, o que já está coberto pelos requisitos gerais (https://github.com e https://*.githubusercontent.com).

Python

  •         `https://python.org` — para baixar interpretadores de Python.
    

Observação

O repositório actions/python-versions e as versões microsoft/component-detection são acessados por meio de URLs já abordadas nos requisitos gerais (https://*.githubusercontent.com e https://github.com).

Usar o GitHub hospedado pelo executores avançados para o envio automático de dependência

Os usuários do GitHub Team ou do GitHub Enterprise Cloud podem usar executores avançados para realizar a execução de envio automático de dependência.

  1. Realize o provisionamento de executores avançados no nível da organização com o nome dependency-submission. Para obter mais informações, consulte Como adicionar um executor avançado a uma organização.
  2. Conceda ao seu repositório acesso ao executor. Para obter mais informações, consulte Como permitir que os repositórios acessem os executores avançados.
  3. Em “Grafo de dependência”, clique no menu suspenso próximo a “Envio automático de dependência” e, em seguida, selecione Habilitado para executores rotulados.

Solucionar problemas relacionados à submissão automática de dependências

O envio automático de dependência faz o melhor esforço para armazenar em cache downloads de pacotes entre execuções usando a ação Cache para acelerar os fluxos de trabalho. Para os executores auto-hospedados, talvez você queira gerenciar esse cache em sua infraestrutura. Para fazer isso, você poderá desabilitar o cache interno definindo uma variável de ambiente GH_DEPENDENCY_SUBMISSION_SKIP_CACHE como true. Para saber mais, confira Armazenar informações em variáveis.

Eliminação de duplicação de manifesto

Um repositório pode usar vários métodos para submissão de dependências, o que pode resultar no manifesto do mesmo pacote sendo analisado múltiplas vezes, potencialmente produzindo saídas diferentes a cada análise. O grafo de dependência usa a lógica de deduplicação para analisar as saídas, priorizando as informações mais precisas para cada arquivo de manifesto.

O grafo de dependência exibe apenas uma instância de cada arquivo de manifesto usando as regras de precedência a seguir.

  1.        **Os envios de usuário** têm a prioridade mais alta, pois geralmente são criados durante compilações de artefatos que têm as informações mais completas.
    
    • Se houver vários instantâneos manuais de detectores diferentes, eles serão classificados em ordem alfabética por correlator e pelo primeiro usado.
    • Se houver dois correlacionadores com o mesmo detector, as dependências resolvidas serão mescladas. Para obter mais informações sobre correlacionadores e detectores, consulte Pontos de extremidade da API REST para envio de dependências.
  2.        **Os envios automáticos** têm a segunda prioridade mais alta, pois também são criados durante compilações de artefato, mas não são enviados pelos usuários.
    
  3.        **Os resultados da análise estática** são usados quando nenhum outro dado está disponível.
    

Informações específicas do ecossistema do pacote

Projetos Maven

Para projetos do Maven, o envio automático de dependências executa uma bifurcação de software livre do Envio de dependências de árvore de dependências do Maven. A bifurcação permite que o GitHub permaneça em sincronia com o repositório upstream, além de manter algumas alterações aplicáveis apenas ao envio automático. A origem da bifurcação está disponível em advanced-security/maven-dependency-submission-action.

Se as dependências do repositório parecerem imprecisas, verifique se o carimbo de data/hora do último build do grafo de dependência corresponde à última alteração no arquivo pom.xml. O carimbo de data/hora é visível na tabela de alertas na guia Dependabot alerts do repositório. Efetuar push de um commit que atualiza o pom.xml disparará uma nova execução da ação Envio de Árvore de Dependência e forçará uma recompilação do grafo de dependência desse repositório.

Projetos Gradle

Para projetos Gradle, o envio automático de dependências executa uma bifurcação das ações do Gradle de software livre em gradle/actions. A bifurcação está disponível em actions/gradle-build-tools-actions. Você pode exibir os resultados da ação de envio automático na guia Actions do repositório. Cada execução será rotulada como "Automatic Dependency Submission (Gradle)" e sua saída terá o conteúdo JSON que a ação enviou à API.

projetos .NET

A ação .NET de submissão automática usa o projeto open source component-detection como o mecanismo para sua detecção de dependências. Ele dá suporte a .NET 8.x, 9.x e 10.x. O envio automático do .NET será executado se o dependabot.yml do repositório definir nuget como um package-ecosystem ou quando houver um arquivo de manifesto com suporte no diretório raiz do repositório. Os arquivos de manifesto com suporte incluem .sln, .csproj, packages.config, .vbproj, .vcxproj e .fsproj.

projetos Python

Python usa o projeto open source component-detection como seu mecanismo de geração de grafo subjacente. A ação de autosubmissão para Python só será executada se houver um arquivo requirements.txt no diretório raiz do repositório. Atualmente, o envio automático do Python não dá suporte a pacotes privados; os pacotes referenciados no requirements.txt que não estão disponíveis publicamente causarão falha na ação de remissão automática.

Observação

Essa ação usa actions/setup-python para instalar Python. Você deve incluir um . python arquivo de versão no repositório para especificar a versão Python a ser instalada.