Cloud Build ti consente di creare trigger per la creazione da repository ospitati su GitLab Enterprise Edition, consentendoti di eseguire build in risposta a eventi come push di commit o richieste di unione associate al tuo repository GitLab Enterprise Edition.
Questa pagina spiega come attivare la funzionalità di trigger su un'istanza di GitLab Enterprise Edition se la tua istanza è ospitata in una rete privata.
Prima di iniziare
Abilita le API Cloud Build, Secret Manager, Compute Engine e Service Networking, se non sono già abilitate.
Ruoli richiesti per abilitare le API
Per abilitare le API, devi disporre dell'autorizzazione
serviceusage.services.enable. Se hai creato il progetto, probabilmente disponi già di questa autorizzazione tramite il ruolo Proprietario (roles/owner). In caso contrario, puoi ottenere questa autorizzazione tramite il ruolo Amministratore utilizzo dei servizi (roles/serviceusage.serviceUsageAdmin). Scopri come concedere i ruoli.
- Segui le istruzioni per connettere un host GitLab Enterprise Edition.
- Segui le istruzioni per connettere un repository GitLab Enterprise Edition.
Crea repository da GitLab Enterprise Edition in una rete privata
Se la tua istanza di GitLab Enterprise Edition è accessibile solo all'interno di una rete VPC, devi configurare un servizio Service Directory ed eseguire la build utilizzando pool privati. Il progetto che contiene la tua rete VPC può esistere in un progetto diverso da quello che contiene il tuo servizio Service Directory. Segui queste istruzioni per assicurarti che la tua istanza sia raggiungibile prima di creare trigger:
Abilita l'API Service Directory.
Assicurati di disporre del ruolo Project IAM Admin concesso al progetto Google Cloud in cui intendi creare il servizio Service Directory. Per scoprire come concedere i ruoli IAM, consulta Configurazione dell'accesso alle risorse Cloud Build.
Configura un servizio Service Directory completando i seguenti passaggi:
Configura uno spazio dei nomi per il tuo progetto Google Cloud .
La regione specificata nello spazio dei nomi deve corrispondere a quella specificata nella connessione host Cloud Build.
Configura un servizio nel tuo spazio dei nomi.
Configura un endpoint per il servizio registrato.
Quando configuri un endpoint, devi utilizzare un indirizzo IP interno e specificare un numero di porta HTTPS affinché Cloud Build possa raggiungere il tuo servizio.
Per saperne di più sulla configurazione dell'accesso alla rete privata, consulta Configurare l'accesso alla rete privata. Service Directory fornisce anche l'integrazione con servizi come i bilanciatori del carico e Google Kubernetes Engine (GKE). Per saperne di più, consulta la panoramica di Service Directory e del bilanciamento del carico o la panoramica di Service Directory per GKE.
Concedi l'accesso a Service Directory al service agent Cloud Build:
export PROJECT_NUMBER=$(gcloud projects describe PROJECT_ID --format="value(projectNumber)") export CLOUD_BUILD_SERVICE_AGENT="service-$PROJECT_NUMBER@gcp-sa-cloudbuild.iam.gserviceaccount.com" gcloud projects add-iam-policy-binding PROJECT_ID_CONTAINING_SERVICE_DIRECTORY \ --member="serviceAccount:$CLOUD_BUILD_SERVICE_AGENT" \ --role="roles/servicedirectory.viewer"Sostituisci quanto segue:
- PROJECT_ID è l'ID progetto Cloud Build.
- PROJECT_ID_CONTAINING_SERVICE_DIRECTORY è l'ID del tuo progettoGoogle Cloud che contiene Service Directory.
Concedi l'accesso alla risorsa di rete VPC al service agent Cloud Build:
export PROJECT_NUMBER=$(gcloud projects describe PROJECT_ID --format="value(projectNumber)") export CLOUD_BUILD_SERVICE_AGENT="service-$PROJECT_NUMBER@gcp-sa-cloudbuild.iam.gserviceaccount.com" gcloud projects add-iam-policy-binding PROJECT_ID_CONTAINING_NETWORK_RESOURCE \ --member="serviceAccount:$CLOUD_BUILD_SERVICE_AGENT" \ --role="roles/servicedirectory.pscAuthorizedService"Sostituisci quanto segue:
- PROJECT_ID è l'ID progetto Cloud Build.
- PROJECT_ID_CONTAINING_NETWORK_RESOURCE è l'ID del tuo progetto Google Cloud che contiene la risorsa di rete.
Utilizza i pool privati per eseguire le build. Se non hai creato un pool privato, consulta crea un nuovo pool privato.
Segui le istruzioni per creare un trigger GitLab Enterprise Edition per creare repository ospitati su un'istanza GitLab Enterprise Edition.
Se includi un certificato autofirmato o privato quando connetti l'host GitLab Enterprise Edition a Cloud Build, devi impostare l'URI host come nome alternativo del soggetto (SAN) del certificato.
Il trigger GitLab Enterprise Edition ora richiamerà automaticamente le build sull'istanza GitLab Enterprise Edition in base alla configurazione.
Utilizzare Service Directory per raggiungere gli host al di fuori di Google Cloud
Service Directory utilizza l'intervallo di indirizzi IP 35.199.192.0/19 per
connettere l'host all'esterno di Google Cloud. Devi aggiungere questo intervallo a
una lista consentita nel firewall. Inoltre, la tua rete privata deve essere configurata per instradare questo intervallo tramite la connessione Cloud VPN o Cloud Interconnect.
Se la connessione utilizza un router Cloud, puoi configurarla per comunicare l'intervallo alla tua rete privata.
Per saperne di più, consulta Configurare l'accesso alla rete privata.
Utilizza Cloud Load Balancing per raggiungere gli host al di fuori di Google Cloud
Se la configurazione di rete non consente di instradare l'intervallo di indirizzi IP di Service Directory 35.199.192.0/19 a Cloud VPN o Cloud Interconnect, puoi creare un bilanciatore del carico utilizzando Cloud Load Balancing che indirizza il traffico all'host.
Quando crei l'endpoint Service Directory, assicurati di utilizzare l'indirizzo IP della regola di forwarding del bilanciatore del carico anziché l'indirizzo IP dell'host. Quando crei l'endpoint, puoi utilizzare un bilanciatore del carico HTTPS interno o un bilanciatore del carico TCP (Transmission Control Protocol) interno.
Quando crei il bilanciatore del carico TCP, considera quanto segue:
- Per raggiungere l'host è necessario solo un gruppo di endpoint di rete (NEG) con connettività ibrida.
- Il bilanciatore del carico TCP non richiede la chiave privata non crittografata per il tuo certificato SSL.
- La configurazione di Cloud VPN deve utilizzare router Cloud con il routing dinamico globale. Se la tua Cloud VPN utilizza il routing statico, puoi utilizzare un proxy che utilizza Cloud Service Mesh. Per saperne di più, vedi Configurare i servizi di rete per i deployment ibridi.
Per saperne di più sulla creazione di un bilanciatore del carico HTTPS, consulta Configurare un bilanciatore del carico delle applicazioni interno con connettività ibrida. Per saperne di più sulla creazione di un bilanciatore del carico TCP, consulta Configura un bilanciatore del carico di rete proxy interno regionale con connettività ibrida.
Condivisione dei dati
I dati inviati a GitLab Enterprise Edition da Cloud Build ti aiutano a identificare i trigger per nome e a visualizzare i risultati della build nei repository GitLab Enterprise Edition.
I seguenti dati sono condivisi tra Cloud Build e GitLab Enterprise Edition:
- ID progettoGoogle Cloud
- Nome trigger
Passaggi successivi
- Scopri come gestire i trigger di build.
- Scopri come eseguire deployment blu/verde su Compute Engine.