Automatizza le build in risposta agli eventi webhook

Cloud Build ti consente di definire attivatori webhook, che possono autenticare e accettare gli eventi webhook in entrata. Questi eventi, inviati a un URL personalizzato, consentono di connettere direttamente sistemi esterni e sistemi di gestione del codice sorgente esterni come Bitbucket.com, Bitbucket Server o GitLab, a Cloud Build tramite eventi webhook.

Con i trigger webhook, puoi definire un file di configurazione della build incorporato, anziché specificare un'origine durante la creazione del trigger. La configurazione della build in linea ti consente di avere il controllo sulle operazioni Git e di definire il resto della build.

Questa pagina descrive come creare trigger di webhook per automatizzare le build in risposta agli eventi webhook.

Prima di iniziare

  • Abilita le API Cloud Build and Secret Manager.

    Abilita le API

  • Per utilizzare i comandi gcloud in questa pagina, installa Google Cloud CLI.

Creazione di trigger webhook

Console

Per creare un trigger webhook utilizzando la console Google Cloud:

  1. Apri la pagina Attivatori:

    Apri la pagina Trigger di build

  2. Seleziona il progetto nella parte superiore della pagina e fai clic su Apri.

  3. Fai clic su Crea trigger.

  4. Inserisci le seguenti impostazioni di attivazione:

    • Nome: il nome dell'attivatore.
    • Regione: seleziona la regione per l'attivatore.

      • Se il file di configurazione della build associato al trigger specifica un pool privato, Cloud Build utilizza il pool privato per eseguire la build. In questo caso, la regione specificata nel trigger deve corrispondere a quella in cui hai creato il pool privato.
      • Se il file di configurazione della build associato al trigger non specifica un pool privato, Cloud Build utilizza il pool predefinito per eseguire la build nella stessa regione del trigger.
    • (Facoltativo) Descrizione: una descrizione dell'attivatore.

    • Evento: seleziona Evento webhook per configurare il trigger in modo che avvii le build in risposta agli eventi webhook in arrivo.

    • URL webhook: utilizza l'URL webhook per autenticare gli eventi webhook in entrata.

      • Secret: avrai bisogno di un secret per autenticare gli eventi webhook in entrata. Puoi creare un nuovo secret o utilizzarne uno esistente. Questo secret è separato dal secret associato alla chiave SSH.

        Per creare un nuovo secret:

        1. Seleziona Utilizza un nuovo secret (generato da Cloud Build).
        2. Fai clic su Crea secret.

          Verrà visualizzata la finestra popup Crea un secret webhook.

        3. Nel campo Nome secret, inserisci un nome per il secret.

        4. Fai clic su Crea secret per salvare il secret, che verrà creato e archiviato automaticamente in Secret Manager.

        Per utilizzare un secret esistente:

        1. Seleziona Utilizza un secret esistente o creane uno nuovo.
        2. Nel campo Secret, seleziona dal menu a discesa il nome del secret che vuoi utilizzare o segui le istruzioni per aggiungere un secret in base all'ID risorsa.
        3. Nel campo Versione secret, seleziona la versione del secret dal menu a discesa.

        Se utilizzi un secret esistente, potresti dover concedere manualmente il ruolo Secret Manager di accesso ai secret di Secret Manager al tuo account di servizio Cloud Build, service-${PROJECT_NUMBER}@gcp-sa-cloudbuild.iam.gserviceaccount.com. Per saperne di più, vedi Concedere il ruolo di Secret Manager all'account di servizio.

      Dopo aver creato o selezionato il secret, visualizzerai un'anteprima dell'URL webhook. L'URL conterrà una chiave API generata da Cloud Build e il tuo secret. Se Cloud Build non riesce a recuperare la chiave API, puoi aggiungerla manualmente all'URL o scoprire come ottenere una chiave API se non ne hai ancora una.

      Puoi utilizzare l'URL per richiamare un evento webhook effettuando una richiesta HTTP con il metodo POST.

      Utilizza questo comando per richiamare un evento webhook:

      curl -X POST -H "Content-type: application/json" "https://cloudbuild.googleapis.com/v1/projects/${PROJECT_ID}/locations/${REGION}/triggers/${TRIGGER_NAME}:webhook?key=${API_KEY}&secret=${SECRET_VALUE}&trigger=${TRIGGER_NAME}&projectId=${PROJECT_ID}" -d "{}"
      

      Dopo aver completato questi passaggi, il ruolo Accessore dei secret di Secret Manager verrà concesso automaticamente al tuo account di servizio Cloud Build, service-${PROJECT_NUMBER}@gcp-sa-cloudbuild.iam.gserviceaccount.com. Se non vedi che questo ruolo è stato aggiunto automaticamente al tuo account di servizio, completa i passaggi seguenti descritti in Concedere il ruolo di Secret Manager all'account di servizio.

    • (Facoltativo) Origine: seleziona l'origine da creare quando viene eseguito il trigger del webhook. Se specifichi una configurazione di compilazione in linea, non devi specificare la seguente origine. Puoi specificare la prima generazione o la seconda generazione come origine. Per saperne di più, consulta Repository Cloud Build.

      • Repository: dall'elenco dei repository disponibili, seleziona il repository desiderato.

      • Ramo o Tag: specifica un'espressione regolare con il valore del ramo o del tag da associare. Per informazioni sulla sintassi accettabile delle espressioni regolari, consulta la sezione sintassi RE2.

      • Controllo dei commenti: se hai selezionato Richiesta di pull (solo app GitHub) come Evento, scegli una delle seguenti opzioni per controllare se una build verrà eseguita automaticamente dal trigger:

        • Obbligatorio tranne per proprietari e collaboratori: quando una richiesta di pull viene creata o aggiornata da un proprietario o un collaboratore del repository, le build vengono eseguite automaticamente dall'attivatore. Se un collaboratore esterno avvia l'azione, le build verranno eseguite solo dopo che un proprietario o un collaboratore commenta /gcbrun nella richiesta di pull.

        • Obbligatorio: quando una richiesta di pull viene creata o aggiornata da un collaboratore, le build vengono eseguite solo dopo che un proprietario o un collaboratore ha commentato /gcbrun la richiesta di pull. Le build vengono eseguite ogni volta che viene apportata una modifica a una richiesta di pull.

        • Non obbligatoria: quando un collaboratore crea o aggiorna una richiesta di pull, le build vengono eseguite automaticamente dagli attivatori.

    • Configurazione: seleziona il file di configurazione della build che si trova nel repository remoto o crea un file di configurazione di compilazione incorporato da utilizzare per la build. Se non hai specificato un repository di codice sorgente, devi selezionare un file di configurazione della build Inline come opzione di configurazione.

      • 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 di compilazione per la tua configurazione.
        • Dockerfile: utilizza un Dockerfile per la configurazione.
        • Buildpack: utilizza buildpacks per la configurazione.
      • Posizione: specifica la località per la 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 buildpacks. Se il tipo di configurazione della build è Dockerfile o un buildpack, dovrai fornire un nome per l'immagine risultante e, facoltativamente, un timeout per la build. Dopo aver fornito il nome dell'immagine Dockerfile o buildpack, vedrai un'anteprima del comando docker build o pack che verrà eseguito dalla tua build.
        • Variabili di ambiente Buildpack (facoltativo). Se hai selezionato buildpacks come tipo di configurazione, fai clic su Aggiungi variabile di ambiente buildpack per specificare le variabili e i valori di ambiente del buildpack. Per scoprire di più sulle variabili di ambiente buildpack, consulta Variabili di ambiente.
        • In linea: se hai selezionato File di configurazione di Cloud Build (yaml o json) come opzione di configurazione, puoi specificare la configurazione di compilazione in linea. Fai clic su Apri editor per scrivere il file di configurazione della build nella console Google Cloud utilizzando la sintassi YAML o JSON. Fai clic su Fine per salvare la configurazione della build.

      Nell'esempio seguente, il file di configurazione della compilazione integrata registra l'eco di "hello world":

       steps:
       - name: 'ubuntu'
         args: ['echo', 'hello world']
      
    • Sostituzioni (facoltativo): se hai selezionato il file di configurazione della build come opzione di configurazione della build o hai creato un file di configurazione della build incorporato, puoi scegliere di definire variabili di sostituzione specifiche del trigger utilizzando questo campo. Puoi ottenere i dati anche utilizzando le associazioni di payload quando definisci i valori delle variabili di sostituzione.

    • Filtri (facoltativi): puoi creare una regola all'interno di un trigger che determina se il trigger eseguirà o meno una build in base alle tue variabili di sostituzione.

  5. Fai clic su Crea per creare il trigger di build.

gcloud

(Facoltativo) Ottenere una chiave API

Per autenticare l'evento webhook in arrivo, devi avere una chiave API.

Per ottenere una chiave API:

  1. Apri la pagina Credenziali nella console Google Cloud:

    Apri la pagina Credenziali

  2. Fai clic su Crea credenziali.

  3. Fai clic su Chiave API.

    Verrà visualizzata una finestra di dialogo con la chiave API creata. Prendi nota della chiave API.

  4. Se vuoi limitare la chiave per le applicazioni del prodotto, fai clic su Limita chiave per completare i passaggi aggiuntivi per proteggere la chiave. In caso contrario, fai clic su Chiudi.

    Per scoprire come limitare la chiave, vedi Applicare le limitazioni relative alle chiavi API.

(Facoltativo) Concessione del ruolo di Secret Manager all'account di servizio

Cloud Build concede automaticamente il ruolo di accesso ai secret di Secret Manager agli account di servizio che lo richiedono durante la configurazione dei secret. Se non vedi che questo ruolo non viene concesso automaticamente all'account di servizio necessario, completa i passaggi seguenti per aggiungere manualmente il ruolo in modo che il tuo account di servizio abbia accesso al secret:

  1. Apri la pagina IAM nella console Google Cloud:

    Apri la pagina IAM

  2. Prendi nota dell'account di servizio Cloud Build a cui vuoi concedere il ruolo.

  3. Apri la pagina Secret Manager nella console Google Cloud:

    Apri la pagina di Secret Manager

  4. Fai clic sul nome del tuo secret.

    Verrà visualizzata la pagina Dettagli secret.

    1. Fai clic sulla scheda Autorizzazioni.

    2. Fai clic su Concedi l'accesso.

      Verrà visualizzato il riquadro Concedi l'accesso.

    3. Nella sezione Aggiungi entità, aggiungi l'indirizzo email associato al tuo account di servizio Cloud Build.

    4. Nella sezione Assegna ruoli, seleziona Secret Manager > Funzione di accesso ai secret di Secret Manager.

    5. Fai clic su Salva.

Passaggi successivi