Sobre o envio automático de dependência
Note
No momento, o suporte para o envio automático de dependência é somente para o Maven.
O grafo de dependência analisa os arquivos de manifesto e de bloqueio de um repositório com a finalidade de ajudar os usuários no reconhecimento das dependências das quais o repositório depende. No entanto, em alguns ecossistemas, a resolução de dependências transitivas ocorre no momento da compilação e o GitHub não consegue descobrir automaticamente todas as dependências com base apenas no conteúdo do repositório.
Ao habilitar o envio automático de dependência para um repositório, o GitHub identifica automaticamente as dependências transitivas no repositório e as envia para o GitHub ao usar a API de envio de dependência. Em seguida, você pode criar relatórios sobre essas dependências ao usar o grafo de dependência.
O uso do envio automático de dependência é contabilizado nos minutos do GitHub Actions. Para saber mais, confira Sobre a cobrança das GitHub Actions.
Opcionalmente, você pode escolher configurar executores com auto-hospedagem ou executores avançados hospedados pelo GitHub para o envio automático de dependência. Para obter mais informações, confira “Como usar executores com auto-hospedagem para o envio automático de dependência” e “Como usar executores avançados hospedados pelo GitHub para o envio automático de dependência”.
Pré-requisitos
O grafo de dependência deve estar habilitado no repositório para que seja possível habilitar o envio automático de dependência.
Você também deve habilitar GitHub Actions para o repositório com a finalidade de usar o envio automático de dependência. Para saber mais, confira Gerenciando as configurações do GitHub Actions para um repositório.
Como habilitar o envio automático de dependência
Os administradores de repositório podem habilitar ou desabilitar o envio automático de dependência para um repositório ao seguir as etapas descritas neste procedimento.
Os proprietários da organização podem habilitar o envio automático de dependência para múltiplos repositórios ao usar uma configuração de segurança. Para saber mais, confira Criando uma configuração de segurança personalizada.
-
Em GitHub, acesse a página principal do repositório.
-
Abaixo do nome do repositório, clique em Configurações. Caso não consiga ver a guia "Configurações", selecione o menu suspenso , clique em Configurações.
-
Na seção "Security" da barra lateral, clique em Code security.
-
Em “Grafo de dependência”, clique no menu suspenso próximo a “Envio automático de dependência” e, em seguida, selecione Habilitar.
Após habilitar o envio automático de dependência para um repositório, o GitHub irá:
- Monitorar alterações no arquivo
pom.xml
na raiz do repositório em todas as ramificações do repositório. - Executar um envio automático de dependência a cada alteração.
É possível realizar a exibição de detalhes sobre a execução dos fluxos de trabalho automáticos ao exibir a guia Ações do repositório.
Note
O envio automático ocorrerá no primeiro push para o arquivo pom.xml
assim que a opção estiver habilitada.
Como usar executores com auto-hospedagem para o envio automático de dependência
É possível configurar executores com auto-hospedagem para realizar a execução de trabalhos de envio automático de dependência, em vez de usar a infraestrutura do GitHub Actions.
- Realize o provisionamento de um ou mais executores com auto-hospedagem, seja no nível do repositório ou da organização. Para saber mais, confira Sobre executores auto-hospedados e Adicionar executores auto-hospedados. Os executores com auto-hospedagem devem estar em execução no Linux ou no macOS e devem ter o Docker instalado.
- Atribua um rótulo
dependency-submission
a cada executor que você deseja que o envio automático de dependência use. Para saber mais, confira Usar rótulos com os executores auto-hospedados. - Na seção "Security" da barra lateral, clique em Code security.
- Em “Grafo de dependência”, clique no menu suspenso ao lado de “Envio automático de dependência” e, em seguida, selecione Habilitar para executores com rótulos.
Após habilitados, os trabalhos de envio automático de dependência serão executados nos executores com auto-hospedagem, exceto se:
- Os executores com auto-hospedagem não estiverem disponíveis.
- Não existirem grupos de executores com a marcação do rótulo
dependency-submission
.
Note
Ao usar executores com auto-hospedagem, é necessário adicionar acesso ao arquivo de configurações do servidor do Maven para permitir que os fluxos de trabalho de envio de dependência realizem a conexão com registros privados. As dependências de registros privados serão incluídas na árvore de dependência na próxima atualização pom.xml
. Para obter mais informações sobre o arquivo de configurações do servidor do Maven, confira Security and Deployment Settings na documentação do Maven.
Como usar executores avançados hospedados pelo GitHub para o envio automático de dependência
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.
- Realize o provisionamento de executores avançados no nível da organização com o nome
dependency-submission
. Para saber mais, confira Adicionando um executor maior a uma organização. - Conceda ao repositório acesso ao executor. Para saber mais, confira Permitindo que repositórios acessem executores avançados.
- Em “Grafo de dependência”, clique no menu suspenso ao lado de “Envio automático de dependência” e, em seguida, selecione Habilitar para executores com rótulos.
Solução de problemas de envio automático de dependência
No momento, o suporte para o envio automático de dependência é somente para o Maven. O recurso usa a ação Envio da Árvore de Dependência do Maven. Para obter mais informações, confira a documentação para a ação Maven Dependency Tree Dependency Submission no GitHub Marketplace. Se o seu projeto usar uma configuração Maven não padrão, ele poderá não gerar corretamente as dependências e enviá-las para o grafo de dependência.
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 executores auto-hospedados, talvez você queira gerenciar esse cache em sua infraestrutura. Para fazer isso, você pode desabilitar o cache interno definindo uma variável de ambiente GH_DEPENDENCY_SUBMISSION_SKIP_CACHE
para true
. Para saber mais, confira Armazenar informações em variáveis.