Cette page explique comment configurer des Webhooks dans Secure Source Manager.
Les webhooks sont des requêtes HTTP déclenchées par un événement dans Secure Source Manager et envoyées à une URL spécifiée par l'utilisateur.
Avant de commencer
Rôles requis
Pour obtenir les autorisations nécessaires pour créer des Webhooks, demandez à votre administrateur de vous accorder les rôles IAM suivants :
-
Authentifiez les webhooks à l'aide d'une chaîne de requête sensible :
- Administrateur de dépôts Secure Source Manager (
roles/securesourcemanager.repoAdmin) sur le dépôt Secure Source Manager - Accesseur d'instances Secure Source Manager (
roles/securesourcemanager.instanceAccessor) sur l'instance Secure Source Manager
- Administrateur de dépôts Secure Source Manager (
-
Authentifiez les Webhooks à l'aide de l'autorisation du compte de service :
- Utilisateur du compte de service (
roles/iam.serviceAccountUser) sur le compte de service du dépôt Secure Source Manager - Agent de service SSM (
roles/iam.serviceAccountTokenCreator) sur le compte de service du dépôt Secure Source Manager - Demandeur Cloud Run (
roles/run.invoker) sur le service de destination (requis uniquement si la destination est Cloud Run)
- Utilisateur du compte de service (
Pour en savoir plus sur l'attribution de rôles, consultez Gérer l'accès aux projets, aux dossiers et aux organisations.
Vous pouvez également obtenir les autorisations requises avec des rôles personnalisés ou d'autres rôles prédéfinis.
Pour savoir comment attribuer des rôles Secure Source Manager, consultez Contrôle des accès avec IAM et Accorder aux utilisateurs l'accès aux instances.
Configurer un webhook
Console
- Dans l'interface Web Secure Source Manager, accédez au dépôt pour lequel vous souhaitez créer un webhook.
- Cliquez sur Paramètres.
- Cliquez sur Webhooks, puis sur Add webhook (Ajouter un webhook).
Dans le champ ID du hook, saisissez un ID pour le webhook.
Dans le champ URL cible, saisissez l'URL du webhook. Par exemple, si vous souhaitez déclencher une compilation dans Jenkins, vous pouvez configurer un déclencheur de webhook, puis saisir l'URL du déclencheur Jenkins ici pour déclencher votre compilation dans Jenkins.
Dans la section Déclencher sur, sélectionnez l'une des options suivantes :
- Push : pour déclencher une action lors d'un push vers le dépôt.
- État de la demande d'extraction modifié : pour déclencher une action en cas de modification de l'état de la demande d'extraction.
Configurez l'authentification du webhook à l'aide d'une chaîne de requête sensible ou de l'authentification par compte de service :
Chaîne de requête sensible :
Votre chaîne de requête sensible se compose des valeurs
keyetsecretde l'URL de webhook, y compris les préfixeskey=etsecret=. Pour configurer l'autorisation de la chaîne de requête sensible, vous devez supprimer ces valeurs de l'URL de votre webhook et les ajouter au champ Chaîne de requête sensible :- Supprimez
?de l'URL de votre webhook. - Copiez la partie restante de l'URL, en commençant par
key=. - Collez cette partie dans le champ Chaîne de requête sensible.
- Supprimez la même partie de l'URL de votre webhook.
Par exemple, pour l'URL suivante :
https://cloudbuild.googleapis.com/v1/projects/my-project/triggers/test-trigger:webhook?key=eitIfKhYnv0LrkdsyHqIros8fbsheKRIslfsdngf&secret=My%20Secret%20Votre chaîne de requête sensible serait :
key=eitIfKhYnv0LrkdsyHqIros8fbsheKRIslfsdngf&secret=My%20Secret%20- Supprimez
Authentification par compte de service :
- Vérifiez que votre dépôt dispose d'un compte de service avec les rôles IAM définis pour l'authentification du compte de service dans Rôles requis.
- Sélectionnez Activer l'authentification du compte de service.
Si vous avez sélectionné Envoyer, vous pouvez saisir une liste d'autorisation pour les événements push dans le champ Filtre de branche.
Le champ Filtre de branche utilise le modèle glob. Seules les opérations sur les branches correspondantes déclenchent une déclencheur de compilation. Par exemple,
{main,dev}se déclenche lors des événements push vers les branchesmainetdev. Si le champ est vide ou défini sur*, les événements push pour toutes les branches sont signalés. Pour en savoir plus sur la syntaxe, consultez la documentation glob.Cliquez sur Add webhook (Ajouter un Webhook).
Le webhook s'affiche sur la page Webhooks.
REST
Pour créer un webhook, appelez la méthode hooks.create en envoyant une requête POST au point de terminaison hooks. Vous pouvez authentifier votre webhook à l'aide d'une chaîne de requête sensible ou de l'authentification par compte de service.
Chaîne de requête sensible
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ -d '{ "targetUri": "https://${SERVICE_NAME}.app/webhook?key=${KEY}&secret=${SECRET}", "events": ["PUSH"] "sensitiveQueryString": "${SENSITIVE_QUERY_STRING_VALUE}" }' \ "https://securesourcemanager.googleapis.com/v1/projects/${PROJECT_ID}/locations/${LOCATION}/repositories/${REPOSITORY}/hooks?hook_id=${HOOK_ID}"Votre
SENSITIVE_QUERY_STRING_VALUEdoit correspondre à la valeur dekeyetsecretdans l'URL de votre webhook. Par exemple, si votrekeyesteitIfKhYnv0LrkdsyHqIros8fbsheKRIslfsdngfet que votresecretestMySecret, votreSENSITIVE_QUERY_STRING_VALUEdoit êtrekey=eitIfKhYnv0LrkdsyHqIros8fbsheKRIslfsdngf&secret=MySecret.Authentification par compte de service
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ -d '{ "targetUri": "https://${SERVICE_NAME}.app/webhook", "events": ["PUSH"], "serviceAccountAuth": true }' \ "https://securesourcemanager.googleapis.com/v1/projects/${PROJECT_ID}/locations/${LOCATION}/repositories/${REPOSITORY}/hooks?hook_id=${HOOK_ID}"
Tester votre webhook
- Sur la page Webhooks de Secure Source Manager, cliquez sur le webhook que vous souhaitez tester.
En bas de la page, cliquez sur Tester la distribution.
Un événement de substitution est ajouté à la file d'attente de diffusion. Il peut s'écouler quelques secondes avant qu'il n'apparaisse dans l'historique des livraisons.
Vous pouvez également utiliser une commande
gitpour envoyer ou fusionner une demande d'extraction;extraction afin de tester le webhook.Vérifiez l'état de la compilation ou de l'événement déclenchés dans l'historique des compilations du service où vous avez configuré votre déclencheur de webhook.
Vous pouvez également afficher la requête et la réponse à la diffusion du test dans la section Diffusions récentes de la page Webhook Secure Source Manager après avoir envoyé votre première diffusion de test.
Substituer les variables YAML Cloud Build par des données de charge utile
Si vous utilisez des webhook pour vous connecter à Cloud Build, vous pouvez remplacer les variables YAML Cloud Build par des données de charge utile de webhook Secure Source Manager.
Sur la page Webhooks de Secure Source Manager, dans la section Livraisons récentes, cliquez sur la première ligne.
L'en-tête Request et le contenu envoyé par la charge utile du webhook s'affichent.
Accédez au tableau de bord Cloud Build, puis cliquez sur Déclencheurs.
Cliquez sur le déclencheur que vous souhaitez configurer.
Dans la section Paramètres avancés, sous Variables de substitution, cliquez sur + Ajouter une variable.
Saisissez le nom et la valeur de la variable. Le préfixe de la valeur est
body.Par exemple, pour remplacer
_REPO_URLpar le champ de données de charge utilerepository.clone_urlet_COMMIT_SHApar le dernier sha de commit dans le fichier YAML Cloud Build, saisissez les noms et valeurs suivants :- Variable 1 :
_REPO_URLValeur 1 :$(body.repository.clone_url) - Variable 2 :
_COMMIT_SHAValeur 2 :$(body.after)
Le fichier YAML Cloud Build ressemble à ce qui suit :
steps: - name: gcr.io/cloud-builders/git env: - '_REPO_URL=$_REPO_URL' - '_COMMIT_SHA=$_COMMIT_SHA' script: | #!/bin/sh git clone ${_REPO_URL} /workspace cd /workspace git reset --hard ${_COMMIT_SHA}- Variable 1 :