Créer et gérer des déclencheurs de compilation

Un déclencheur Cloud Build lance automatiquement une compilation chaque fois que vous apportez des modifications à votre code source. Vous pouvez configurer le déclencheur afin de compiler votre code pour toute modification apportée au dépôt source ou bien uniquement pour les modifications correspondant à certains critères.

Cette page explique comment se connecter aux dépôts sources, tels que GitHub et Bitbucket, et comment créer des déclencheurs de compilation afin de compiler le code hébergé dans ces dépôts.

Avant de commencer

Se connecter aux dépôts sources

Pour commencer, vous devez connecter Cloud Build à votre dépôt source avant de pouvoir compiler le code hébergé dans ce dépôt. Vos dépôts hébergés dans Cloud Source Repositories sont connectés à Cloud Build par défaut. Vous pouvez ainsi directement créer des déclencheurs pour vos dépôts Cloud Source Repositories sans avoir besoin de les connecter manuellement. Pour configurer une association à GitHub et à Bitbucket, procédez comme suit :

  1. Ouvrez la page Déclencheurs dans Google Cloud Console.

    Ouvrir la page Déclencheurs

  2. Sélectionnez votre projet et cliquez sur Ouvrir.

  3. Cliquez sur Connecter un dépôt.

  4. Sélectionnez le dépôt hébergeant votre code source.

    Si vous sélectionnez comme dépôt source GitHub (dupliqué) ou Bitbucket (dupliqué), Cloud Build met en miroir votre dépôt dans Cloud Source Repositories et utilise le dépôt dupliqué pour toutes ses opérations.

  5. Cliquez sur Continuer.

  6. Authentifiez-vous auprès de votre dépôt source à l'aide de votre nom d'utilisateur et de votre mot de passe.

  7. Dans la liste des dépôts disponibles, sélectionnez le dépôt de votre choix, puis cliquez sur Connecter un dépôt.

    Pour les dépôts externes, tels que GitHub et Bitbucket, vous devez disposer d'autorisations de niveau propriétaire pour le projet Cloud avec lequel vous travaillez.

  8. Cliquez sur Ajouter un déclencheur pour continuer en créant un déclencheur de compilation afin d'automatiser la compilation du code source du dépôt, ou bien sur OK.

Créer un déclencheur de compilation

Console

  1. Ouvrez la page Déclencheurs dans Google Cloud Console.

    Ouvrir la page Déclencheurs

  2. Sélectionnez votre projet dans le menu déroulant du sélecteur de projet, en haut de la page.

  3. Cliquez sur Ouvrir.

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

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

    • Nom : saisissez le nom de votre déclencheur.

    • Description (facultative) : saisissez une description du déclencheur.

    • Événement : sélectionnez l'événement lié au dépôt qui appelle votre déclencheur.

      • Déployer sur une branche : configurez votre déclencheur pour lancer une compilation sur les commits réalisés dans une branche spécifique.

      • Transférer le nouveau tag : configurez votre déclencheur pour lancer une compilation sur des commits contenant un tag particulier.

      • Demande d'extraction (application GitHub seulement) : configurez votre déclencheur pour lancer une compilation sur les commits d'une demande d'extraction. Cette fonctionnalité est disponible uniquement si vous créez un déclencheur d'application GitHub. Pour en savoir plus sur la création d'un déclencheur d'application GitHub, consultez la section Créer des déclencheurs d'application GitHub.

    • Source : sélectionnez le dépôt et la branche ou le tag correspondants pour surveiller les événements.

      • Dépôt : sélectionnez le dépôt de votre choix dans la liste des dépôts disponibles. Pour connecter un nouveau dépôt, consultez la section Connexion aux dépôts sources.

      • 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.

    • Fichiers inclus (facultatif) : les modifications affectant au moins l'un de ces fichiers déclencheront une compilation. Vous pouvez utiliser des chaînes glob pour spécifier plusieurs fichiers avec des caractères génériques. Les caractères génériques acceptables incluent les caractères pris en charge par Go Match, ** et alternation.

    • Fichiers ignorés (facultatif) : les modifications affectant uniquement des fichiers ignorés ne déclencheront pas de compilation. Vous pouvez utiliser des chaînes glob pour spécifier plusieurs fichiers avec des caractères génériques. Les caractères génériques acceptables incluent les caractères pris en charge par Go Match, ** et alternation.

      Si vous spécifiez un fichier à la fois dans Fichiers inclus et dans Fichiers ignorés, les modifications apportées à ce fichier ne déclenchent pas de compilation. Supposons que vous spécifiez **/README.md dans Fichiers ignorés pour ignorer README.md dans n'importe quel répertoire, et spécifiez src/* dans Fichiers inclus pour déclencher une compilation sur les modifications des fichiers du dossier src/. Si vous apportez une modification à src/README.md, Cloud Build ne déclenche pas de compilation. Chaque fois que vous envoyez une modification dans votre code source, Cloud Build recherche des fichiers inclus et ignorés dans vos fichiers modifiés pour déterminer si une compilation doit être appelée :

      • Si vous exécutez une modification dans le dépôt sur une branche existante, Cloud Build examine les fichiers modifiés entre le commit que vous venez d'exécuter et le commit vers lequel la branche était précédemment dirigée.
      • Si vous envoyez une modification dans une branche nouvellement créée, Cloud Build traite tous les fichiers du dépôt comme des fichiers modifiés.
      • Si vous supprimez une branche, Cloud Build ne déclenche pas de compilation.
    • Configuration de la compilation : sélectionnez le fichier de configuration de compilation (situé dans le dépôt distant) à utiliser pour chaque compilation.

      • Pour utiliser un fichier Dockerfile dans votre configuration de compilation, vous devez spécifier le répertoire Dockerfile et attribuer un nom à l'image obtenue. Si besoin, vous pouvez également définir un délai d'expiration pour votre compilation. Une fois le fichier Dockerfile et le nom de l'image fournis, vous obtenez un aperçu de la commande docker build que votre compilation va exécuter.

      • Pour utiliser un fichier de configuration de compilation, vous devez indiquer son emplacement.

    • Variables de substitution (facultatives) : si vous avez choisi un fichier de configuration Cloud Build pour configurer la compilation, ce champ vous permet de définir des variables de substitution spécifiques à ce déclencheur. Par exemple, supposons que vous créez plusieurs déclencheurs, chacun visant à déployer votre application dans un environnement spécifique. Vous pouvez indiquer dans votre fichier de configuration que votre application est déployée dans un environnement, puis utiliser ce champ pour définir des variables de substitution spécifiant vers quel environnement ce déclencheur doit effectuer le déploiement. Pour en savoir plus sur la manière de spécifier des valeurs de substitution dans les fichiers de configuration de compilation, consultez la page Remplacer les valeurs des variables.

  6. Cliquez sur Créer pour enregistrer le déclencheur de compilation.

gcloud

Si votre code source se trouve dans Cloud Source Repositories, procédez comme suit pour créer un déclencheur :

    gcloud beta builds triggers create cloud-source-repositories \
    --repo=[REPO_NAME] \
    --branch-pattern=".*" \
    --build-config=[BUILD_CONFIG_FILE] \

Où :

  • --repo est le nom du dépôt.
  • --branch-pattern correspond au type de déclencheur, spécifié en tant que chaîne. Dans l'exemple ci-dessus, la valeur spécifiée est ".*",. Elle indique qu'une compilation est déclenchée lorsque des modifications sont envoyées vers n'importe quelle branche du dépôt. Vous pouvez également utiliser --tag-pattern pour indiquer que les compilations ne doivent être déclenchées que si elles sont associées à des tags spécifiques ;
  • --build-config correspond au chemin d'accès à votre fichier de configuration de compilation.

Pour obtenir la liste complète des options, consultez la section de la documentation de référence de gcloud consacrée à la création de déclencheurs pour Cloud Source Repositories.

Si votre code source se trouve dans GitHub, procédez comme suit pour créer un déclencheur :

    gcloud beta builds triggers create github \
    --repo-name=[REPO_NAME] \
    --repo-owner=[REPO_OWNER] \
    --branch-pattern=".*" \
    --build-config=[BUILD_CONFIG_FILE] \

Où :

  • --repo-name est le nom du dépôt.
  • --repo-owner correspond au nom du propriétaire du dépôt ;
  • --branch-pattern correspond au type de déclencheur, spécifié en tant que chaîne. Dans l'exemple ci-dessus, la valeur spécifiée est ".*",. Elle indique qu'une compilation est déclenchée lorsque des modifications sont envoyées vers n'importe quelle branche du dépôt. Vous pouvez également utiliser --tag-pattern pour indiquer que les compilations ne doivent être déclenchées que si elles sont associées à des tags spécifiques ou --pull-request-pattern pour indiquer la branche git de base à mettre en correspondance avec tous les événements de demande d'extraction ;
  • --build-config correspond au chemin d'accès à votre fichier de configuration de compilation.

Pour obtenir la liste complète des options, consultez la section de la documentation de référence de gcloud consacrée à la création de déclencheurs pour GitHub.

Une fois que vous avez exécuté la commande gcloud pour créer un déclencheur associé à Cloud Source Repositories ou à GitHub, vous devriez voir un résultat semblable à ce qui suit :

  NAME         CREATE_TIME                STATUS
  trigger-001  2019-10-30T20:45:03+00:00

Tester un déclencheur de compilation

Pour tester manuellement un déclencheur de compilation, procédez comme suit :

  1. Ouvrez la page Déclencheurs dans Google Cloud Console.

    Ouvrir la page Déclencheurs

  2. Identifiez votre déclencheur dans la liste, puis cliquez sur Exécuter le déclencheur.

Ignorer un déclencheur de compilation

Dans certains cas, vous souhaiterez peut-être modifier votre code source sans pour autant déclencher de compilation. Par exemple, il n'est pas souhaitable de déclencher une compilation lorsque vous mettez à jour une documentation ou des fichiers de configuration.

Dans de tels scénarios, vous pouvez inclure [skip ci] ou [ci skip] dans le message de commit afin d'empêcher le déclenchement d'une compilation.

Si vous souhaitez exécuter une compilation de ce commit ultérieurement, utilisez le bouton Exécuter le déclencheur de la page Déclencheurs.

Inclure l'historique du dépôt dans une compilation

Pour compiler la source dans un dépôt Git, Cloud Build exécute un clone superficiel du dépôt. Cela signifie que seul le commit ayant déclenché la compilation est extrait dans l'espace de travail à compiler. Cloud Build ne consulte aucun autre historique ni branche. Ceci est effectué par souci d'efficacité, afin que les compilations n'aient pas à attendre pour récupérer l'intégralité du dépôt et de l'historique uniquement pour compiler un seul commit.

Si vous souhaitez inclure plus d'historique de dépôt dans la compilation, ajoutez une étape de compilation à votre fichier de configuration de compilation afin de "remplir" le clone. Exemple :

steps:
- name: gcr.io/cloud-builders/git
  args: ['fetch', '--unshallow']
...

Pour en savoir plus sur git fetch, consultez la documentation de référence de git. Pour obtenir des instructions sur la rédaction d'un fichier de configuration de compilation, consultez la section Présentation de la configuration de compilation.

Désactiver un déclencheur de compilation

Console

  1. Ouvrez la page Déclencheurs dans Google Cloud Console.

    Ouvrir la page Déclencheurs de compilation

  2. Sélectionnez votre projet dans le menu déroulant du sélecteur de projet, en haut de la page.

  3. Cliquez sur Ouvrir.

  4. Localisez la ligne correspondant au déclencheur que vous souhaitez désactiver.

  5. Cliquez sur le menu (trois points alignés verticalement) situé à l'extrémité droite de cette ligne.

  6. Sélectionnez Désactiver.

gcloud

Pour désactiver un déclencheur, procédez comme suit :

  1. Exportez le déclencheur que vous souhaitez désactiver :

     gcloud beta builds triggers export [NAME] --destination=[PATH]
    

    Où :

    • [NAME] correspond au nom de votre déclencheur.
    • [PATH] est le chemin d'accès au fichier vers lequel vous souhaitez exporter le déclencheur. Par exemple, vous pouvez spécifier votre chemin de fichier sous la forme examples/trigger.yaml. Veuillez noter que le nom de fichier de votre déclencheur doit avoir l'extension .yaml.
  2. Ouvrez le fichier contenant votre déclencheur exporté.

    Votre fichier se présentera comme suit :

     createTime: '2020-02-21T20:02:50.215599013Z'
     description: Push to any branch
     filename: cloudbuild.yaml
     github:
       name: example-repo-name
       owner: example-owner
       push:
         branch: .*
     id: example-id
     name: Push-to-any-branch
     tags:
     - github-default-push-trigger
    
  3. Ajoutez le champ disabled à la fin de votre fichier et définissez la valeur sur True.

     disabled: True
    
  4. Enregistrez votre fichier.

  5. Importez votre déclencheur :

     gcloud beta builds triggers import --source=[PATH]
    

    Où :

    • [PATH] est le chemin d'accès au fichier du déclencheur que vous souhaitez importer.

Le déclencheur de compilation est maintenant désactivé.

La désactivation d'un déclencheur ne supprime pas le déclencheur. Pour supprimer un déclencheur, consultez la section Supprimer un déclencheur de compilation. Vous pouvez réactiver un déclencheur en définissant son état sur Activé.

Supprimer un déclencheur de compilation

Console

  1. Ouvrez la page Déclencheurs dans Google Cloud Console.

    Ouvrir la page Déclencheurs de compilation

  2. Sélectionnez votre projet dans le menu déroulant du sélecteur de projet, en haut de la page.

  3. Cliquez sur Ouvrir.

  4. Localisez la ligne correspondant au déclencheur que vous souhaitez supprimer.

  5. Cliquez sur le menu (trois points alignés verticalement) situé à l'extrémité droite de cette ligne.

  6. Sélectionnez Supprimer.

gcloud

Pour supprimer un déclencheur, exécutez la commande suivante :

  gcloud beta builds triggers delete [NAME]

Où :

  • [NAME] correspond au nom de votre déclencheur.

Pour obtenir la liste complète des options, consultez la section de la documentation de référence de gcloud consacrée à la suppression de déclencheurs.

Implications de sécurité des déclencheurs de compilation

Les déclencheurs de compilation utilisent le compte Cloud Build pour exécuter des compilations, ce qui peut fournir des autorisations au moment de la compilation aux utilisateurs qui utilisent des déclencheurs pour exécuter une compilation. Tenez compte des implications de sécurité suivantes lorsque vous utilisez des déclencheurs de compilation :

  • Un utilisateur qui n'a pas accès à votre projet Cloud, mais possède un accès en écriture au dépôt associé aux déclencheurs de compilation du projet, sera autorisé à modifier le code en cours de création.
  • Si vous utilisez des déclencheurs de demande d'extraction GitHub, tout utilisateur disposant d'un accès en lecture au dépôt peut envoyer une demande d'extraction, qui peut exécuter une compilation comprenant des modifications du code de la demande d'extraction. Pour savoir comment désactiver ce comportement pour les déclencheurs de demande d'extraction GitHub, consultez la page Créer des déclencheurs d'application GitHub.

Pour en savoir plus sur le compte de service Cloud Build et les autorisations associées, consultez la page Compte de service Cloud Build.

Étape suivante