Nesta página, explicamos como conectar um host do Bitbucket Server ao Cloud Build. A conexão a um host do Bitbucket Server integra seus repositórios do Bitbucket Server ao Cloud Build. Assim, você pode configurar gatilhos de build para criar repositórios do Bitbucket Server e criar repositórios do Bitbucket Server em uma rede particular.
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 Server.
- Tenha um
Dockerfileou um arquivo de configuração do Cloud Build no seu repositório de origem do Bitbucket Server. - Se você não instalou uma instância do Bitbucket Server, consulte o guia de instalação do Bitbucket Server para instruções.
Permissões do IAM obrigatórias
Para receber as permissões necessárias para se conectar ao host do Bitbucket Server, 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 Server estiver hospedada em uma rede particular, consulte Criar repositórios do Bitbucket Server 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 Server, crie tokens de acesso pessoal no Bitbucket Server fazendo o seguinte:
Faça login na sua instância do Bitbucket Server.
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 Server.
Conectar-se a um host do Bitbucket Server
Console
Para conectar seu host do Bitbucket Server 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 Server no menu suspenso.
O painel Conectar host vai aparecer.
Insira as seguintes informações para conectar sua instância do Bitbucket Server 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 Server. 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: o nome de usuário da sua conta do Bitbucket Server. 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 Server com permissões de leitura.
Token de acesso de administrador: insira o token de acesso pessoal da sua conta do Bitbucket Server 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 Server 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 seu host do Bitbucket Server ao Cloud Build
usando comandos gcloud, execute o comando
gcloud alpha builds enterprise-config bitbucketserver 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 bitbucketserver 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 Server.
- USERNAME é seu nome de usuário do Bitbucket Server.
- HOST_URI é o URI do host da sua instância do Bitbucket Server.
- 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 Server no local. Para saber mais, consulte Criar repositórios do Bitbucket Server 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 Server. O certificado precisa estar no formato PEM.
API
Para conectar seu host do Bitbucket Server 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 Server.
- USERNAME é seu nome de usuário do Bitbucket Server.
- 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 que será pareada com as instâncias do Bitbucket Server 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 nas suas instâncias do Bitbucket Server no local.
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 à configuração do Bitbucket Server.
- CONFIG_NAME é o nome da sua configuração do Bitbucket Server.
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 à configuração do Bitbucket Server.
- OPERATION_ID é o ID da operação de criação da configuração do Bitbucket Server.
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 Server for criada corretamente, ela vai aparecer no campo response.value. Caso contrário, consulte o campo error para um relatório de erros detalhado.
A seguir
- Saiba como conectar um repositório do Bitbucket Server.
- Saiba como fazer implantações azul-verde no Compute Engine.