Automatiser les compilations avec Cloud Build

Cet article explique comment automatiser les compilations à l'aide de Cloud Build et Cloud Source Repositories.

Vous pouvez configurer Cloud Build pour compiler automatiquement une nouvelle image chaque fois qu'un utilisateur effectue une modification dans les fichiers stockés dans Cloud Source Repositories. Les événements qui lancent des compilations automatiques sont appelés des déclencheurs de compilation. Ces déclencheurs veillent à ce que les images de conteneur soient toujours à jour. Vous pouvez également les utiliser pour compiler et tester des branches de fonctionnalités.

Les déclencheurs de compilation peuvent effectuer une compilation basée sur un fichier Dockerfile ou sur un fichier de configuration de compilation.

Utiliser un fichier Dockerfile

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. Pour plus de détails sur la création de fichiers Dockerfile, consultez la documentation Docker.

Une fois le Dockerfile et le nom de l'image fournis, vous obtenez un aperçu de la commande docker build que votre compilation va exécuter et un résumé de la configuration du déclencheur.

Utiliser un fichier de configuration de compilation

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

Une fois l'emplacement défini, vous devez voir un résumé du déclencheur.

Avant de commencer

Informations supplémentaires

  • Les déclencheurs de compilation utilisent les clones superficiels du dépôt. Avec les clones superficiels, seul le commit unique ayant déclenché une compilation automatique est extrait dans l'espace de travail. Pour plus d'informations et découvrir comment inclure plus d'historique de dépôt, consultez la section Remplir des clones.

  • Si vous utilisez un autre fournisseur Git hébergé, tel que GitHub ou Bitbucket, et que vous n'avez pas encore mis en miroir le dépôt dans Cloud Source Repositories, vous devez disposer de l'autorisation cloudbuilds.builds.create pour le projet Google Cloud avec lequel vous travaillez. Cette autorisation est généralement accordée via le rôle cloudbuild.builds.editor.

    Lorsque vous configurez un déclencheur de compilation avec un dépôt externe pour la première fois, vous devez configurer une autorisation avec ce dépôt. Pour plus d'informations, consultez la section Ajouter un dépôt en tant que dépôt distant.

    Une fois que vous avez configuré votre dépôt externe, Cloud Source Repositories crée un miroir de votre dépôt.

  • Pour plus d'informations sur les quotas et les limites de Cloud Build, consultez la section Quotas et limites de la documentation Cloud Build.

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.

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

      Lorsque la compilation s'exécute, le contenu de votre dépôt est copié vers /workspace, qui est le répertoire de travail par défaut utilisé par Cloud Build. Pour en savoir plus sur les répertoires de travail, consultez la page Présentation de la configuration des compilations.

      • Branche ou tag : spécifiez une expression régulière à laquelle faire correspondre la valeur de la branche ou du tag. Les barres obliques (/) ne peuvent pas être utilisées dans les tags. Pour en savoir plus sur la syntaxe des expressions régulières acceptable, consultez la page Syntaxe RE2.
    • 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.

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

        • Repository (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 packs de création. 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 Ouvrir l'éditeur pour écrire votre fichier de configuration de compilation dans Google Cloud Console à l'aide d'une syntaxe YAML ou JSON. Cliquez sur OK pour enregistrer la configuration de compilation.

    • Compte de service: sélectionnez le compte de service à utiliser lors de l'appel de votre déclencheur. Si vous ne sélectionnez pas de compte de service, le compte de service Cloud Build par défaut est utilisé.

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

gcloud

Exécutez la commande suivante :

    gcloud beta builds triggers create cloud-source-repositories \
    --repo=REPO_NAME \
    --branch-pattern=BRANCH_PATTERN \ # or --tag-pattern=TAG_PATTERN
    --build-config=BUILD_CONFIG_FILE \
    --service-account=SERVICE_ACCOUNT \
    --require-approval

Où :

  • REPO_NAME est le nom du dépôt.
  • BRANCH_PATTERN est le nom de la branche de votre dépôt sur lequel appeler la compilation.
  • TAG_PATTERN est le nom du tag de votre dépôt sur lequel appeler la compilation.
  • BUILD_CONFIG_FILE correspond au chemin d'accès à votre fichier de configuration de compilation.
  • SERVICE_ACCOUNT (version bêta) correspond à l'adresse e-mail associée à votre compte de service. Si vous n'incluez pas cette option, le compte de service Cloud Build par défaut est utilisé.
  • [Facultatif] --require-approval est l'option à inclure pour configurer votre déclencheur de sorte qu'il nécessite une approbation.

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.

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

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

Afficher les déclencheurs de compilation

Pour afficher les déclencheurs dans Google Cloud Console, ouvrez la page Déclencheurs de Cloud Build.

Pour afficher les déclencheurs d'un projet donné dans Cloud Source Repositories, cliquez sur Paramètres  en haut à droite, puis sur Déclencheurs Cloud Build.

Ignorer un déclencheur de compilation

Dans certains cas, vous souhaiterez peut-être modifier votre code source, mais pas déclencher de 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 pour que la compilation ne soit pas déclenchée.

Exemple :

Author: A User <auser@example.com>
Date:   Tue Apr 3 12:03:35 2018 -0700

Fixed customer affecting issue. [skip ci]

Si vous souhaitez exécuter ultérieurement une compilation sur ce commit, utilisez le bouton Exécuter le déclencheur.

Remplir des clones

Pour compiler la source dans un dépôt Git, Cloud Build exécute un clone superficiel du dépôt. Lorsque Cloud Source Repositories exécute un clone superficiel, il n'extrait de l'espace de travail que le commit ayant déclenché la compilation, puis le compile à partir de cette source. Cloud Source Repositories ne consulte aucune autre branche ou historique. Cette procédure est effectuée par souci d'efficacité. Ainsi, les compilations n'ont pas à attendre que Cloud Source Repositories récupère l'intégralité du dépôt et de l'historique pour compiler un seul commit.

Pour 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 sur git. Pour obtenir des instructions sur l'écriture d'un fichier de configuration de compilation, consultez la section Présentation de la configuration de compilation.

Étape suivante