O Cloud Build permite criar gatilhos em uma instância do GitHub Enterprise. Nesta página, explicamos como usar os gatilhos do GitHub Enterprise para invocar builds em resposta a confirmações ou solicitações de envio de uma instância do GitHub Enterprise e como criar repositórios no GitHub Enterprise se a instância estiver hospedada em uma rede particular.
Antes de começar
-
Enable the Cloud Build and Service Directory APIs.
- Se você não criou um pool particular, siga as instruções em Criar e gerenciar pools particulares para criar um. Você vai precisar de um pool particular para criar em uma rede particular.
Criar repositórios do GitHub Enterprise em uma rede privada
Siga estas etapas para conectar sua instância do GitHub Enterprise ao Cloud Build em uma rede particular:
Conceda acesso ao Diretório de serviços ao agente de serviço do 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"
Substitua:
- PROJECT_ID é o ID do seu projeto do Cloud Build.
- PROJECT_ID_CONTAINING_SERVICE_DIRECTORY é o ID do projetoGoogle Cloud que contém o diretório de serviços.
Conceda acesso ao recurso de rede VPC ao agente de serviço do 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"
Substitua:
- PROJECT_ID é o ID do seu projeto do Cloud Build.
- PROJECT_ID_CONTAINING_NETWORK_RESOURCE é o ID do projetoGoogle Cloud que contém o recurso de rede.
Para configurar um serviço do Diretório de serviços, siga estas etapas:
Configure um namespace para seu serviço:
gcloud service-directory namespaces create NAMESPACE --location=REGION --project=PROJECT_ID_CONTAINING_SERVICE_DIRECTORY
Substitua:
- NAMESPACE é o nome do namespace do seu diretório de serviços.
- LOCATION é a região em que você cria conexões e vincula repositórios.
- PROJECT_ID_CONTAINING_SERVICE_DIRECTORY é o ID do projetoGoogle Cloud que contém o diretório de serviço.
Configure um serviço para seu namespace:
gcloud service-directory services create SERVICE --namespace=NAMESPACE --location=LOCATION
Substitua:
- SERVICE é o nome do recurso do diretório de serviços.
- NAMESPACE é o nome do namespace do seu Diretório de serviços.
- LOCATION é a região em que você cria conexões e vincula repositórios.
Configure um endpoint para seu serviço:
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
Substitua:
- ENDPOINT_NAME é o nome do endpoint.
- NAMESPACE é o nome do namespace do seu diretório de serviços.
- SERVICE é o nome do recurso do diretório de serviços.
- LOCATION é a região em que você cria conexões e vincula repositórios.
- INSTANCE_IP_ADDRESS é o endereço IP da sua instância do GitHub Enterprise
na rede. Por exemplo,
123.45.67.89
. Para saber mais, consulte Usar o Diretório de serviços para alcançar hosts fora do Google Cloud. - PORT é o nome da porta para HTTPS.
- PROJECT_ID_CONTAINING_NETWORK é o ID do Google Cloud projeto que contém a rede VPC.
- NETWORK é o nome da sua rede VPC.
Agora você pode usar o recurso de serviço (
projects/{PROJECT_ID}/locations/{LOCATION}/namespaces/{NAMESPACE}/services/{SERVICE}
) para criar a conexão nas etapas a seguir.Crie um acionador do GitHub Enterprise para criar repositórios hospedados na sua instância do GitHub Enterprise.
Usar o Diretório de serviços para alcançar hosts fora do Google Cloud
O diretório de serviços usa o intervalo de endereços IP 35.199.192.0/19
para
conectar seu host fora de Google Cloud. É necessário adicionar esse intervalo a
uma lista de permissões no firewall. Além disso, sua rede particular precisa ser
configurada para rotear esse intervalo pela conexão do Cloud VPN ou do Cloud Interconnect.
Se a conexão usar um Cloud Router, será possível configurá-la para comunicar o intervalo à rede particular.
Para saber mais, consulte Configurar o acesso à rede particular.
Usar o Cloud Load Balancing para acessar hosts fora do Google Cloud
Se a configuração da rede não permitir encaminhar o
intervalo de endereços IP do diretório de serviços 35.199.192.0/19
para o
Cloud VPN ou o Cloud Interconnect, será possível
criar um balanceador de carga usando o
balanceamento de carga do Cloud que direciona o tráfego para o host.
Ao criar o endpoint do diretório de serviços, use o endereço IP da regra de encaminhamento do balanceador de carga em vez do endereço IP do host. É possível usar um balanceador de carga HTTPS interno ou um balanceador de carga interno de protocolo de controle de transmissão (TCP) ao criar o endpoint.
Ao criar o balanceador de carga TCP, considere o seguinte:
- Apenas um grupo de endpoints de rede (NEG) de conectividade híbrida é necessário para acessar seu host.
- O balanceador de carga TCP não exige a chave privada não criptografada para seu certificado SSL.
- A configuração da Cloud VPN precisa usar o Cloud Router com o roteamento dinâmico global. Se o Cloud VPN usar roteamento estático, use um proxy que use o Cloud Service Mesh. Para saber mais, consulte Configurar serviços de borda de rede para implantações híbridas.
Para saber mais sobre a criação de um balanceador de carga HTTPS, consulte Configurar um balanceador de carga de aplicativo interno com conectividade híbrida. Para saber mais sobre a criação de um balanceador de carga TCP, consulte Configurar um balanceador de carga de rede de proxy interno regional com conectividade híbrida.
Próximas etapas
- Saiba como criar e gerenciar gatilhos de compilação.
- Saiba como realizar implantações azul-verde no Compute Engine.