Stocker et afficher les journaux de compilation

Lorsque vous exécutez des compilations, Cloud Build collecte et stocke vos journaux de compilation. Cette page explique comment stocker, afficher et supprimer des journaux de compilation.

Choisir où envoyer les journaux de compilation

Vous pouvez configurer Cloud Build pour qu'il envoie les journaux de compilation à un bucket dans Cloud Storage, un bucket dans Cloud Logging ou les deux.

  • Si vous souhaitez contrôler la durée de conservation de vos journaux de compilation stockés, envoyez-les à Cloud Logging. Cloud Logging propose également plus d'options pour rechercher des journaux de compilation spécifiques dans un bucket.

  • Dans certains cas, il existe un délai entre le moment où un journal de compilation est généré et celui où Logging le reçoit. L'envoi de vos journaux de compilation dans un bucket Cloud Storage peut réduire cette latence.

Cloud Storage et Logging vous permettent de stocker des journaux dans un bucket par défaut créé par Google ou dans un bucket personnalisé créé par l'utilisateur. Les buckets par défaut vous permettent d'afficher les journaux stockés dans le bucket, mais vous ne pouvez rien y modifier. Si vous avez besoin d'exercer un contrôle total sur le bucket que vous utilisez pour le stockage des journaux de compilation, envoyez vos journaux dans un bucket créé par l'utilisateur.

Stocker les journaux de compilation dans des buckets par défaut

Cloud Logging et Cloud Storage disposent tous deux de buckets par défaut dans lesquels vous pouvez stocker vos journaux de compilation. Ces buckets sont créés et détenus par Google. Ils peuvent recevoir des journaux provenant de plusieurs régions. Pour envoyer vos journaux de compilation à l'un de ces buckets, configurez LoggingMode de votre fichier de configuration de compilation avec l'une des valeurs suivantes:

  • GCS_ONLY: les journaux sont stockés dans le bucket Cloud Storage par défaut.

  • CLOUD_LOGGING_ONLY: les journaux sont stockés dans le bucket Logging par défaut.

  • LEGACY: les journaux sont stockés dans les deux buckets par défaut.

Le bucket de journalisation par défaut est associé à une stratégie de conservation de 30 jours pour les journaux stockés. Pour définir une règle de conservation personnalisée pour les journaux de compilation stockés dans la journalisation, stockez-les dans un bucket personnalisé.

Le bucket Cloud Storage par défaut ne dispose d'aucune règle de conservation.

Stocker les journaux de compilation dans un bucket Cloud Storage appartenant à l'utilisateur et spécifique à la région

Si vous envoyez des journaux de compilation au bucket Cloud Storage par défaut, Cloud Build les stocke dans une région spécifiée par Google, qui peut être différente de l'emplacement où vous exécutez une compilation. Toutefois, vous pouvez également configurer votre compilation afin que Cloud Build envoie les journaux de compilation à un bucket Cloud Storage appartenant à l'utilisateur dans la même région que celle où vous exécutez votre compilation. Cette configuration vous permet de mieux contrôler l'emplacement des données de journal de compilation, ce qui peut vous aider à respecter les exigences de résidence des données.

Accorder des autorisations IAM:

Si votre bucket Cloud Storage et Cloud Build se trouvent dans le même projet Google Cloud et que vous utilisez l'ancien compte de service Cloud Build, ce compte de service dispose par défaut des autorisations IAM nécessaires. Aucune autorisation supplémentaire n'est requise. Sinon, procédez comme suit :

Pour obtenir les autorisations nécessaires pour stocker les journaux de compilation dans un bucket appartenant à l'utilisateur et spécifique à la région, demandez à votre administrateur de vous accorder le rôle IAM Administrateur de l'espace de stockage (roles/storage.admin) sur le compte de service utilisé pour votre compilation. Pour en savoir plus sur l'attribution de rôles, consultez la page Gérer l'accès aux projets, aux dossiers et aux organisations.

Vous pouvez également obtenir les autorisations requises via des rôles personnalisés ou d'autres rôles prédéfinis.

Configurez le bucket Cloud Storage spécifique à la région :

  1. Dans votre fichier de configuration de compilation, ajoutez l'option defaultLogsBucketBehavior et définissez sa valeur sur REGIONAL_USER_OWNED_BUCKET:

    steps:
    - name: 'gcr.io/cloud-builders/docker'
      args: [ 'build', '-t', 'us-central1-docker.pkg.dev/myproject/myrepo/myimage', '.' ]
    options:
      defaultLogsBucketBehavior: REGIONAL_USER_OWNED_BUCKET
    
    {
      "steps": [
        {
          "name": "gcr.io/cloud-builders/docker",
          "args": [
            "build",
            "-t",
            "us-central1-docker.pkg.dev/myproject/myrepo/myimage",
            "."
          ]
        }
        ],
        "options": {
          "defaultLogsBucketBehavior": "REGIONAL_USER_OWNED_BUCKET"
        }
    }
    
  2. Utilisez le fichier de configuration de compilation pour démarrer une compilation à l'aide de la ligne de commande, de l'API ou des déclencheurs.

    Lorsque vous exécutez votre compilation, Cloud Build crée le nouveau bucket dans la région où vous exécutez votre compilation, puis stocke les journaux de compilation dans ce bucket. Les builds suivants dans le même projet et la même région utiliseront le bucket existant tant que REGIONAL_USER_OWNED_BUCKET est actif. Ce bucket appartient à l'utilisateur. Vous pouvez donc le configurer comme s'il s'agissait d'un bucket créé par l'utilisateur.

Si vous définissez l'option REGIONAL_USER_OWNED_BUCKET, puis créez des compilations dans plusieurs régions, Cloud Build crée plusieurs buckets pour vos journaux de compilation.

Les buckets Cloud Storage par défaut spécifiques à une région ne sont associés à aucune règle de conservation. Toutefois, vous pouvez automatiser la suppression des journaux de compilation de votre bucket en configurant une règle de cycle de vie des objets.

Stocker des journaux de compilation dans des buckets créés par l'utilisateur

Les buckets créés par l'utilisateur vous permettent de mieux gérer et configurer vos buckets de journaux.

Stocker les journaux de compilation dans un bucket Cloud Logging créé par l'utilisateur

Les buckets de journalisation créés par l'utilisateur vous permettent d'ajuster la période de conservation des journaux de compilation stockés. Pour stocker vos journaux de compilation dans un bucket créé par l'utilisateur dans Logging, procédez comme suit:

Accorder des autorisations IAM:

Pour obtenir les autorisations nécessaires pour stocker les journaux de compilation dans un bucket Cloud Logging créé par l'utilisateur, demandez à votre administrateur de vous accorder le rôle IAM Rédacteur de la configuration des journaux (roles/logging.configWriter) sur votre projet. Pour en savoir plus sur l'attribution de rôles, consultez la page Gérer l'accès aux projets, aux dossiers et aux organisations.

Vous pouvez également obtenir les autorisations requises via des rôles personnalisés ou d'autres rôles prédéfinis.

Configurez le bucket de journalisation :

  1. Créez un bucket et définissez une valeur pour le champ Période de conservation.

  2. Créez un récepteur pour acheminer vos journaux de compilation vers votre nouveau bucket:

    1. Saisissez les éléments suivants pour le filtre d'inclusion de compilation de votre récepteur:

      logName = "projects/PROJECT_ID/logs/cloudbuild"
      

      Remplacez PROJECT-ID par l'ID de votre projet Google Cloud.

    2. (Facultatif) Pour empêcher vos journaux d'être envoyés au bucket de journalisation par défaut, suivez l'exemple de la section Arrêter le stockage des entrées de journal dans des buckets de journaux.

Stocker les journaux de compilation dans un bucket Cloud Storage créé par l'utilisateur

Pour stocker vos journaux de compilation dans un bucket Cloud Storage créé par l'utilisateur, procédez comme suit:

Accorder des autorisations IAM:

Si votre bucket Cloud Storage et Cloud Build se trouvent dans le même projet Google Cloud et que vous utilisez l'ancien compte de service Cloud Build, il dispose par défaut des autorisations IAM nécessaires. Aucune autorisation supplémentaire n'est requise. Sinon, procédez comme suit :

Pour obtenir les autorisations nécessaires pour stocker les journaux de compilation dans un bucket Cloud Storage créé par l'utilisateur, demandez à votre administrateur de vous accorder le rôle IAM Administrateur Storage (roles/storage.admin) sur le compte de service utilisé pour votre compilation. Pour en savoir plus sur l'attribution de rôles, consultez la page Gérer l'accès aux projets, aux dossiers et aux organisations.

Vous pouvez également obtenir les autorisations requises via des rôles personnalisés ou d'autres rôles prédéfinis.

Configurez le bucket Cloud Storage :

  1. Dans votre projet Google Cloud, créez un bucket Cloud Storage sans règle de conservation définie pour stocker vos journaux de compilation.

  2. Dans votre fichier de configuration de compilation, ajoutez un champ logsBucket pointant vers le bucket Cloud Storage que vous avez créé pour stocker les journaux de compilation. Voici un exemple de fichier de configuration de compilation contenant des instructions pour créer une image de conteneur et stocker les journaux de compilation dans le bucket nommé mylogsbucket:

        steps:
        - name: 'gcr.io/cloud-builders/docker'
          args: [ 'build', '-t', 'us-east1-docker.pkg.dev/myproject/myimage', '.' ]
        logsBucket: 'gs://mylogsbucket'
        options:
          logging: GCS_ONLY
    
        {
          "steps": [
           {
             "name": "gcr.io/cloud-builders/docker",
             "args": [
               "build",
               "-t",
               "us-east1-docker.pkg.dev/myproject/myimage",
               "."
             ]
           }
           ],
           "logsBucket": "gs://mylogsbucket",
           "options": {
             "logging": "GCS_ONLY"
           }
        }
    
  3. Utilisez le fichier de configuration de compilation pour démarrer une compilation à l'aide de la ligne de commande, de l'API ou des déclencheurs.

Une fois la compilation terminée, Cloud Build stockera les journaux dans le bucket Cloud Storage que vous avez spécifié dans le fichier de configuration de compilation.

Priorité entre les paramètres de journaux

Si vous définissez un bucket Cloud Storage créé par l'utilisateur dans logsBucket, Cloud Build envoie vos journaux de compilation dans le bucket créé par l'utilisateur au lieu du bucket Cloud Storage par défaut.

Si vous ajoutez l'option defaultLogsBucketBehavior à un fichier de configuration de compilation existant et que vous avez déjà configuré les options logging ou logsBucket, nous vous recommandons de supprimer ces paramètres pour éviter les conflits entre les paramètres. Plus précisément, defaultLogsBucketBehavior ne fonctionnera pas si vous avez configuré les éléments suivants:

  • logging: CLOUD_LOGGING_ONLY pour stocker vos journaux de compilation dans Cloud Logging.
  • logging: NONE pour désactiver la journalisation.

Lorsque vous exécutez une compilation sans options de journalisation définies dans votre fichier de configuration de compilation, Cloud Build définit logging: LEGACY et stocke les journaux de compilation dans le bucket Cloud Storage par défaut. Définir defaultLogsBucketBehavior sur REGIONAL_USER_OWNED_BUCKET remplace logging: LEGACY.

Afficher les journaux de compilation

Pour afficher les journaux de compilation, procédez comme suit:

Accorder des autorisations IAM:

Pour obtenir les autorisations nécessaires pour afficher les journaux de compilation dans Cloud Storage ou Logging, demandez à votre administrateur de vous accorder les rôles IAM suivants sur le compte de service utilisé pour votre compilation:

  • Afficher les journaux de compilation dans un bucket Cloud Storage créé ou détenu par l'utilisateur :
    • Lecteur des objets de l'espace de stockage (roles/storage.objectViewer) : les comptes principaux qui souhaitent consulter les journaux de compilation
    • Accesseur de vues de journaux (roles/logging.viewAccessor) : les principaux qui souhaitent afficher les journaux de compilation
  • Afficher les journaux de compilation dans le bucket Cloud Storage par défaut : Lecteur (roles/viewer) : projet sur lequel la compilation est configurée
  • Afficher les journaux de compilation dans la journalisation : Lecteur de journaux (roles/logging.viewer) : les principaux qui souhaitent afficher les journaux de compilation

Pour en savoir plus sur l'attribution de rôles, consultez la page Gérer l'accès aux projets, aux dossiers et aux organisations.

Vous pouvez également obtenir les autorisations requises via des rôles personnalisés ou d'autres rôles prédéfinis.

Afficher les journaux de compilation dans Google Cloud:

  1. Ouvrez la page Cloud Build dans la console Google Cloud.

    Ouvrir la page Cloud Build

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

  3. Dans le menu déroulant Région, sélectionnez la région pour votre build.

  4. Sur la page Historique de compilation, sélectionnez une compilation spécifique.

  5. Sur la page Informations sur le build, sous Steps (Étapes), cliquez sur Build summary (Résumé de la compilation) pour afficher tout le journal de la compilation ou sélectionnez une étape spécifique de compilation pour consulter son journal.

  6. Si vos journaux sont stockés dans Logging, dans le panneau Journaux de compilation, cliquez sur l'icône pour les afficher dans l'explorateur de journaux.

Exécutez la commande gcloud builds log, où build-id est l'ID de la compilation pour laquelle vous souhaitez obtenir des journaux de compilation. L'ID de compilation s'affiche à la fin du processus lorsqu'une demande de compilation est envoyée à l'aide de la commande gcloud builds submit, ou dans la colonne ID lorsque vous exécutez la commande gcloud builds list.

gcloud builds log build-id

Afficher les journaux de compilation dans GitHub et GitHub Enterprise:

Si vous créez un déclencheur GitHub ou GitHub Enterprise et que vous spécifiez --include-logs-with-status comme option, vous pouvez afficher vos journaux de compilation dans GitHub et GitHub Enterprise.

Pour afficher les journaux de compilation dans GitHub et GitHub Enterprise, procédez comme suit:

  1. Accédez au dépôt associé à votre déclencheur.

  2. Accédez à votre liste de commits.

  3. Recherchez la ligne du commit pour lequel vous souhaitez afficher les journaux de compilation.

  4. Cliquez sur l'icône de résultat dans la ligne de votre commit.

    Une liste des vérifications associées à votre commit s'affiche.

  5. Cliquez sur Détails pour la ligne pour laquelle vous souhaitez afficher les journaux de compilation.

    La page Récapitulatif associée à votre commit s'affiche. Si vous avez créé un déclencheur à l'aide de l'indicateur --include-logs-with-status, vos journaux de compilation s'affichent dans la section Details (Détails) de la page.

Supprimer des journaux de compilation et des buckets

Pour obtenir les autorisations nécessaires pour supprimer les journaux de compilation et les buckets dans Cloud Storage, demandez à votre administrateur de vous accorder les rôles IAM suivants sur le compte de service utilisé pour votre compilation:

  • Supprimez les journaux de compilation dans un bucket Cloud Storage créé ou détenu par l'utilisateur : Administrateur de l'espace de stockage (roles/storage.admin) : l'utilisateur ou le compte de service qui supprime les journaux de compilation
  • Supprimer un bucket Cloud Storage créé ou détenu par un utilisateur : Administrateur de l'espace de stockage (roles/storage.admin) : l'utilisateur ou le compte de service qui supprime les buckets
  • Supprimez un bucket de journalisation créé par l'utilisateur : Rédacteur de configuration des journaux (roles/logging.configWriter) : votre projet

Pour en savoir plus sur l'attribution de rôles, consultez la page Gérer l'accès aux projets, aux dossiers et aux organisations.

Vous pouvez également obtenir les autorisations requises via des rôles personnalisés ou d'autres rôles prédéfinis.

Pour supprimer des journaux de compilation dans un bucket Cloud Storage créé ou détenu par l'utilisateur, suivez les instructions de la section Supprimer des objets dans la documentation Cloud Storage.

Pour supprimer un bucket Cloud Storage créé ou détenu par l'utilisateur, suivez les instructions de la section Supprimer des buckets dans la documentation Cloud Storage.

Pour supprimer un bucket de journalisation créé par l'utilisateur, suivez les instructions de la section Supprimer un bucket de la documentation sur la journalisation.

Étape suivante