Automazione delle build con Cloud Build

Questo argomento descrive come automatizzare le build utilizzando Cloud Build e Cloud Source Repositories.

Puoi configurare Cloud Build per creare automaticamente una nuova immagine ogni volta che un utente esegue il push di una modifica ai file archiviati in Cloud Source Repositories. Gli eventi che avviano le build automatiche sono chiamati trigger di build. Questi attivatori possono aiutarti ad assicurarti che le immagini del contenitore vengano mantenute aggiornate. Puoi anche utilizzarli per creare e testare i branch di funzionalità.

Gli attivatori di compilazione possono eseguire una compilazione in base a un Dockerfile o a un file di configurazione della compilazione.

Utilizzo di un Dockerfile

Per utilizzare un Dockerfile per la configurazione di compilazione, devi specificare la directory del Dockerfile e fornire un nome per l'immagine risultante. Per informazioni dettagliate sulla creazione di Dockerfile, consulta la documentazione di Docker.

Dopo aver fornito il nome del Dockerfile e dell'immagine, vedrai un'anteprima del comando docker build eseguito dalla compilazione e un riepilogo della configurazione dell'attivatore.

Utilizzo di un file di configurazione della build

Per utilizzare un file di configurazione della build per la configurazione della build, devi fornire la posizione di un file di configurazione della build.

Dopo aver impostato la località, viene visualizzato un riepilogo dell'attivatore.

Prima di iniziare

Informazioni aggiuntive

  • Gli trigger di compilazione utilizzano cloni superficiali di un repository. Con i cloni superficiali, solo il singolo commit che ha attivato una compilazione automatica viene sottoposto a check-out nello spazio di lavoro. Per ulteriori informazioni e per scoprire come includere più elementi della cronologia dei tuoi repository, consulta Eseguire il ripristino dei cloni.

  • Se utilizzi un altro provider Git ospitato, ad esempio GitHub o Bitbucket, e devi comunque eseguire il mirroring del repository in Cloud Source Repositories, devi disporre dell'autorizzazione cloudbuilds.builds.create per il progetto Google Cloud con cui stai lavorando. Questa autorizzazione viene solitamente concessa tramite il ruolo cloudbuild.builds.editor.

    Quando configuri un attivatore di compilazione con un repository esterno per la prima volta, devi configurare l'autorizzazione con quel repository. Per ulteriori informazioni, consulta Aggiunta di un repository come remoto.

    Dopo aver configurato il repository esterno, Cloud Source Repositories crea un suo mirror.

  • Per informazioni sulle quote e sui limiti di Cloud Build, consulta Quote e limiti nella documentazione di Cloud Build.

Creare un trigger di compilazione

Console

  1. Apri la pagina Trigger nella console Google Cloud.

    Apri la pagina Trigger

  2. Seleziona il progetto dal menu a discesa del selettore progetti nella parte superiore della pagina.

  3. Fai clic su Apri.

  4. Fai clic su Crea trigger.

  5. Inserisci le seguenti impostazioni di trigger:

    • Nome: inserisci un nome per l'attivatore.

    • (Facoltativo) Descrizione: inserisci una descrizione per l'attivatore.

    • Evento: seleziona l'evento del repository per richiamare l'attivatore.

      • Push a un ramo: imposta l'attivatore per avviare una build quando vengono eseguiti commit a un determinato ramo.

      • Invia nuovo tag: imposta l'attivatore in modo da avviare una build sui commit che contengono un determinato tag.

    • Origine: seleziona il repository e il ramo o il tag corrispondente per monitorare gli eventi.

      Quando viene eseguita la build, i contenuti del repository vengono copiati in /workspace, la directory di lavoro predefinita utilizzata da Cloud Build. Scopri di più sulle directory di lavoro nella pagina Panoramica della configurazione di Build.

      • Ramo o Tag: specifica un'espressione regolare con il valore del ramo o del tag da soddisfare. Le barre (/) non possono essere utilizzate nei tag. Per ulteriori informazioni sulla sintassi accettabile delle espressioni regolari, consulta la sintassi RE2.
    • Configurazione: seleziona il file di configurazione della build nel tuo repository remoto o crea un file di configurazione della build in linea da utilizzare per la build.

      • Tipo: seleziona il tipo di configurazione da utilizzare per la build.
        • File di configurazione di Cloud Build (yaml o json): Utilizza un file di configurazione della build per la tua configurazione.
        • Dockerfile: utilizza un Dockerfile per la configurazione.
        • Buildpack: utilizza i buildpacks per la configurazione.
      • Posizione: specifica la posizione della configurazione.

        • Repository: se il file di configurazione si trova nel repository remoto, fornisci la posizione del file di configurazione della build, della directory Dockerfile o della directory dei buildpack. Se il tipo di configurazione della compilazione è Dockerfile o un buildpack, dovrai fornire un nome per l'immagine risultante e, facoltativamente, un timeout per la compilazione. Dopo aver fornito il nome dell'immagine Dockerfile o del buildpack, vedrai un'anteprima del comando docker build o pack che verrà eseguito durante la compilazione.
        • (Facoltativo) Variabili di ambiente Buildpack: se hai selezionato buildpacks come tipo di configurazione, fai clic su Aggiungi variabile di ambiente del pacchetto per specificare le variabili di ambiente e i valori del buildpack. Per scoprire di più sulle variabili di ambiente del buildpack, consulta Voci di riferimento.
        • In linea: se hai selezionato File di configurazione di Cloud Build (yaml o json) come opzione di configurazione, puoi specificare la configurazione della build in linea. Fai clic su Apri editor per scrivere il file della configurazione di compilazione nella console Google Cloud utilizzando la sintassi YAML o JSON. Fai clic su Fine per salvare la configurazione della build.

    • Account di servizio: seleziona l'account di servizio da utilizzare per richiamare l'attivatore. Se non selezioni un account di servizio, viene utilizzato il service account Cloud Build predefinito.

  6. Fai clic su Crea per salvare il trigger di build.

gcloud

Esegui questo comando:

    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

Dove:

  • REPO_NAME è il nome del tuo repository.
  • BRANCH_PATTERN è il nome del ramo nel repository su cui invocare la compilazione.
  • TAG_PATTERN è il nome del tag nel repo per invocare la compilazione.
  • BUILD_CONFIG_FILE è il percorso del file di configurazione della build.
  • SERVICE_ACCOUNT (anteprima) è l'indirizzo email associato al tuo account di servizio. Se non includi questo flag, viene utilizzato l'account di servizio Cloud Build predefinito.
  • [Facoltativo] --require-approval è il flag da includere per configurare l'attivatore in modo che richieda l'approvazione.

Per un elenco completo dei flag, consulta la documentazione di riferimento gcloud su come creare attivatori per Cloud Source Repositories.

Dopo aver eseguito il comando gcloud per creare un trigger utilizzando Cloud Source Repositories, dovresti visualizzare un output simile al seguente:

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

Visualizza gli trigger di build

Per visualizzare gli attivatori nella console Google Cloud, apri la pagina Attivati di Cloud Build.

Per visualizzare gli attivatori per un determinato progetto in Cloud Source Repositories, fai clic su Impostazioni in alto a destra e poi su Attivatori Cloud Build.

Ignorare un trigger di build

In alcuni casi, potresti voler modificare il codice sorgente, ma non attivare una compilazione, ad esempio quando aggiorni la documentazione o i file di configurazione.

In questi casi, puoi includere [skip ci] o [ci skip] nel messaggio del commit e la compilazione non verrà attivata.

Ad esempio:

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

Fixed customer affecting issue. [skip ci]

Se vuoi eseguire una compilazione su quel commit in un secondo momento, utilizza il pulsante Esegui trigger.

Cloni non shallow

Per compilare il codice sorgente in un repository Git, Cloud Source Repositories esegue un clone superficiale del repository. Quando Cloud Source Repositories esegue un clone superficiale, esegue il check-out dallo spazio di lavoro solo del singolo commit che ha attivato la compilazione e poi esegue la compilazione da quella sorgente. Cloud Source Repositories non esegue il check out di altri branch o della cronologia. Questo viene fatto per motivi di efficienza. Le build non vengono ritardate mentre Cloud Source Repositories recupera l'intero repository e la cronologia solo per eseguire la build da un singolo commit.

Per includere più della cronologia del tuo repository nella compilazione, aggiungi un passaggio di compilazione nel file di configurazione di compilazione per "annullare l'estrazione" del clone. Ad esempio:

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

Per ulteriori informazioni su git fetch, consulta la documentazione di riferimento di Git. Per istruzioni su come scrivere un file di configurazione della build, consulta la panoramica della configurazione della build.

Passaggi successivi