
Prérequis
- Un accès administrateur dans Corgea
- L’autorisation de créer des workflows dans votre espace de travail Slack
Configurer Slack Workflow Builder
Utilisez Slack Workflow Builder pour mapper les champs de premier niveau du payload Corgea dans un message de canal.1
Créer un workflow
- Dans Slack, ouvrez votre menu d’espace de travail
- Accédez à Tools → Workflow Builder
- Cliquez sur Create
- Choisissez Webhook comme déclencheur
- Nommez le workflow et poursuivez
2
Configurer les étapes du workflow
- Copiez l’URL du webhook Workflow Builder (
hooks.slack.com/triggers/...) - À l’étape du déclencheur Webhook, ajoutez des variables dont les noms correspondent aux clés de premier niveau de Corgea. Slack ne détecte pas automatiquement les champs du payload. Ajoutez au minimum :
message,pull_request_id,scan_url,true_positive_count,scan_id,event_type,project_name,status,branch,company - Ajoutez une étape Send a message. Elle est obligatoire, car Corgea ne publie pas lui-même dans Slack.
- Utilisez Insert a variable pour insérer ces variables dans le message. La saisie manuelle du texte
{message}ne fonctionne pas.
scan.completed envoyé par Corgea à Workflow Builder (les objets imbriqués project, summary et scheduled_scan_ids ne sont pas inclus) :scan.failed, le corps plat contient également le champ de premier niveau error lorsqu’il est disponible.Commencez par message pour obtenir un résumé prêt à envoyer, puis ajoutez pull_request_id, scan_url et true_positive_count pour le triage des pull requests.Le texte message d’un scan terminé utilise le nombre de résultats confirmés, et non le nombre total de problèmes :
Scan completed for {project} (PR #N): X true-positive finding(s) [(Y with fixes)]. View: {scan_url}
Y with fixes ne compte que les correctifs associés à ces résultats confirmés.- Terminez et publiez le workflow
3
Configurer en Corgea
- Accédez à Intégrations → Webhooks
- Créez un webhook
- Définissez Type sur
Slack - Saisissez un nom et collez l’URL Workflow Builder
- Abonnez-vous à
scan.completedet/ouscan.failed, et éventuellement àscan.started - Sous Filtres d’événements de scan (facultatif) :
- Uniquement les scans de pull request ou de merge request — ignore les scans qui ne concernent pas une pull request
- Uniquement les scans terminés comportant des résultats confirmés — ignore
scan.completedlorsquetrue_positive_countvaut 0, sans affecterscan.failed
- Cliquez sur Create Webhook et enregistrez la clé secrète à usage unique
- Cliquez sur Test pour confirmer la livraison
Résultat attendu du test du webhook
Lorsque vous cliquez sur Test Webhook pour une destination Slack Workflow Builder, Corgea envoie un exemple de payload plat :company correspond à la clé utilisée pour les événements de scan réels. company_id contient la même valeur pour assurer la compatibilité avec les anciens consommateurs des événements de test. Les destinations autres que Slack reçoivent ces champs sous data, dans l’enveloppe habituelle.
Attendez-vous à :
- HTTP 2xx de Slack (pas 400
invalid_workflow_input) - Un message Slack non vide lorsque vous mappez la variable de premier niveau
message - Des noms de variables identiques à ceux des événements de scan en production, afin de pouvoir mapper le numéro de pull request, le lien vers le scan et le nombre de résultats confirmés pendant le test
Contenu des notifications
Pour Slack Workflow Builder (Type = Slack et hooks.slack.com/triggers/...), mappez les champs de premier niveau suivants :
true_positive_count correspond au nombre de problèmes de sécurité affiché dans l’interface du scan : il exclut status=false_positive, hold_reason=false_positive et detected_by=code-quality. Les champs imbriqués tels que summary, project, scheduled_scan_ids, scan_errors, created_at et processed_at restent disponibles sous data pour Zapier et les autres destinations, ainsi que dans l’historique des livraisons, mais ne sont pas aplatis pour Slack Workflow Builder.
Notes de compatibilité
- Zapier / Autres : ces destinations reçoivent toujours l’enveloppe imbriquée (
event_id,event_type,timestamp,data), notammentdata.message,data.summaryet les nouveaux champs de triage sousdata. - Configurations Slack Workflow Builder existantes : celles qui mappent des champs
data.*imbriqués ne fonctionnent pas. Mappez les clés de premier niveau, par exemplemessageet nondata.message. - Historique des livraisons : Corgea conserve l’enveloppe imbriquée, même lorsque Slack reçoit un corps HTTP plat.
- Événements autres que les scans : ils ne sont pas aplatis sur un webhook Slack Workflow Builder. Utilisez Zapier, une autre destination ou un corps personnalisé si vous avez besoin de variables Slack exploitables.
Webhooks entrants vs Workflow Builder
- Recommandation : utilisez une URL Workflow Builder (
hooks.slack.com/triggers/...) avec une étape Send a message. Corgea aplatitscan.*etwebhook.testlorsqueType = Slack. - Incoming Webhooks (
hooks.slack.com/services/...) : l’enregistrement est refusé, sauf si vous ajoutez un corps personnalisé dont le JSON rendu contient un champtextnon vide de premier niveau. Des blocsblocksfacultatifs peuvent l’accompagner.{"text": "{{message}}"}ne fonctionne que si le webhook est limité àscan.started,scan.completed,scan.failedetscheduled_scan.daily_report, car{{message}}est vide pour les autres événements. Sans corps valide, les livraisons échouent et le webhook peut être automatiquement mis en pause.
Gestion des intégrations Slack existantes
Si vous utilisez encore des intégrations dans l’ancienne ligne Slack, ouvrez Voir tout pour les tester ou les supprimer :
Options de personnalisation
Avec Workflow Builder, vous pouvez :- Acheminer les messages vers différents canaux selon la sévérité ou le projet
- Ajouter des rappels ou des étapes de suivi
- Ajouter une logique conditionnelle fondée sur les résultats des scans, par exemple pour ne notifier que lorsque
true_positive_countest supérieur à 0 - Réutiliser les mêmes variables de payload dans plusieurs actions
