Skip to main content

Enterprise Server 3.21 está disponível no momento como versão candidata a lançamento.

Automatizando o Dependabot com GitHub Actions

Exemplos de como você pode usar GitHub Actions para automatizar tarefas comuns Dependabot relacionadas.

Quem pode usar esse recurso?

Usuários com com acesso para gravação

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:

YAML
# 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:

YAML
# 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:

YAML
# 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:

YAML
# 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 ref correta para o pull_request.
  • Seus segredos estão disponíveis como segredos em Dependabot, e não como segredos em GitHub Actions.
  • Você tem um GITHUB_TOKEN com 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.