Esta página explica como associar um anfitrião do Bitbucket Data Center ao Cloud Build. A ligação a um anfitrião do Bitbucket Data Center integra os seus repositórios do Bitbucket Data Center com o Cloud Build. Desta forma, pode configurar acionadores de compilação para criar repositórios a partir do Bitbucket Data Center e criar repositórios a partir do Bitbucket Data Center numa rede privada.
Antes de começar
-
Enable the Cloud Build, Secret Manager, and Compute Engine APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.
- Ter o código fonte pronto num repositório do Bitbucket Data Center.
- Ter um
Dockerfileou um ficheiro de configuração do Cloud Build no repositório de origem do Bitbucket Data Center. - Se não tiver instalado uma instância do Bitbucket Data Center, consulte o guia de instalação do Bitbucket Data Center para obter instruções.
Autorizações de IAM necessárias
Para receber as autorizações de que precisa para estabelecer ligação ao seu anfitrião do Bitbucket Data Center, peça ao seu administrador que lhe conceda as seguintes funções de IAM na sua conta de utilizador:
-
Editor do Cloud Build (
roles/cloudbuild.builds.editor) -
Proprietário das integrações (
roles/cloudbuild.integrations.owner)
Para mais informações sobre a atribuição de funções, consulte o artigo Faça a gestão do acesso a projetos, pastas e organizações.
Também pode conseguir as autorizações necessárias através de funções personalizadas ou outras funções predefinidas.
Se a sua instância do Bitbucket Data Center estiver alojada numa rede privada, consulte o artigo Crie repositórios a partir do Bitbucket Data Center numa rede privada para saber mais sobre as funções do IAM adicionais necessárias para configurar uma ligação de anfitrião.
Crie tokens de acesso pessoal
Antes de criar uma associação de anfitrião para a sua instância do Bitbucket Data Center, crie tokens de acesso pessoal no Bitbucket Data Center fazendo o seguinte:
Inicie sessão na sua instância do Bitbucket Data Center.
Siga as instruções para criar tokens de acesso HTTP para a sua conta de utilizador.
Crie um token de acesso com o âmbito de administrador do repositório para usar na associação e desassociação de repositórios.
Crie um token de acesso com o âmbito repository read para garantir que os repositórios do Cloud Build podem aceder ao código-fonte nos repositórios.
Guarde os valores dos tokens em segurança. Vai usá-las para estabelecer ligação ao seu repositório do Bitbucket Data Center.
Crie uma associação a um anfitrião do Bitbucket Data Center
Consola
Para associar o anfitrião do Bitbucket Data Center ao Cloud Build através da Google Cloud consola:
Abra a página Repositórios na Google Cloud consola:
Na parte superior da página, selecione o separador 1.ª geração.
Clique em Associar anfitrião.
Selecione Bitbucket Data Center no menu pendente.
É apresentado o painel Associar anfitrião.
Introduza as seguintes informações para ligar a sua instância do Bitbucket Data Center ao Cloud Build:
Região: selecione a região para a sua associação.
Nome: introduza um nome para a associação.
URL do anfitrião: o URL do anfitrião da sua instância do Bitbucket Data Center. Por exemplo,
https://bbs.example-test.com:7990.Google Cloud Chave da API: introduza a chave da API usada para autenticar as suas credenciais.
Certificado da AC: o seu certificado autoassinado. O certificado não pode exceder 10 KB e deve estar no formato PEM (
.pem,.cerou.crt). Se deixar esta secção em branco, Google Cloud usa um certificado do conjunto predefinido de certificados.Nome de utilizador: o nome de utilizador da sua conta do Bitbucket Data Center. Esta conta deve ter acesso de administrador aos repositórios que quer associar ao Cloud Build.
Chave de acesso de leitura: introduza a chave de acesso pessoal da sua conta do Bitbucket Data Center com autorizações de leitura.
Chave de acesso de administrador: introduza a chave de acesso pessoal da sua conta do Bitbucket Data Center com autorizações de administrador em projetos e repositórios.
Em Tipo de rede, selecione uma das seguintes opções:
Internet pública: selecione esta opção se a sua instância for acessível através da Internet pública.
Rede privada: selecione esta opção se a sua instância estiver alojada numa rede privada.
Projeto: selecione o seu Google Cloud ID do projeto.
Rede: selecione a sua rede no menu pendente. Se não tiver criado uma rede, consulte o artigo Criar e gerir redes VPC para saber como criar uma rede.
Intervalo de IPs: introduza o intervalo de IPs internos que podem ser atribuídos às VMs num intervalo alocado de uma rede em peering.
Pode especificar o intervalo através da notação de encaminhamento CIDR (Classless Inter-Domain Routing) no formato
STARTING_IP/SUBNET_PREFIX_SIZE. Por exemplo,192.0.2.0/24tem um comprimento do prefixo de 24. Os primeiros 24 bits do intervalo de IP são usados como máscara de sub-rede (192.0.2.0), enquanto os possíveis endereços de anfitriões variam de192.0.2.0a192.0.2.255.O valor do comprimento do prefixo não pode exceder
/29. Se não for especificado nenhum valor para o intervalo, é atribuído automaticamente um valor predefinido de/24. Se não for especificado nenhum valor para o comprimento do prefixo, os endereços IP são atribuídos automaticamente na rede VPC com peering. Se não for especificado nenhum valor para o endereço IP, é atribuído automaticamente um intervalo ao endereço IP na rede VPC com peering.
Clique em Associar anfitrião.
Se a sua instância do Bitbucket Data Center estiver numa rede com peering, a associação do seu anfitrião pode demorar vários minutos a ser concluída.
É feito o redirecionamento para o painel Associar repositório.
Depois de criar uma associação de anfitrião, os seus tokens de acesso pessoal e o segredo do webhook são armazenados de forma segura no Secret Manager. Pode ver e gerir os seus segredos na página do Secret Manager.
gcloud
Para associar o anfitrião do Bitbucket Data Center ao Cloud Build através de comandos gcloud, tem de executar o comando gcloud alpha builds enterprise-config bitbucket-data-center create no seu terminal. Ao contrário da associação do anfitrião através da consolaGoogle Cloud , tem de armazenar manualmente os tokens de acesso pessoais e o segredo do webhook no Secret Manager antes de executar o seguinte comando:
gcloud alpha builds enterprise-config bitbucket-data-center create
--name=CONFIG_NAME \
--user-name=USERNAME \
--host-uri=HOST_URI \
--admin-access-token-secret-version=ADMIN_ACCESS_TOKEN_SECRET_VERSION \
--read-access-token-secret-version=READ_ACCESS_TOKEN_SECRET_VERSION \
--webhook-secret-secret-version=WEBHOOK_SECRET_SECRET_VERSION \
--api-key=API_KEY \
--peered-network=PEERED_NETWORK \
--peered-network-ip-range=PEERED_NETWORK_IP_RANGE \
--ssl-ca-file=SSL_CA_FILE
Onde:
- CONFIG_NAME é o nome da sua configuração do Bitbucket Data Center.
- USERNAME é o seu nome de utilizador do Bitbucket Data Center.
- HOST_URI é o URI do anfitrião da sua instância do Bitbucket Data Center.
- ADMIN_ACCESS_TOKEN_SECRET_VERSION é o nome do recurso da sua chave de acesso de administrador armazenada no Gestor Secreto. O formato esperado para os segredos armazenados no Secret Manager é
projects/${PROJECT_ID}/secrets/${SECRET_NAME}/versions/${VERSION_NUMBER}. Pode especificarlatestcomo a sua versão para usar a versão mais recente do seu segredo. Isto aplica-se a cada recurso armazenado no Secret Manager.
- READ_ACCESS_TOKEN_SECRET_VERSION é o nome do recurso da sua chave de acesso de leitura armazenada no Gestor Secreto.
- WEBHOOK_SECRET_SECRET_VERSION é o nome do recurso do seu do seu segredo de webhook armazenado no Secret Manager.
- API_KEY é a Google Cloud chave da API.
Opcional: PEERED_NETWORK é a rede de VPC à qual se ligar para as suas instâncias do Bitbucket Data Center no local. Para saber mais, consulte o artigo Crie repositórios a partir do Bitbucket Data Center numa rede privada.
Opcional: PEERED_NETWORK_IP_RANGE é o intervalo de IP interno ao qual as VMs podem ser atribuídas no intervalo alocado de uma rede com peering.
SSL_CA_FILE é o caminho para um ficheiro local que contém o seu certificado SSL a usar para pedidos ao Bitbucket Data Center. O certificado deve estar no formato PEM.
API
Para ligar o anfitrião do Bitbucket Data Center ao Cloud Build através da API, use o seguinte modelo JSON. Ao contrário da associação do seu anfitrião através da Google Cloud consola, tem de armazenar manualmente os seus tokens de acesso pessoais e o segredo do webhook no Secret Manager antes de chamar a API:
{
"hostUri": "HOST_URI",
"username": "USERNAME",
"apiKey": "API_KEY",
"secrets": {
"adminAccessTokenVersionName": "ADMIN_ACCESS_TOKEN_SECRET_VERSION",
"readAccessTokenVersionName": "READ_ACCESS_TOKEN_SECRET_VERSION",
"webhookSecretVersionName": "WEBHOOK_SECRET_SECRET_VERSION",
},
"peeredNetwork": "PEERED_NETWORK",
"peeredNetworkIpRange": "PEERED_NETWORK_IP_RANGE",
"sslCa": "SSL_CERTIFICATE"
}
Onde:
- HOST_URI é o URI do anfitrião da sua instância do Bitbucket Data Center.
- USERNAME é o seu nome de utilizador do Bitbucket Data Center.
- API_KEY é a Google Cloud chave da API.
ADMIN_ACCESS_TOKEN_SECRET_VERSION é o nome do recurso da sua chave de acesso de administrador armazenada no Gestor Secreto. Pode ter de conceder a função Secret Manager Secret Accessor ao agente de serviço do Cloud Build,
service-${PROJECT_NUMBER}@gcp-sa-cloudbuild.iam.gserviceaccount.com. Para saber mais, consulte o artigo Conceder a função Secret Manager à sua conta de serviço.READ_ACCESS_TOKEN_SECRET_VERSION é o nome do recurso da sua chave de acesso de leitura armazenada no Gestor Secreto.
WEBHOOK_SECRET_SECRET_VERSION é o nome do recurso do seu segredo do webhook armazenado no Secret Manager.
Opcional: PEERED_NETWORK é a rede de VPC com a qual estabelecer uma relação de interligação para as suas instâncias do Bitbucket Data Center no local.
Pode especificar o intervalo através da notação de encaminhamento CIDR (Classless Inter-Domain Routing) no formato
STARTING_IP/SUBNET_PREFIX_SIZE. Por exemplo,192.0.2.0/24tem um comprimento do prefixo de 24. Os primeiros 24 bits do intervalo de IP são usados como a máscara de sub-rede (192.0.2.0), enquanto os possíveis endereços de anfitriões variam de192.0.2.0a192.0.2.225.Opcional: PEERED_NETWORK_IP_RANGE é o intervalo de IP interno ao qual as VMs podem ser atribuídas no intervalo alocado de uma rede com peering.
Opcional: SSL_CERTIFICATE é o certificado SSL usado para as suas instâncias do Bitbucket Data Center no local.
Introduza o seguinte comando curl no terminal:
curl -X POST -H "Authorization: Bearer "$(gcloud auth print-access-token) -H "Content-Type: application/json; charset=utf-8" https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/bitbucketServerConfigs/?bitbucketServerConfigId=CONFIG_NAME -d @config.json
Onde:
- PROJECT_ID é o seu Google Cloud ID do projeto.
- REGION é a região associada à sua configuração do Bitbucket Data Center.
- CONFIG_NAME é o nome da sua configuração do Bitbucket Data Center.
Se for bem-sucedido, o corpo da resposta contém uma instância recém-criada de Operation.
Introduza o seguinte comando curl no terminal:
curl -X GET -H "Authorization: Bearer "$(gcloud auth print-access-token) -H "Content-Type: application/json; charset=utf-8" -H "x-goog-user-project: PROJECT_NUMBER" https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/operations/OPERATION_ID
Onde:
- PROJECT_NUMBER é o número do seu Google Cloud projeto.
- PROJECT_ID é o ID do seu Google Cloud projeto.
- REGION é a região associada à sua configuração do Bitbucket Data Center.
- OPERATION_ID é o ID da operação de criação da configuração do Bitbucket Data Center.
Pode ter de continuar a executar o comando da API GetOperation até a resposta conter done: true, o que indica que a operação está concluída. Se a configuração do Bitbucket Data Center for criada com êxito, pode vê-la no campo response.value. Caso contrário, consulte o campo error para ver um relatório de erros detalhado.
Rode tokens de acesso antigos ou expirados do Bitbucket Data Center
Se o token de acesso do Bitbucket Data Center expirar, a ligação do host do Cloud Build é desassociada do respetivo repositório do Bitbucket Data Center. Como resultado, vai ver erros nas seguintes circunstâncias:
Quando tenta associar um repositório do Bitbucket Data Center a uma ligação do Cloud Build, é apresentada uma mensagem
Failed to fetch repositories to link. Check that Cloud Build is still authorized to access data from the selected connection.Na página Acionadores, quando clica em Executar, a página Executar acionador é aberta e mostra uma mensagem
Failed to list branches. You can still enter one manually.
Para rodar um token antigo ou expirado para a sua ligação, faça o seguinte:
Encontre os segredos associados à ligação do anfitrião:
Execute o seguinte comando:
gcloud builds connections describe CONNECTION_PATH --region=REGIONOnde:
- CONNECTION_PATH é o caminho da ligação do anfitrião do Bitbucket Data Center no Cloud Build, no formato
projects/PROJECT_ID/locations/REGION/connections/CONNECTION_NAME. - REGION é a região da sua ligação.
- CONNECTION_PATH é o caminho da ligação do anfitrião do Bitbucket Data Center no Cloud Build, no formato
No resultado do comando, procure os valores dos campos do token de utilizador.
readAuthorizerCredential.userTokenSecretVersionmostra o nome do Secret Manager doReadtoken eauthorizerCredential.userTokenSecretVersionmostra o nome do Secret Manager doAdmintoken. Estes nomes são armazenados como segredos no Secret Manager.
Rode cada chave de acesso no Bitbucket Data Center:
Aceda ao repositório do Bitbucket Data Center associado à ligação do anfitrião do Cloud Build.
Siga as instruções na documentação do Bitbucket para rodar um token de acesso. Quando roda um token, o Bitbucket Data Center cria um novo token com novas credenciais e invalida a versão anterior desse token. O token com rotação tem as mesmas autorizações e âmbito que o token original.
Copie o ID do token rodado.
Crie uma nova versão do segredo para cada token:
Abra a página Secret Manager na Google Cloud consola:
Para cada token que rodou, encontre o nome secreto que identificou no passo 1 e clique em Ações e, de seguida, clique em Adicionar nova versão.
Na janela Adicionar nova versão, introduza o ID do token rodado e, de seguida, clique em Adicionar nova versão.
O que se segue?
- Saiba como associar um repositório do Bitbucket Data Center.
- Saiba como fazer implementações azul-verde no Compute Engine.