Você pode usar GitHub Actions para executar tarefas automatizadas quando Dependabot cria solicitações de pull para atualizar dependências. Talvez isso seja útil se você quiser:
-
Dependabot Verifique se as solicitações de pull (atualizações de versão e atualizações de segurança) são criadas com os dados certos para seus processos de trabalho, incluindo rótulos e nomes.
-
Acione fluxos de trabalho para enviar Dependabot pull requests (atualizações de versão e de segurança) para seu processo de revisão ou mesclá-las automaticamente.
Observação
O administrador do site precisa configurar as Dependabot updates do sua instância do GitHub Enterprise Server para que você possa usar esse recurso. Para saber mais, confira Habilitando o Dependabot para sua empresa.
Talvez você não consiga habilitar ou desabilitar Dependabot updates se um proprietário da empresa tiver definido uma política no nível da empresa. Para saber mais, confira Como impor políticas para segurança e análise de código na empresa.
Sobre Dependabot e GitHub Actions
Importante
Se Dependabot estiver habilitado para um repositório, ele sempre será executado em GitHub Actions, ignorando tanto as verificações de política do GitHub Actions quanto a desativação no nível do repositório ou da organização. Isso garante que os fluxos de trabalho de atualização de versão e segurança sempre sejam executados quando o Dependabot estiver habilitado.
Dependabot cria solicitações de pull para manter suas dependências atualizadas. Você pode usar GitHub Actions para executar tarefas automatizadas quando essas solicitações de pull são criadas. Por exemplo, busque artefatos adicionais, adicione etiquetas, execute testes ou modifique o pull request.
Dependabot consegue acionar fluxos de trabalho de GitHub Actions nos seus pull requests e comentários. No entanto, certos eventos são tratados de maneira diferente. Para obter mais informações, consulte Solução de problemas do Dependabot no GitHub Actions.
Aqui estão vários cenários comuns para solicitações de pull que podem ser automatizadas usando GitHub Actions.
Obter metadados sobre um pull request
A maioria das automações exige que você tenha informações sobre o conteúdo da solicitação de pull: qual era o nome da dependência, se for uma dependência de produção, e se for uma atualização maior, menor ou de patch. Você pode usar uma ação para recuperar informações sobre as dependências que estão sendo atualizadas por uma solicitação de pull gerada por Dependabot.
Example:
# Esse fluxo de trabalho usa ações que não são certificadas pelo GitHub.
# São fornecidas por terceiros e regidas por
# termos de serviço, política de privacidade e suporte separados
# online.
name: Dependabot fetch metadata
on: pull_request
permissions:
pull-requests: write
issues: write
jobs:
dependabot:
runs-on: ubuntu-latest
if: github.event.pull_request.user.login == 'dependabot[bot]' && github.repository == 'owner/my_repo'
steps:
- name: Dependabot metadata
id: metadata
uses: dependabot/fetch-metadata@d7267f607e9d3fb96fc2fbe83e0af444713e90b7
with:
github-token: "${{ secrets.GITHUB_TOKEN }}"
# The following properties are now available:
# - steps.metadata.outputs.dependency-names
# - steps.metadata.outputs.dependency-type
# - steps.metadata.outputs.update-type
# Esse fluxo de trabalho usa ações que não são certificadas pelo GitHub.
# São fornecidas por terceiros e regidas por
# termos de serviço, política de privacidade e suporte separados
# online.
name: Dependabot fetch metadata
on: pull_request
permissions:
pull-requests: write
issues: write
jobs:
dependabot:
runs-on: ubuntu-latest
if: github.event.pull_request.user.login == 'dependabot[bot]' && github.repository == 'owner/my_repo'
steps:
- name: Dependabot metadata
id: metadata
uses: dependabot/fetch-metadata@d7267f607e9d3fb96fc2fbe83e0af444713e90b7
with:
github-token: "${{ secrets.GITHUB_TOKEN }}"
# The following properties are now available:
# - steps.metadata.outputs.dependency-names
# - steps.metadata.outputs.dependency-type
# - steps.metadata.outputs.update-type
Para obter mais informações, confira o repositório dependabot/fetch-metadata.
Etiquetar uma solicitação de pull
Se você tiver outros fluxos de trabalho de automação ou triagem com base em GitHub rótulos, poderá configurar uma ação para atribuir rótulos com base nos metadados fornecidos.
Exemplo que sinaliza todas as atualizações de dependências de produção com uma etiqueta:
# Esse fluxo de trabalho usa ações que não são certificadas pelo GitHub.
# São fornecidas por terceiros e regidas por
# termos de serviço, política de privacidade e suporte separados
# online.
name: Dependabot auto-label
on: pull_request
permissions:
pull-requests: write
issues: write
jobs:
dependabot:
runs-on: ubuntu-latest
if: github.event.pull_request.user.login == 'dependabot[bot]' && github.repository == 'owner/my_repo'
steps:
- name: Dependabot metadata
id: metadata
uses: dependabot/fetch-metadata@d7267f607e9d3fb96fc2fbe83e0af444713e90b7
with:
github-token: "${{ secrets.GITHUB_TOKEN }}"
- name: Add a label for all production dependencies
if: steps.metadata.outputs.dependency-type == 'direct:production'
run: gh pr edit "$PR_URL" --add-label "production"
env:
PR_URL: ${{github.event.pull_request.html_url}}
# Esse fluxo de trabalho usa ações que não são certificadas pelo GitHub.
# São fornecidas por terceiros e regidas por
# termos de serviço, política de privacidade e suporte separados
# online.
name: Dependabot auto-label
on: pull_request
permissions:
pull-requests: write
issues: write
jobs:
dependabot:
runs-on: ubuntu-latest
if: github.event.pull_request.user.login == 'dependabot[bot]' && github.repository == 'owner/my_repo'
steps:
- name: Dependabot metadata
id: metadata
uses: dependabot/fetch-metadata@d7267f607e9d3fb96fc2fbe83e0af444713e90b7
with:
github-token: "${{ secrets.GITHUB_TOKEN }}"
- name: Add a label for all production dependencies
if: steps.metadata.outputs.dependency-type == 'direct:production'
run: gh pr edit "$PR_URL" --add-label "production"
env:
PR_URL: ${{github.event.pull_request.html_url}}
Aprovar automaticamente uma solicitação de pull
Você pode aprovar automaticamente Dependabot pull requests usando o GitHub CLI em um fluxo de trabalho.
Example:
# Esse fluxo de trabalho usa ações que não são certificadas pelo GitHub.
# São fornecidas por terceiros e regidas por
# termos de serviço, política de privacidade e suporte separados
# online.
name: Dependabot auto-approve
on: pull_request
permissions:
pull-requests: write
jobs:
dependabot:
runs-on: ubuntu-latest
if: github.event.pull_request.user.login == 'dependabot[bot]' && github.repository == 'owner/my_repo'
steps:
- name: Dependabot metadata
id: metadata
uses: dependabot/fetch-metadata@d7267f607e9d3fb96fc2fbe83e0af444713e90b7
with:
github-token: "${{ secrets.GITHUB_TOKEN }}"
- name: Approve a PR
run: gh pr review --approve "$PR_URL"
env:
PR_URL: ${{github.event.pull_request.html_url}}
GH_TOKEN: ${{secrets.GITHUB_TOKEN}}
# Esse fluxo de trabalho usa ações que não são certificadas pelo GitHub.
# São fornecidas por terceiros e regidas por
# termos de serviço, política de privacidade e suporte separados
# online.
name: Dependabot auto-approve
on: pull_request
permissions:
pull-requests: write
jobs:
dependabot:
runs-on: ubuntu-latest
if: github.event.pull_request.user.login == 'dependabot[bot]' && github.repository == 'owner/my_repo'
steps:
- name: Dependabot metadata
id: metadata
uses: dependabot/fetch-metadata@d7267f607e9d3fb96fc2fbe83e0af444713e90b7
with:
github-token: "${{ secrets.GITHUB_TOKEN }}"
- name: Approve a PR
run: gh pr review --approve "$PR_URL"
env:
PR_URL: ${{github.event.pull_request.html_url}}
GH_TOKEN: ${{secrets.GITHUB_TOKEN}}
Habilitar a mesclagem automática em uma solicitação de pull
Se você quiser permitir que os mantenedores marquem certos pull requests para mesclagem automática, você pode usar a funcionalidade de mesclagem automática do GitHub. Isto permite que a solicitação de pull seja mesclada quando todos os testes e as aprovações exigidos pelas regras de proteção de branch forem cumpridos com sucesso.
Para obter mais informações, consulte Mesclar automaticamente uma pull request e Gerenciar uma regra de proteção de ramo.
Em vez disso, você pode usar GitHub Actions e o GitHub CLI. Veja um exemplo que mescla automaticamente todas as atualizações de patch para my-dependency:
# Esse fluxo de trabalho usa ações que não são certificadas pelo GitHub.
# São fornecidas por terceiros e regidas por
# termos de serviço, política de privacidade e suporte separados
# online.
name: Dependabot auto-merge
on: pull_request
permissions:
contents: write
pull-requests: write
jobs:
dependabot:
runs-on: ubuntu-latest
if: github.event.pull_request.user.login == 'dependabot[bot]' && github.repository == 'owner/my_repo'
steps:
- name: Dependabot metadata
id: metadata
uses: dependabot/fetch-metadata@d7267f607e9d3fb96fc2fbe83e0af444713e90b7
with:
github-token: "${{ secrets.GITHUB_TOKEN }}"
- name: Enable auto-merge for Dependabot PRs
if: contains(steps.metadata.outputs.dependency-names, 'my-dependency') && steps.metadata.outputs.update-type == 'version-update:semver-patch'
run: gh pr merge --auto --merge "$PR_URL"
env:
PR_URL: ${{github.event.pull_request.html_url}}
GH_TOKEN: ${{secrets.GITHUB_TOKEN}}
# Esse fluxo de trabalho usa ações que não são certificadas pelo GitHub.
# São fornecidas por terceiros e regidas por
# termos de serviço, política de privacidade e suporte separados
# online.
name: Dependabot auto-merge
on: pull_request
permissions:
contents: write
pull-requests: write
jobs:
dependabot:
runs-on: ubuntu-latest
if: github.event.pull_request.user.login == 'dependabot[bot]' && github.repository == 'owner/my_repo'
steps:
- name: Dependabot metadata
id: metadata
uses: dependabot/fetch-metadata@d7267f607e9d3fb96fc2fbe83e0af444713e90b7
with:
github-token: "${{ secrets.GITHUB_TOKEN }}"
- name: Enable auto-merge for Dependabot PRs
if: contains(steps.metadata.outputs.dependency-names, 'my-dependency') && steps.metadata.outputs.update-type == 'version-update:semver-patch'
run: gh pr merge --auto --merge "$PR_URL"
env:
PR_URL: ${{github.event.pull_request.html_url}}
GH_TOKEN: ${{secrets.GITHUB_TOKEN}}
Observação
Se você usar verificações de status para testar solicitações de pull, deverá habilitar Exigir que as verificações de status passem antes de mesclar o branch de destino para Dependabot solicitações de pull. Essa regra de proteção de branch garante que as solicitações de pull não sejam mescladas, a menos que todas as verificações de status necessárias sejam aprovadas. Para obter mais informações, consulte Gerenciar uma regra de proteção de ramo.
Se o branch de destino usar uma fila de mesclagem, o GITHUB_TOKEN integrado não poderá adicionar pull requests à fila. Nesse caso, você deve autenticar o fluxo de trabalho com um personal access token ou um token GitHub App que tenha permissão para fazer merge e usá-lo no lugar de GITHUB_TOKEN na etapa gh pr merge.
políticas de Dependabot e GitHub Actions
Normalmente, se um fluxo de trabalho pode ser executado em um repositório depende GitHub Actions de verificações de política e se GitHub Actions está habilitado no nível da organização ou do repositório. Esses controles podem restringir a execução de fluxos de trabalho, especialmente quando ações externas são bloqueadas ou GitHub Actions são totalmente desabilitadas.
No entanto, quando Dependabot estiver habilitado em um repositório, seus fluxos de trabalho sempre serão executados em GitHub Actions, ignorando tanto as verificações de política do GitHub Actions quanto sua desativação.
- Dependabot os fluxos de trabalho não são bloqueados pela desativação do Actions nem por restrições de política corporativa.
- As ações mencionadas nesses fluxos de trabalho também podem ser executadas, mesmo que ações externas não sejam permitidas.
Investigando execuções de fluxo de trabalho com falha
Se a execução do fluxo de trabalho falhar, verifique o seguinte:
- Você só está executando o fluxo de trabalho quando o ator correto o acionar.
- Você está fazendo check-out da
refcorreta para opull_request. - Seus segredos estão disponíveis como segredos em Dependabot, e não como segredos em GitHub Actions.
- Você tem um
GITHUB_TOKENcom as permissões corretas.
Para obter informações sobre gravação e depuração GitHub Actions, consulte Escrevendo fluxos de trabalho.
Para obter mais dicas sobre como solucionar problemas com fluxos de trabalho, consulte Solução de problemas do Dependabot no GitHub Actions.