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`— Necessário para acessar GitHub e baixar ações. -
`https://api.github.com`— Necessário para acesso à GitHub API. -
`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 do 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` — um 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` — um feed secundário para compilações de .NET.
Observação
A ferramenta microsoft/component-detection usada pelo .NET autosubmission é baixada dos releases GitHub, que já estão cobertos 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).
Use GitHubhospedado executores avançados para envio automático de dependência
GitHub Team ou GitHub Enterprise Cloud, os usuários podem usar executores avançados para executar os trabalhos automáticos de submissões de dependências.
- Realize o provisionamento de executores avançados no nível da organização com o nome
dependency-submission. Para obter mais informações, consulte Adicionando um executor avançado a uma organização. - Conceda ao seu repositório acesso ao executor. Para obter mais informações, consulte Permitir que os repositórios acessem executores avançados.
- 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.
-
**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.
-
**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. -
**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 GitHub manter a sincronização com o repositório upstream e também preservar 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 do repositório. Enviar por push uma confirmação que atualiza o pom.xml iniciará uma nova execução da ação Envio de Árvore de Dependência e forçará uma recompilação do gráfico 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 de envio automático do .NET usa o projeto de detecção de componentes de software livre como mecanismo para a detecção de dependência. 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 código aberto 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. Python não suporta atualmente pacotes privados; os pacotes referenciados em requirements.txt que não estão disponíveis publicamente farão a ação de envio automático falhar.
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.