Memorizzare e visualizzare i log di build

Quando esegui le build, Cloud Build raccoglie e archivia i log di build. Questa pagina spiega come archiviare, visualizzare ed eliminare i log di compilazione.

Scegli dove inviare i log di compilazione

Puoi configurare Cloud Build in modo da inviare i log di compilazione a un bucket in Cloud Storage, a un bucket in Cloud Logging o a entrambi.

  • Se vuoi controllare il periodo di conservazione dei log di compilazione archiviati, inviali a Cloud Logging. Cloud Logging offre inoltre più opzioni per cercare in un bucket log di compilazione specifici.

  • In alcuni casi, si verifica un ritardo tra il momento in cui viene generato un log di compilazione e il momento in cui viene ricevuto da Logging. L'invio dei log di compilazione a un bucket in Cloud Storage potrebbe ridurre questa latenza.

Sia Cloud Storage sia Logging ti consentono di archiviare i log in un bucket predefinito creato da Google o in un bucket personalizzato creato dall'utente. I bucket predefiniti ti consentono di visualizzare i log archiviati nel bucket, ma non ti consentono di apportare modifiche al bucket. Se hai bisogno del controllo completo del bucket che utilizzi per l'archiviazione dei log di build, invia i log a un bucket creato dall'utente.

Archivia i log di compilazione nei bucket predefiniti

Sia Cloud Logging sia Cloud Storage hanno bucket predefiniti in cui puoi archiviare i log di compilazione. Questi bucket sono creati e di proprietà di Google e possono ricevere log da più regioni. Per inviare i log di compilazione a uno di questi bucket, configura LoggingMode del file di configurazione della build con uno dei seguenti valori:

  • GCS_ONLY: i log vengono archiviati nel bucket Cloud Storage predefinito.

  • CLOUD_LOGGING_ONLY: i log vengono archiviati nel bucket predefinito di Logging.

  • LEGACY: i log vengono archiviati in entrambi i bucket predefiniti.

Il bucket di logging predefinito ha un criterio di conservazione di 30 giorni per i log archiviati. Per impostare un criterio di conservazione personalizzato per i log di compilazione archiviati in logging, archivia i log di compilazione in un bucket personalizzato.

Il bucket Cloud Storage predefinito non ha criteri di conservazione.

Archivia i log di compilazione in un bucket Cloud Storage di proprietà dell'utente e specifico per la regione

Se invii i log di compilazione al bucket Cloud Storage predefinito, Cloud Build li archivia in una regione specificata da Google che potrebbe essere diversa dalla località in cui esegui una compilazione. Tuttavia, puoi anche configurare la compilazione in modo che Cloud Build invii i log di compilazione a un bucket Cloud Storage di proprietà dell'utente nella stessa regione in cui esegui la compilazione. Questa configurazione ti offre un maggiore controllo sulla posizione dei dati dei log di compilazione, il che può aiutarti a rispettare i requisiti di residenza dei dati.

Concedi autorizzazioni IAM:

Se il bucket Cloud Storage e Cloud Build si trovano nello stesso progetto Google Cloud e utilizzi il service account precedente di Cloud Build, questo service account dispone per impostazione predefinita delle autorizzazioni IAM necessarie. Non è necessario concedere altre autorizzazioni. In caso contrario:

Per ottenere le autorizzazioni necessarie per archiviare i log di compilazione in un bucket di proprietà dell'utente e specifico per la regione, chiedi all'amministratore di concederti il ruolo IAM Amministratore archiviazione (roles/storage.admin) nell'account di servizio utilizzato per la compilazione. Per saperne di più sulla concessione dei ruoli, consulta Gestire l'accesso a progetti, cartelle e organizzazioni.

Potresti anche riuscire a ottenere le autorizzazioni richieste tramite i ruoli personalizzati o altri ruoli predefiniti.

Configura il bucket Cloud Storage specifico per la regione:

  1. Nel file di configurazione di compilazione, aggiungi l'opzione defaultLogsBucketBehavior e imposta il relativo valore su REGIONAL_USER_OWNED_BUCKET:

    YAML

    steps:
    - name: 'gcr.io/cloud-builders/docker'
      args: [ 'build', '-t', 'us-central1-docker.pkg.dev/myproject/myrepo/myimage', '.' ]
    options:
      defaultLogsBucketBehavior: REGIONAL_USER_OWNED_BUCKET
    

    JSON

    {
      "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. Utilizza il file di configurazione della build per avviare una build utilizzando la riga di comando, l'API o gli attivatori.

    Quando esegui la build, Cloud Build crea il nuovo bucket nella regione in cui stai eseguendo la build, quindi memorizza i log di build in questo bucket. Le compilazioni successive nello stesso progetto e nella stessa regione utilizzeranno il bucket esistente finché REGIONAL_USER_OWNED_BUCKET è attivo. Questo bucket è di proprietà dell'utente, quindi puoi configurarlo come se fosse un bucket creato dall'utente.

Se imposti l'opzione REGIONAL_USER_OWNED_BUCKET e poi crei build in più regioni, Cloud Build crea più bucket per i log di compilazione.

I bucket Cloud Storage predefiniti specifici per regione non hanno criteri di conservazione. Tuttavia, puoi automatizzare l'eliminazione dei log di compilazione dal tuo bucket configurando una regola del ciclo di vita degli oggetti.

Archivia i log di compilazione in bucket creati dall'utente

I bucket creati dagli utenti ti consentono di avere un maggiore controllo sulla gestione e sulla configurazione dei tuoi bucket di log.

Archivia i log di compilazione in un bucket Cloud Logging creato dall'utente

I bucket di log creati dall'utente ti consentono di modificare il periodo di conservazione degli log di compilazione archiviati. Per archiviare i log di compilazione in un bucket creato dall'utente in Logging, segui questi passaggi:

Concedi autorizzazioni IAM:

Per ottenere le autorizzazioni necessarie per archiviare i log di compilazione in un bucket Cloud Logging creato dall'utente, chiedi all'amministratore di concederti il ruolo IAM Editor di configurazione dei log (roles/logging.configWriter) nel progetto. Per saperne di più sulla concessione dei ruoli, consulta Gestire l'accesso a progetti, cartelle e organizzazioni.

Potresti anche riuscire a ottenere le autorizzazioni richieste tramite i ruoli personalizzati o altri ruoli predefiniti.

Configura il bucket di logging:

  1. Crea un bucket e imposta un valore per il campo Periodo di conservazione.

  2. Crea un sink per instradare i log di compilazione al nuovo bucket:

    1. Inserisci quanto segue per il filtro di inclusione della compilazione del tuo sink:

      logName = "projects/PROJECT_ID/logs/cloudbuild"
      

      Sostituisci PROJECT-ID con l'ID del tuo progetto Google Cloud.

    2. (Facoltativo) Per impedire che i log vengano indirizzati al bucket di Logging predefinito, segui l'esempio in Interrompere l'archiviazione delle voci di log nei bucket di log.

Memorizzare i log di compilazione in un bucket Cloud Storage creato dall'utente

Per archiviare i log di compilazione in un bucket Cloud Storage creato dall'utente, procedi come segue:

Concedi autorizzazioni IAM:

Se il bucket Cloud Storage e Cloud Build si trovano nello stesso progetto Google Cloud e utilizzi il service account legacy di Cloud Build, per impostazione predefinita il service account legacy di Cloud Build dispone delle autorizzazioni IAM necessarie. Non è necessario concedere altre autorizzazioni. In caso contrario:

Per ottenere le autorizzazioni necessarie per archiviare i log di compilazione in un bucket Cloud Storage creato dall'utente, chiedi all'amministratore di concederti il ruolo IAM Amministratore archiviazione (roles/storage.admin) nell'account di servizio utilizzato per la compilazione. Per saperne di più sulla concessione dei ruoli, consulta Gestire l'accesso a progetti, cartelle e organizzazioni.

Potresti anche riuscire a ottenere le autorizzazioni richieste tramite i ruoli personalizzati o altri ruoli predefiniti.

Configura il bucket Cloud Storage:

  1. Nel tuo progetto Google Cloud, crea un bucket Cloud Storage senza impostare un criterio di conservazione per archiviare i log di compilazione.

  2. Nel file di configurazione della build, aggiungi un campo logsBucket che rimandi al bucket Cloud Storage che hai creato per archiviare i log di build. Il seguente file di configurazione di esempio della compilazione contiene istruzioni per compilare un'immagine container e archiviare i log di compilazione in un bucket denominato mylogsbucket:

    YAML

        steps:
        - name: 'gcr.io/cloud-builders/docker'
          args: [ 'build', '-t', 'us-east1-docker.pkg.dev/myproject/myimage', '.' ]
        logsBucket: 'gs://mylogsbucket'
        options:
          logging: GCS_ONLY
    

    JSON

        {
          "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. Utilizza il file di configurazione della build per avviare una build utilizzando la riga di comando, l'API o gli attivatori.

Al completamento della build, Cloud Build archivia i log nel bucket Cloud Storage specificato nel file di configurazione della build.

Precedenza tra le impostazioni dei log

Se in logsBucket definisci un bucket Cloud Storage creato dall'utente, Cloud Build invia i log di compilazione al bucket creato dall'utente anziché al bucket Cloud Storage predefinito.

Se aggiungi l'opzione defaultLogsBucketBehavior a un file build.config esistente e hai configurato in precedenza le opzioni logging o logsBucket, ti consigliamo di eliminare queste impostazioni per evitare conflitti tra le impostazioni. Nello specifico, defaultLogsBucketBehavior non funzionerà se hai configurato:

  • logging: CLOUD_LOGGING_ONLY per archiviare i log di compilazione in Cloud Logging.
  • logging: NONE per disattivare il logging.

Quando esegui una build senza opzioni di logging impostate nel file di configurazione della build, Cloud Build imposta logging: LEGACY e archivia i log di build nel bucket Cloud Storage predefinito. L'impostazione di defaultLogsBucketBehavior su REGIONAL_USER_OWNED_BUCKET ha la precedenza su logging: LEGACY.

Visualizza i log di compilazione

Per visualizzare i log di compilazione:

Concedi autorizzazioni IAM:

Per ottenere le autorizzazioni necessarie per visualizzare i log di compilazione in Cloud Storage o Logging, chiedi all'amministratore di concederti i seguenti ruoli IAM nell'account di servizio utilizzato per la compilazione:

  • Visualizza i log di compilazione in un bucket Cloud Storage creato o di proprietà dell'utente:
    • Visualizzatore oggetti Storage (roles/storage.objectViewer): gli amministratori che vogliono visualizzare i log di compilazione
    • Logs View Accessor (roles/logging.viewAccessor): le entità che vogliono visualizzare i log di compilazione
  • Visualizza i log di compilazione nel bucket Cloud Storage predefinito: Visualizzatore (roles/viewer): il progetto in cui è configurata la compilazione
  • Visualizza i log di compilazione in Log: Visualizzatore log (roles/logging.viewer): gli amministratori che vogliono visualizzare i log di compilazione

Per saperne di più sulla concessione dei ruoli, consulta Gestire l'accesso a progetti, cartelle e organizzazioni.

Potresti anche riuscire a ottenere le autorizzazioni richieste tramite i ruoli personalizzati o altri ruoli predefiniti.

Visualizza i log di compilazione in Google Cloud:

Console

  1. Apri la pagina Cloud Build nella console Google Cloud.

    Apri la pagina Cloud Build

  2. Seleziona il progetto e fai clic su Apri.

  3. Nel menu a discesa Regione, seleziona la regione per la build.

  4. Nella pagina Cronologia build, seleziona una build specifica.

  5. Nella pagina Dettagli build, fai clic su Riepilogo build in Passaggi per visualizzare i log di build per l'intera build o seleziona un passaggio per visualizzare i relativi log.

  6. Se i log sono archiviati in Logging, nel riquadro Log di compilazione, fai clic sull'icona per visualizzarli in Esplora log.

gcloud

Esegui il comando gcloud builds log, dove build-id è l'ID della compilazione per la quale vuoi recuperare i log di compilazione. L'ID build viene visualizzato al termine del processo di invio della build quando esegui gcloud builds submit o nella colonna ID quando esegui gcloud builds list.

gcloud builds log build-id

Visualizza i log di compilazione in GitHub e GitHub Enterprise:

Se crei un trigger GitHub o GitHub Enterprise e hai specificato --include-logs-with-status come opzione, puoi visualizzare i log di compilazione in GitHub e GitHub Enterprise.

Per visualizzare i log di compilazione in GitHub e GitHub Enterprise:

  1. Vai al repository associato al tuo trigger.

  2. Vai all'elenco dei commit.

  3. Individua la riga del commit per cui vuoi visualizzare i log di compilazione.

  4. Fai clic sull'icona del risultato nella riga del commit.

    Verrà visualizzato un elenco di controlli associati al commit.

  5. Fai clic su Dettagli per la riga di cui vuoi visualizzare i log di compilazione.

    Viene visualizzata la pagina Riepilogo associata al commit. Se hai creato un trigger utilizzando il flag --include-logs-with-status, vedrai i log di compilazione nella sezione Dettagli della pagina.

Eliminare i log e i bucket di compilazione

Per ottenere le autorizzazioni necessarie per eliminare i log di compilazione e i bucket in Cloud Storage, chiedi all'amministratore di concederti i seguenti ruoli IAM nell'account di servizio utilizzato per la compilazione:

  • Elimina i log di compilazione in un bucket Cloud Storage creato o di proprietà dell'utente: Amministratore archiviazione (roles/storage.admin): l'utente o l'account di servizio che elimina i log di compilazione
  • Elimina un bucket Cloud Storage creato o di proprietà dell'utente: Amministratore archiviazione (roles/storage.admin): l'utente o l'account di servizio che elimina i bucket
  • Elimina un bucket di logging creato dall'utente: Autore configurazione log (roles/logging.configWriter): il tuo progetto

Per saperne di più sulla concessione dei ruoli, consulta Gestire l'accesso a progetti, cartelle e organizzazioni.

Potresti anche riuscire a ottenere le autorizzazioni richieste tramite i ruoli personalizzati o altri ruoli predefiniti.

Per eliminare i log di compilazione in un bucket Cloud Storage creato o di proprietà dell'utente, segui le istruzioni riportate in Eliminare gli oggetti nella documentazione di Cloud Storage.

Per eliminare un bucket Cloud Storage creato o di proprietà dell'utente, segui le istruzioni riportate in Eliminare i bucket nella documentazione di Cloud Storage.

Per eliminare un bucket di Log creato da un utente, segui le istruzioni riportate in Eliminare un bucket nella documentazione di Logging.

Passaggi successivi