Cloud Build ti consente di creare trigger in un'istanza GitHub Enterprise. Questa pagina spiega come utilizzare gli attivatori GitHub Enterprise per invocare le build in risposta a commit o richieste pull da un'istanza GitHub Enterprise e come puoi creare repository da GitHub Enterprise se la tua istanza è ospitata in una rete privata.
Prima di iniziare
-
Enable the Cloud Build and Service Directory APIs.
- Se non hai creato un pool privato, segui le istruzioni riportate in Creare e gestire i pool privati per crearne uno. Per eseguire la compilazione in una rete privata, è necessario un pool privato.
Creare repository da GitHub Enterprise in una rete privata
Completa i seguenti passaggi per connettere l'istanza GitHub Enterprise a Cloud Build da una rete privata:
Concedi a Service Directory l'accesso all'agente di servizio 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 del tuo progetto Cloud Build.
- PROJECT_ID_CONTAINING_SERVICE_DIRECTORY è l'ID del progettoGoogle Cloud che contiene la tua Service Directory.
Concedi all'agente di servizio Cloud Build l'accesso alle risorse di rete VPC:
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 del tuo progetto Cloud Build.
- PROJECT_ID_CONTAINING_NETWORK_RESOURCE è l'ID del progettoGoogle Cloud che contiene la risorsa di rete.
Configura un servizio Service Directory completando i seguenti passaggi:
Configura uno spazio dei nomi per il servizio:
gcloud service-directory namespaces create NAMESPACE --location=REGION --project=PROJECT_ID_CONTAINING_SERVICE_DIRECTORY
Sostituisci quanto segue:
- NAMESPACE è il nome dello spazio dei nomi Service Directory.
- LOCATION è la regione in cui crei connessioni e colleghi i repository.
- PROJECT_ID_CONTAINING_SERVICE_DIRECTORY è l'ID del progettoGoogle Cloud che contiene la tua Service Directory.
Configura un servizio per il tuo spazio dei nomi:
gcloud service-directory services create SERVICE --namespace=NAMESPACE --location=LOCATION
Sostituisci quanto segue:
- SERVICE è il nome della risorsa Service Directory.
- NAMESPACE è il nome dello spazio dei nomi Service Directory.
- LOCATION è la regione in cui crei connessioni e colleghi i repository.
Configura un endpoint per il tuo servizio:
gcloud service-directory endpoints create ENDPOINT_NAME \ --namespace=NAMESPACE \ --service=SERVICE \ --location=LOCATION \ --address=INSTANCE_IP_ADDRESS \ --port=PORT \ --network=projects/PROJECT_ID_CONTAINING_NETWORK/locations/us-central1/ networks/NETWORK
Sostituisci quanto segue:
- ENDPOINT_NAME è il nome dell'endpoint.
- NAMESPACE è il nome dello spazio dei nomi Service Directory.
- SERVICE è il nome della risorsa Service Directory.
- LOCATION è la regione in cui crei connessioni e colleghi i repository.
- INSTANCE_IP_ADDRESS è l'indirizzo IP dell'istanza GitHub Enterprise nella tua rete. Ad esempio,
123.45.67.89
. Per saperne di più, consulta Utilizzare Service Directory per raggiungere host esterni a Google Cloud. - PORT è il nome della porta per HTTPS.
- PROJECT_ID_CONTAINING_NETWORK è l'ID progetto Google Cloud che contiene la tua rete VPC.
- NETWORK è il nome della rete VPC.
Ora puoi utilizzare la risorsa di servizio (
projects/{PROJECT_ID}/locations/{LOCATION}/namespaces/{NAMESPACE}/services/{SERVICE}
) per creare la connessione nei passaggi che seguono.Crea un trigger GitHub Enterprise per compilare i repository ospitati sulla tua istanza GitHub Enterprise.
Utilizzare Service Directory per raggiungere host esterni a Google Cloud
Service Directory utilizza l'intervallo di indirizzi IP 35.199.192.0/19
per collegare il tuo 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 in modo da comunicare l'intervallo alla tua rete privata.
Per saperne di più, consulta Configurare l'accesso a una rete privata.
Utilizzare il bilanciamento del carico su Cloud per raggiungere host esterni a Google Cloud
Se la configurazione di rete non ti consente di inoltrare l'intervallo di indirizzi IP della directory dei servizi 35.199.192.0/19
a Cloud VPN o Cloud Interconnect, puoi creare un bilanciatore del carico utilizzando Cloud Load Balancing per indirizzare il traffico al tuo host.
Quando crei l'endpoint di Service Directory, assicurati di utilizzare l'indirizzo IP della regola di forwarding del bilanciatore del carico anziché l'indirizzo IP del tuo host. Puoi utilizzare un bilanciatore del carico HTTPS interno o un bilanciatore del carico TCP (Transmission Control Protocol) interno quando crei l'endpoint.
Quando crei il bilanciatore del carico TCP, considera quanto segue:
- Per raggiungere il tuo host è necessario solo un gruppo di endpoint di rete con connettività ibrida (NEG).
- Il bilanciatore del carico TCP non richiede la chiave privata non criptata per il tuo certificato SSL.
- La configurazione di Cloud VPN deve utilizzare il router Cloud con routing dinamico globale. Se Cloud VPN utilizza il routing statico, puoi utilizzare un proxy che utilizza Cloud Service Mesh. Per saperne di più, consulta Configurare i servizi di edge di rete per le implementazioni ibride.
Per scoprire di più sulla creazione di un bilanciatore del carico HTTPS, consulta Configurare un bilanciatore del carico delle applicazioni interno con connettività ibrida. Per scoprire di più sulla creazione di un bilanciatore del carico TCP, consulta Configurare un bilanciatore del carico di rete proxy interno regionale con connettività ibrida.
Passaggi successivi
- Scopri come creare e gestire i trigger di build.
- Scopri come eseguire deployment blu/verdi su Compute Engine.