Esta guía explica cómo configurar las notificaciones de Discord para el pipeline de CI/CD de ImagePickerKMP.
El proyecto incluye notificaciones de Discord para:
- Notificaciones Básicas - Integradas directamente en el workflow de CI
- Notificaciones Avanzadas - Workflow separado con información detallada de coverage
- Ve a tu servidor de Discord
- Selecciona el canal donde quieres las notificaciones
- Haz clic en el ícono de engranaje → "Integrations"
- Haz clic en "Create Webhook"
- Dale un nombre (ej., "ImagePickerKMP CI")
- Copia la URL del webhook
- Ve a tu repositorio de GitHub
- Navega a Settings → Secrets and variables → Actions
- Haz clic en "New repository secret"
- Nombre:
DISCORD_WEBHOOK_URL - Valor: Pega tu URL de webhook de Discord
Estas se activan en cada build:
- Éxito: 🎉 Build completado exitosamente
- Fallo: ❌ Build falló
Estas proporcionan información detallada:
- Estado del Build: Éxito/fallo con métricas detalladas
- Reportes de Coverage: Porcentajes de coverage de líneas y ramas
- Alertas de Coverage: Alertas basadas en umbrales para coverage bajo
🎉 ImagePickerKMP Build Success
Repository: ismoy/ImagePickerKMP
Branch: main
Commit: abc123...
Triggered by: username
📊 Coverage Report:
• Line Coverage: 45.2%
• Branch Coverage: 32.1%
Duration: 120s
Workflow: CI
🔗 View Details: https://github.com/...El sistema incluye alertas automáticas de coverage:
- < 20%:
⚠️ Advertencia de coverage bajo - 20-50%: 📈 Coverage mejorando
- ≥ 50%: 🎉 Coverage excelente
Edita .github/workflows/ci.yml y .github/workflows/notifications.yml:
- name: Notify Discord on Success
uses: Ilshidur/action-discord@master
env:
DISCORD_WEBHOOK: ${{ secrets.DISCORD_WEBHOOK_URL }}
with:
args: |
Tu mensaje personalizado aquí...Puedes personalizar el texto de notificación modificando el campo args:
args: |
🚀 **Mensaje Personalizado de Build Exitoso**
**Proyecto:** ImagePickerKMP
**Estado:** ${{ github.event.workflow_run.conclusion }}
Tu mensaje personalizado aquí...Para deshabilitar notificaciones temporalmente, comenta los pasos de notificación en los archivos de workflow.
- Verificar Secreto: Asegúrate de que
DISCORD_WEBHOOK_URLesté configurado correctamente - Verificar URL de Webhook: Prueba el webhook manualmente usando curl o Postman
- Verificar Permisos de Canal: Asegúrate de que el webhook tenga acceso al canal
- Revisar Logs de Workflow: Revisa los logs de GitHub Actions para mensajes de error
# Probar webhook de Discord
curl -X POST -H 'Content-type: application/json' \
--data '{"content":"Test notification from ImagePickerKMP"}' \
TU_URL_DE_WEBHOOK_DE_DISCORD- URL de Webhook Inválida: Verifica el formato de la URL
- Canal No Encontrado: Asegúrate de que el canal existe y el webhook tiene acceso
- Rate Limiting: Discord tiene límites de tasa; las notificaciones pueden retrasarse
- Permisos de Workflow: Asegúrate de que el workflow tenga permiso para enviar notificaciones
- Las URLs de webhook son sensibles: Nunca las commits al repositorio
- Usar secretos del repositorio: Siempre almacena las URLs de webhook en secretos de GitHub
- Monitorear uso: Revisa regularmente el uso de webhook para asegurar que funciona como se espera
Puedes enviar notificaciones a múltiples canales creando múltiples webhooks:
- name: Notify Discord - Development
uses: Ilshidur/action-discord@master
env:
DISCORD_WEBHOOK: ${{ secrets.DISCORD_DEV_WEBHOOK_URL }}
# ... otra configuración
- name: Notify Discord - Production
uses: Ilshidur/action-discord@master
env:
DISCORD_WEBHOOK: ${{ secrets.DISCORD_PROD_WEBHOOK_URL }}
# ... otra configuraciónEnvía notificaciones solo para condiciones específicas:
- name: Notify on Main Branch Only
if: github.ref == 'refs/heads/main'
uses: Ilshidur/action-discord@master
# ... configuración de notificaciónModifica los umbrales de alerta de coverage en .github/workflows/notifications.yml:
${{ steps.coverage.outputs.line_coverage < 30 && '⚠️ **Low Coverage Alert!**' || '' }}Si encuentras problemas con las notificaciones:
- Revisa la documentación de GitHub Actions
- Revisa la documentación de webhook de Discord
- Abre un issue en el repositorio para problemas específicos