Você pode usar o GitHub Actions para executar tarefas automatizadas quando o Dependabot cria pull requests para atualizar dependências. Talvez isso seja útil se você quiser:
-
Verificar se as pull requests do Dependabot (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, nomes e revisores.
-
Disparar fluxos de trabalho para enviar pull requests do Dependabot (atualizações de versão e atualizações de segurança) para o processo de revisão ou para mesclar automaticamente.
Note
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
O Dependabot cria pull requests para manter suas dependências atualizadas. Você pode usar GitHub Actions para executar tarefas automatizadas quando essas pull requests são criadas. Por exemplo, buscar artefatos adicionais, adicionar rótulos, executar testes ou modificar a 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, confira Solução de problemas do Dependabot no GitHub Actions.
Aqui estão vários cenários comuns que podem ser automatizados usando GitHub Actions.
Obter metadados sobre uma pull request
A maior parte da automação supõe o conhecimento do conteúdo da pull request: 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 pull request gerada pelo Dependabot.
Exemplo:
name: Dependabot fetch metadata on: pull_request permissions: pull-requests: write issues: write repository-projects: 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@4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a1b2c3d 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
name: Dependabot fetch metadata
on: pull_request
permissions:
pull-requests: write
issues: write
repository-projects: 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@4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a1b2c3d
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
.
Como rotular uma pull request
Se você tiver outras automações ou fluxos de trabalho de triagem com base em rótulos do GitHub, poderá configurar uma ação para atribuir etiquetas com base nos metadados fornecidos.
Exemplo que sinaliza todas as atualizações de dependência de produção com um rótulo:
name: Dependabot auto-label on: pull_request permissions: pull-requests: write issues: write repository-projects: 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@4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a1b2c3d 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}}
name: Dependabot auto-label
on: pull_request
permissions:
pull-requests: write
issues: write
repository-projects: 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@4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a1b2c3d
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}}
Aprovação automática de uma pull request
Você pode aprovar automaticamente as pull requests Dependabot usando os dados GitHub CLI em um fluxo de trabalho.
Exemplo:
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@4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a1b2c3d 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}}
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@4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a1b2c3d
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}}
Habilitando a geração automática em uma pull request
Se você deseja permitir que os mantenedores marquem determinadas pull requests para mesclagem automática,você pode usar a funcionalidade de mesclagem automática de 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 saber mais, confira Fazer merge automático de um pull request e Gerenciar uma regra de proteção de branch.
Em vez disso, você pode usar GitHub Actions e GitHub CLI. Veja um exemplo que mescla automaticamente todas as atualizações de patch para my-dependency
:
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@4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a1b2c3d 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}}
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@4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a1b2c3d
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}}
Note
Se você usar verificações de status para testar pull requests, precisará habilitar a opção Exigir a aprovação das verificações de status antes de mesclar para o branch de destino para pull requests de Dependabot. Essa regra de proteção de branch garante que as pull requests não sejam mescladas, a menos que todas as verificações de status necessárias sejam aprovadas. Para saber mais, confira Gerenciar uma regra de proteção de branch.
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
ref
correta para opull_request
. - Os seus segredos estão disponíveis nos secredos de Dependabot, ao invés estar nos segredos de GitHub Actions.
- Você tem um
GITHUB_TOKEN
com as permissões corretas.
Para obter informações sobre como escrever e depurar GitHub Actions, confira Escrevendo fluxos de trabalho.
Para obter mais dicas para ajudar a resolver problemas com fluxos de trabalho, confira Solução de problemas do Dependabot no GitHub Actions.