Nesta página, explicamos como conectar um host do Bitbucket Data Center ao Cloud Build. A conexão a um host do Bitbucket Data Center integra seus repositórios do Bitbucket Data Center ao Cloud Build. Dessa forma, você pode configurar gatilhos de build para criar repositórios do Bitbucket Data Center e criar repositórios do Bitbucket Data Center em uma 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.
- Tenha o código-fonte pronto em um repositório do Bitbucket Data Center.
- Tenha um
Dockerfileou um arquivo de configuração do Cloud Build no seu repositório de origem do Bitbucket Data Center. - Se você não instalou uma instância do Bitbucket Data Center, consulte o Guia de instalação do Bitbucket Data Center para instruções.
Permissões do IAM obrigatórias
Para receber as permissões necessárias para se conectar ao host do Bitbucket Data Center, peça ao administrador para conceder a você os seguintes papéis do IAM na sua conta de usuário:
-
Editor do Cloud Build (
roles/cloudbuild.builds.editor) -
Proprietário de integrações (
roles/cloudbuild.integrations.owner)
Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.
Também é possível conseguir as permissões necessárias usando papéis personalizados ou outros papéis predefinidos.
Se a instância do Bitbucket Data Center estiver hospedada em uma rede particular, consulte Criar repositórios do Bitbucket Data Center em uma rede particular para saber mais sobre os papéis adicionais do IAM necessários para configurar uma conexão de host.
Criar tokens de acesso pessoal
Antes de criar uma conexão de host para sua instância do Bitbucket Data Center, faça o seguinte para criar tokens de acesso pessoal no Bitbucket Data Center:
Faça login na sua instância do Bitbucket Data Center.
Siga as instruções para criar tokens de acesso HTTP para sua conta de usuário.
Crie um token de acesso com o escopo administrador do repositório para usar na conexão e desconexão de repositórios.
Crie um token de acesso com o escopo leitura do repositório para garantir que os repositórios do Cloud Build possam acessar o código-fonte nos repositórios.
Salve os valores de token com segurança. Você vai usá-los para se conectar ao repositório do Bitbucket Data Center.
Conectar-se a um host do Bitbucket Data Center
Console
Para conectar seu host do Bitbucket Data Center ao Cloud Build usando o console Google Cloud :
Abra a página Repositórios no console do Google Cloud :
Na parte de cima da página, selecione a guia 1ª geração.
Clique em Conectar host.
Selecione Bitbucket Data Center no menu suspenso.
O painel Conectar host vai aparecer.
Insira as seguintes informações para conectar sua instância do Bitbucket Data Center ao Cloud Build:
Região: selecione a região da conexão.
Nome: insira um nome para a conexão.
URL do host: o URL do host da sua instância do Bitbucket Data Center. Por exemplo,
https://bbs.example-test.com:7990.Google Cloud Chave de API: insira a chave de API usada para autenticar suas credenciais.
Certificado de CA: seu certificado autoassinado. Seu certificado não pode exceder 10 KB e deve estar no formato PEM (
.pem,.cerou.crt). Se você deixar esta seção em branco, Google Cloud usará um certificado do conjunto padrão de certificados.Nome de usuário: seu nome de usuário da conta do Bitbucket Data Center. Essa conta precisa ter acesso de administrador aos repositórios que você quer conectar ao Cloud Build.
Token de acesso de leitura: insira o token de acesso pessoal da sua conta do Bitbucket Data Center com permissões de leitura.
Token de acesso de administrador: insira o token de acesso pessoal da sua conta do Bitbucket Data Center com permissões de administrador em projetos e repositórios.
Em Tipo de rede, selecione uma das seguintes opções:
Internet pública: selecione essa opção se a instância estiver acessível usando a Internet pública.
Rede particular: selecione essa opção se a instância estiver hospedada em uma rede particular.
Projeto: selecione o ID do projeto Google Cloud .
Rede: selecione sua rede no menu suspenso. Se você ainda não criou uma rede, consulte Criar e gerenciar redes VPC para saber como fazer isso.
Intervalo de IP: insira o intervalo de IP interno que pode ser atribuído às VMs no intervalo alocado de uma rede com peering.
É possível especificar o intervalo usando a notação de roteamento entre domínios sem classe (CIDR) no formato
STARTING_IP/SUBNET_PREFIX_SIZE. Por exemplo,192.0.2.0/24tem um comprimento de 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 hosts variam de192.0.2.0a192.0.2.255.O valor do comprimento do prefixo não pode exceder
/29. Se nenhum valor for especificado para o intervalo, um valor padrão de/24será atribuído automaticamente. Se nenhum valor for especificado para o tamanho do prefixo, os endereços IP serão atribuídos automaticamente na rede VPC em peering. Se nenhum valor for especificado para o endereço IP, ele será automaticamente atribuído a um intervalo na rede VPC pareada.
Clique em Conectar host.
Se a instância do Bitbucket Data Center estiver em uma rede com peering, a conexão do host poderá levar vários minutos para ser concluída.
Você será redirecionado para o painel Conectar repositório.
Depois de criar uma conexão de host, seus tokens de acesso pessoal e o secret do webhook serão armazenados com segurança no Secret Manager. Você pode acessar e gerenciar seus secrets na página Secret Manager (link em inglês).
gcloud
Para conectar o host do data center do Bitbucket ao Cloud Build
usando comandos gcloud, execute o comando
gcloud alpha builds enterprise-config bitbucket-data-center create
no terminal. Ao contrário da conexão do host usando o consoleGoogle Cloud , você precisa armazenar manualmente seus tokens de acesso pessoal e o secret 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
Em que:
- CONFIG_NAME é o nome da sua configuração do Bitbucket Data Center.
- USERNAME é seu nome de usuário do Bitbucket Data Center.
- HOST_URI é o URI do host da sua instância do Bitbucket Data Center.
- ADMIN_ACCESS_TOKEN_SECRET_VERSION é o nome do recurso do seu
token de acesso de administrador armazenado no Secret Manager. O formato esperado para secrets armazenados no Secret Manager é
projects/${PROJECT_ID}/secrets/${SECRET_NAME}/versions/${VERSION_NUMBER}. Especifiquelatestcomo a versão para usar a mais recente do seu secret. Isso se aplica a cada recurso armazenado no Secret Manager.
- READ_ACCESS_TOKEN_SECRET_VERSION é o nome do recurso do seu token de acesso de leitura armazenado no Secret Manager.
- WEBHOOK_SECRET_SECRET_VERSION é o nome do recurso do secret do webhook armazenado no Secret Manager.
- API_KEY é a chave de API Google Cloud .
Opcional: PEERED_NETWORK é a rede VPC a ser conectada para suas instâncias do Bitbucket Data Center no local. Para saber mais, consulte Criar repositórios do Bitbucket Data Center em uma rede particular.
Opcional: PEERED_NETWORK_IP_RANGE é o intervalo de IP interno que pode ser atribuído às VMs no intervalo alocado de uma rede com peering.
SSL_CA_FILE é o caminho para um arquivo local que contém o certificado SSL a ser usado em solicitações ao Bitbucket Data Center. O certificado precisa estar no formato PEM.
API
Para conectar seu host do Bitbucket Data Center ao Cloud Build usando a API, use o seguinte modelo JSON. Ao contrário da conexão do host usando o console Google Cloud , você precisa armazenar manualmente seus tokens de acesso pessoal e o secret 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"
}
Em que:
- HOST_URI é o URI do host da sua instância do Bitbucket Data Center.
- USERNAME é seu nome de usuário do Bitbucket Data Center.
- API_KEY é a chave de API Google Cloud .
ADMIN_ACCESS_TOKEN_SECRET_VERSION é o nome do recurso do seu token de acesso de administrador armazenado no Secret Manager. Talvez seja necessário conceder o papel Acessador do secret do Secret Manager ao agente de serviço do Cloud Build,
service-${PROJECT_NUMBER}@gcp-sa-cloudbuild.iam.gserviceaccount.com. Para saber mais, consulte Como conceder o papel de Secret Manager à conta de serviço.READ_ACCESS_TOKEN_SECRET_VERSION é o nome do recurso do token de acesso de leitura armazenado no Secret Manager.
WEBHOOK_SECRET_SECRET_VERSION é o nome do recurso do secret do webhook armazenado no Secret Manager.
Opcional: PEERED_NETWORK é a rede VPC para fazer peering com as instâncias do Bitbucket Data Center no local.
É possível especificar o intervalo usando a notação de roteamento entre domínios sem classe (CIDR) no formato
STARTING_IP/SUBNET_PREFIX_SIZE. Por exemplo,192.0.2.0/24tem um comprimento de 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 hosts variam de192.0.2.0a192.0.2.225.Opcional: PEERED_NETWORK_IP_RANGE é o intervalo de IP interno que pode ser atribuído às VMs no intervalo alocado de uma rede com peering.
Opcional: SSL_CERTIFICATE é o certificado SSL usado para suas instâncias locais do Bitbucket Data Center.
Insira 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
Em que:
- PROJECT_ID é o 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 a solicitação for bem-sucedida, o corpo da resposta incluirá uma instância de Operation.
Insira 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
Em que:
- PROJECT_NUMBER é o número do projeto Google Cloud .
- PROJECT_ID é o ID do projeto Google Cloud .
- 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.
Talvez seja necessário continuar executando o comando da API GetOperation até que a resposta contenha done: true, o que indica que a operação foi concluída. Se a configuração do Bitbucket Data Center for criada corretamente, ela vai aparecer no campo response.value. Caso contrário, consulte o campo error para um relatório de erros detalhado.
Fazer a rotação de tokens de acesso antigos ou expirados do Bitbucket Data Center
Se o token de acesso do Bitbucket Data Center expirar, a conexão do host do Cloud Build será desconectada do repositório do Bitbucket Data Center. Como resultado, você vai encontrar erros nas seguintes circunstâncias:
Quando você tenta vincular um repositório do Bitbucket Data Center a uma conexão do Cloud Build, uma mensagem
Failed to fetch repositories to link. Check that Cloud Build is still authorized to access data from the selected connectionaparece.Na página Acionadores, quando você clica em Executar, a página Executar acionador é aberta e mostra uma mensagem
Failed to list branches. You can still enter one manually.
Para fazer a rotação de um token antigo ou expirado da sua conexão, faça o seguinte:
Encontre os secrets associados à conexão do host:
Execute este comando:
gcloud builds connections describe CONNECTION_PATH --region=REGIONEm que:
- CONNECTION_PATH é o caminho da conexão do host do Bitbucket Data Center
no Cloud Build, no formato
projects/PROJECT_ID/locations/REGION/connections/CONNECTION_NAME. - REGION é a região da sua conexão.
- CONNECTION_PATH é o caminho da conexão do host do Bitbucket Data Center
no Cloud Build, no formato
Na saída do comando, procure os valores dos campos do token de usuário.
readAuthorizerCredential.userTokenSecretVersionmostra o nome do Secret Manager do tokenRead, eauthorizerCredential.userTokenSecretVersionmostra o nome do Secret Manager do tokenAdmin. Esses nomes são armazenados como secrets no Secret Manager.
Gire cada token de acesso no Bitbucket Data Center:
Acesse o repositório do Bitbucket Data Center conectado à sua conexão de host do Cloud Build.
Siga as instruções na documentação do Bitbucket para fazer a rotação de um token de acesso. Quando você faz a rotação de um token, o Bitbucket Data Center cria um novo token com novas credenciais e invalida a versão anterior. O token rotacionado tem as mesmas permissões e escopo do token original.
Copie o ID do token rotacionado.
Crie uma nova versão do secret para cada token:
Abra a página do Secret Manager no console Google Cloud :
Para cada token que você girou, encontre o nome do secret identificado na etapa 1, clique em Ações e em Adicionar nova versão.
Na janela Adicionar nova versão, insira o ID do token rotacionado e clique em Adicionar nova versão.
A seguir
- Saiba como conectar um repositório do Bitbucket Data Center.
- Saiba como fazer implantações azul-verde no Compute Engine.