Automatiser les compilations en réponse aux événements de webhook

Cloud Build vous permet de définir des déclencheurs de webhook, qui peuvent authentifier et accepter les événements de webhook entrants. Ces événements, envoyés à une URL personnalisée, vous permettent de connecter directement des systèmes externes et des systèmes de gestion de code source externes tels que Bitbucket.com, Bitbucket Server ou GitLab à Cloud Build via des événements de webhook.

Avec les déclencheurs de webhook, vous pouvez définir un fichier de configuration de compilation intégré plutôt que de spécifier une source lors de la création de votre déclencheur. La configuration de compilation intégrée vous permet de contrôler les opérations Git et de définir le reste de votre compilation.

Cette page explique comment créer des déclencheurs de webhook afin d'automatiser les compilations en réponse à des événements de webhook.

Avant de commencer

  • Activer les API Cloud Build and Secret Manager.

    Activer les API

  • Pour utiliser les commandes gcloud sur cette page, installez la Google Cloud CLI.

Créer des déclencheurs de webhooks

Console

Pour créer un déclencheur de webhook à l'aide de la console Google Cloud:

  1. Ouvrez la page Déclencheurs :

    Ouvrir la page Déclencheurs de compilation

  2. Sélectionnez votre projet en haut de la page, puis cliquez sur Ouvrir.

  3. Cliquez sur Créer un déclencheur.

  4. Entrez les paramètres de déclencheur suivants :

    • Nom : nom de votre déclencheur.
    • Région: sélectionnez la région du déclencheur.

      • Si le fichier de configuration de compilation associé au déclencheur spécifie un pool privé, Cloud Build utilise ce pool pour exécuter la compilation. Dans ce cas, la région que vous spécifiez dans votre déclencheur doit correspondre à celle dans laquelle vous avez créé votre pool privé.
      • Si le fichier de configuration de compilation associé au déclencheur ne spécifie pas de pool privé, Cloud Build utilise le pool par défaut pour exécuter votre compilation dans la même région que votre déclencheur.
    • Description (facultatif) : description de votre déclencheur.

    • Événement: sélectionnez Événement de webhook pour configurer votre déclencheur de sorte qu'il lance des compilations en réponse aux événements de webhook entrants.

    • URL de webhook: utilisez l'URL du webhook pour authentifier les événements webhooks entrants.

      • Secret: vous aurez besoin d'un secret pour authentifier les événements webhook entrants. Vous pouvez créer un secret ou utiliser un secret existant. Ce secret est différent du secret associé à votre clé SSH.

        Pour créer un secret:

        1. Sélectionnez Utiliser un nouveau secret (généré par Cloud Build).
        2. Cliquez sur Créer un secret.

          La fenêtre pop-up Créer un secret de webhook s'affiche.

        3. Dans le champ Nom du secret, saisissez le nom du secret.

        4. Cliquez sur Créer un secret pour enregistrer votre secret, qui sera automatiquement créé et stocké dans Secret Manager.

        Pour utiliser un secret existant, procédez comme suit:

        1. Sélectionnez Utiliser un secret existant ou créer le vôtre.
        2. Dans le champ Secret, sélectionnez le nom du secret que vous souhaitez utiliser dans le menu déroulant ou suivez les instructions pour ajouter un secret par ID de ressource.
        3. Dans le champ Version du secret, sélectionnez la version de votre secret dans le menu déroulant.

        Si vous utilisez un secret existant, vous devrez peut-être attribuer manuellement le rôle "Accesseur de secrets" de Secret Manager à votre compte de service Cloud Build, service-${PROJECT_NUMBER}@gcp-sa-cloudbuild.iam.gserviceaccount.com. Pour en savoir plus, consultez la section Attribuer le rôle Secret Manager à votre compte de service.

      Une fois le secret créé ou sélectionné, un aperçu d'URL de webhook s'affiche. Votre URL contiendra une clé API générée par Cloud Build et votre secret. Si Cloud Build ne parvient pas à récupérer votre clé API, vous pouvez l'ajouter manuellement à l'URL ou apprendre à obtenir une clé API si vous ne disposez pas de pour l'instant.

      Vous pouvez utiliser l'URL pour appeler un événement de webhook en effectuant une requête HTTP à l'aide de la méthode POST.

      Utilisez la commande suivante pour appeler un événement de webhook:

      curl -X POST -H "Content-type: application/json" "https://cloudbuild.googleapis.com/v1/projects/${PROJECT_ID}/locations/${REGION}/triggers/${TRIGGER_NAME}:webhook?key=${API_KEY}&secret=${SECRET_VALUE}&trigger=${TRIGGER_NAME}&projectId=${PROJECT_ID}" -d "{}"
      

      Une fois ces étapes effectuées, le rôle Accesseur de secrets de Secret Manager sera automatiquement attribué à votre compte de service Cloud Build, service-${PROJECT_NUMBER}@gcp-sa-cloudbuild.iam.gserviceaccount.com. Si vous ne voyez pas ce rôle automatiquement ajouté à votre compte de service, suivez les étapes décrites dans la section Attribuer le rôle Secret Manager à votre compte de service.

    • Source (facultatif): sélectionnez la source à compiler lorsque le déclencheur de webhook s'exécute. Si vous spécifiez une configuration de compilation intégrée, vous n'avez pas besoin de spécifier la source suivante. Vous pouvez spécifier comme source 1re génération ou 2e génération. Pour en savoir plus, consultez la section Dépôts Cloud Build.

      • Dépôt : sélectionnez le dépôt de votre choix dans la liste des dépôts disponibles.

      • Branche ou tag : spécifiez une expression régulière à laquelle faire correspondre la valeur de la branche ou du tag. Pour en savoir plus sur la syntaxe des expressions régulières acceptables, consultez la page Syntaxe RE2.

      • Contrôle des commentaires : si vous avez sélectionné Demande d'extraction (application GitHub uniquement) comme événement, choisissez l'une des options suivantes pour contrôler si une compilation doit être exécutée automatiquement par le déclencheur :

        • Obligatoire, sauf pour les propriétaires et les collaborateurs : lorsqu'une demande d'extraction est créée ou mise à jour par un propriétaire ou un collaborateur du dépôt, les compilations sont automatiquement exécutées par le déclencheur. Si un contributeur externe lance l'action, les compilations ne seront exécutées qu'après que le propriétaire ou le collaborateur a ajouté /gcbrun à la demande d'extraction.

        • Obligatoire : lorsqu'une demande d'extraction est créée ou mise à jour par un contributeur, les compilations ne sont exécutées qu'après que le propriétaire ou le collaborateur a ajouté /gcbrun à la demande d'extraction. Les compilations sont exécutées chaque fois qu'une modification d'une requête d'extraction est apportée.

        • Non requis : lorsqu'une demande d'extraction est créée ou mise à jour par un contributeur, les compilations sont automatiquement exécutées par des déclencheurs.

    • Configuration: sélectionnez le fichier de configuration de compilation situé dans votre dépôt distant ou créez un fichier de configuration de compilation intégré à utiliser pour votre compilation. Si vous n'avez pas spécifié de dépôt source, vous devez sélectionner un fichier de configuration de compilation intégré comme option de configuration.

      • Type: sélectionnez le type de configuration à utiliser pour votre compilation.
        • Fichier de configuration Cloud Build (yaml or json) : utilisez un fichier de configuration de compilation pour votre configuration.
        • Dockerfile: utilisez un fichier Dockerfile pour votre configuration.
        • Buildpacks: utilisez des packs de création pour votre configuration.
      • Emplacement: spécifiez l'emplacement de votre configuration.

        • Dépôt: si votre fichier de configuration se trouve dans votre dépôt distant, indiquez l'emplacement de votre fichier de configuration de compilation, le répertoire Dockerfile ou le répertoire des packs de compilation. Si votre type de configuration de compilation est un fichier Dockerfile ou un pack de création, vous devez attribuer un nom à l'image obtenue et, éventuellement, un délai avant expiration pour la compilation. Une fois le nom de l'image Dockerfile ou du pack de création fourni, vous obtenez un aperçu de la commande docker build ou pack que votre compilation va exécuter.
        • Variables d'environnement de pack de création (facultatif): si vous avez sélectionné buildpacks comme type de configuration, cliquez sur Ajouter une variable d'environnement de pack pour spécifier les variables d'environnement et valeurs de votre pack de création. Pour en savoir plus sur les variables d'environnement du pack de création, consultez la section Variables d'environnement.
        • Intégré: si vous avez sélectionné Fichier de configuration Cloud Build (yaml ou json) comme option de configuration, vous pouvez spécifier votre configuration de compilation de manière intégrée. Cliquez sur Open Editor (Ouvrir l'éditeur) pour écrire votre fichier de configuration de compilation dans la console Google Cloud en utilisant la syntaxe YAML ou JSON. Cliquez sur OK pour enregistrer la configuration de compilation.

      Dans l'exemple suivant, les journaux du fichier de configuration de compilation intégrée renvoient "hello world":

       steps:
       - name: 'ubuntu'
         args: ['echo', 'hello world']
      
    • Substitutions (facultatif): si vous avez sélectionné le fichier de configuration de compilation comme option de configuration de compilation ou que vous avez créé un fichier de configuration de compilation intégré, vous pouvez choisir de définir des Variables de substitution spécifiques au déclencheur à l'aide de ce champ. Vous pouvez également obtenir des données à l'aide de liaisons de charge utile lors de la définition des valeurs des variables de substitution.

    • Filtres (facultatif): vous pouvez créer une règle dans un déclencheur qui détermine si votre déclencheur exécutera une compilation en fonction de vos variables de substitution.

  5. Cliquez sur Créer pour créer votre déclencheur de compilation.

gcloud

(Facultatif) Obtenir une clé API

Pour authentifier votre événement de webhook entrant, vous avez besoin d'une clé API.

Pour obtenir une clé API:

  1. Ouvrez la page Identifiants dans la console Google Cloud:

    Ouvrez la page Identifiants.

  2. Cliquez sur Créer des identifiants.

  3. Cliquez sur Clé API.

    Une boîte de dialogue contenant la clé API s'affiche. Prenez note de votre clé API.

  4. Si vous souhaitez limiter votre clé pour les applications de produits, cliquez sur Restreindre la clé pour effectuer les étapes supplémentaires permettant de sécuriser votre clé. Sinon, cliquez sur Fermer.

    Pour savoir comment restreindre votre clé, consultez la section Appliquer des restrictions de clé API.

(Facultatif) Attribuer le rôle "Secret Manager" à votre compte de service

Cloud Build attribue automatiquement le rôle Accesseur de secrets de Secret Manager aux comptes de service nécessitant ce rôle lors de la configuration du secret. Si ce rôle n'est pas automatiquement attribué au compte de service nécessaire, procédez comme suit pour l'ajouter manuellement afin que votre compte de service ait accès à votre secret:

  1. Ouvrez la page IAM dans la console Google Cloud:

    Ouvrir la page IAM

  2. Prenez note du compte de service Cloud Build auquel vous souhaitez accorder le rôle.

  3. Ouvrez la page Secret Manager dans la console Google Cloud:

    Ouvrir la page Secret Manager

  4. Cliquez sur le nom de votre secret.

    La page Informations détaillées sur le secret s'affiche.

    1. Cliquez sur l'onglet Autorisations.

    2. Cliquez sur Accorder l'accès.

      Le panneau Accorder l'accès s'affiche.

    3. Dans la section Ajouter des comptes principaux, ajoutez l'adresse e-mail associée à votre compte de service Cloud Build.

    4. Dans la section Attribuer des rôles, sélectionnez Secret Manager > Accesseur de secrets Secret Manager.

    5. Cliquez sur Enregistrer.

Étapes suivantes