Os PRs do Dependabot, no seu telemóvel
Quando o Dependabot abre um pull request, o Zenhook envia o título, o repositório e um botão que abre o PR. Nenhum GitHub App e nenhuma permissão de escrita no repositório.
Gatilho
Novo PR do Dependabot
Destino
Um canal do Zenhook
Ação
Tocar em “Ver o PR”
1. Crie um canal
Crie um canal chamado dependabot e copie o URL completo do webhook nas definições do canal.
2. Teste o canal
Substitua o marcador e execute este comando uma vez. O alerta de exemplo deve chegar de imediato no seu telemóvel.
curl -X POST "O_SEU_URL_DE_WEBHOOK_DO_ZENHOOK" \
-H "Content-Type: application/json" \
-d '{
"title": "Bump lodash from 4.17.20 to 4.17.21",
"level": "info",
"emoji": "package",
"source": "Dependabot",
"message": "Atualização proposta em acme/api",
"linkUrl": "https://github.com/acme/api/pull/42",
"linkText": "Ver o PR"
}'3. Adicione um secret do Dependabot
No GitHub, abra Settings → Secrets and variables → Dependabot. Crie um secret de repositório chamado ZENHOOK_WEBHOOK_URL e cole o URL completo do webhook do canal.
Use um secret do Dependabot, e não um secret normal do Actions. O GitHub só expõe os secrets do Dependabot aos workflows iniciados pelo Dependabot.
4. Copie o workflow
Guarde este ficheiro como .github/workflows/zenhook-dependabot.yml na sua branch padrão.
name: Zenhook - Alertas do Dependabot
on:
pull_request:
types: [opened, reopened]
permissions:
contents: read
jobs:
notify:
if: github.event.pull_request.user.login == 'dependabot[bot]'
runs-on: ubuntu-latest
steps:
- name: Enviar o pull request ao Zenhook
env:
ZENHOOK_WEBHOOK_URL: ${{ secrets.ZENHOOK_WEBHOOK_URL }}
PR_TITLE: ${{ github.event.pull_request.title }}
PR_URL: ${{ github.event.pull_request.html_url }}
PR_NUMBER: ${{ github.event.pull_request.number }}
REPOSITORY: ${{ github.repository }}
run: |
jq -n \
--arg title "$PR_TITLE" \
--arg url "$PR_URL" \
--arg number "$PR_NUMBER" \
--arg repository "$REPOSITORY" \
'{
title: $title,
level: "info",
emoji: "package",
source: "Dependabot",
message: ("Atualização proposta em " + $repository),
fields: [
{ label: "Repositório", value: $repository },
{ label: "Pull request", value: ("#" + $number) }
],
linkUrl: $url,
linkText: "Ver o PR"
}' | curl --fail-with-body --retry 2 \
-X POST "$ZENHOOK_WEBHOOK_URL" \
-H "Content-Type: application/json" \
--data-binary @-O workflow não descarrega nem executa o código do pull request. O token do GitHub é só de leitura; limita-se a reencaminhar os metadados que já estão no evento para a o seu URL privado do Zenhook.
Um repositório ou vários?
- Um: adicione o secret e o workflow a esse repositório.
- Vários: crie um secret do Dependabot ao nível da organização, autorize apenas os repositórios escolhidos e adicione o mesmo workflow em cada um.
Esta receita envia um alerta e um link. Não aprova nem faz merge do PR. Consulte a documentação do GitHub sobre os workflows do Dependabot e os secrets do Dependabot.