Esta página explica como estabelecer ligação a um anfitrião do Bitbucket Server no Cloud Build.
Antes de começar
-
Enable the Cloud Build, Secret Manager, and Compute Engine APIs.
- Se não tiver instalado uma instância do Bitbucket Server, consulte o guia de instalação do Bitbucket Server para ver instruções.
A configurar o
Antes de associar o anfitrião do Bitbucket Server, tem de obter uma chave de API para autenticar e aceitar eventos recebidos do Bitbucket Server. Além disso, tem de conceder autorizações da IAM no seu Google Cloud projeto para criar tokens de acesso pessoal no Bitbucket Server para criar webhooks e obter dados do repositório.
Obter uma chave da API
Para associar o seu anfitrião e autenticar eventos de webhook recebidos, precisa de uma chave da API.
Para obter uma chave da API:
Abra a página Credenciais na Google Cloud consola:
Clique em Criar credenciais.
Clique em Chave da API.
É apresentada uma caixa de diálogo com a chave da API criada. Tome nota da sua chave da API.
Se quiser restringir a sua chave para aplicações de produtos, clique em Restringir chave para concluir passos adicionais para proteger a sua chave. Caso contrário, clique em Fechar.
Para saber como restringir a sua chave, consulte o artigo Aplicar restrições de chaves da API.
Autorizações de IAM necessárias
Para associar o seu anfitrião do Bitbucket Server, conceda a função de
editor do Cloud Build (roles/cloudbuild.builds.editor
)
e a função de
proprietário das integrações do Cloud Build (cloudbuild.integrations.owner
)
à sua conta de utilizador.
Para adicionar as funções necessárias à sua conta de utilizador, consulte o artigo Configurar o acesso aos recursos do Cloud Build. Para saber mais sobre as funções IAM associadas ao Cloud Build, consulte o artigo Funções e autorizações de IAM.
Criar tokens de acesso pessoal
Tem de criar dois tokens de acesso pessoal no Bitbucket Server para realizar as seguintes tarefas:
- Criar webhooks: crie um token de acesso pessoal com acesso de administrador.
- Recuperar dados do repositório: crie um token de acesso pessoal com acesso de leitura. Opcionalmente, pode criar um token que tenha acesso de leitura e escrita.
Estas chaves de acesso pessoais são as autorizações mínimas necessárias. Pode ter de configurar autorizações adicionais no Bitbucket Server, conforme necessário. Por exemplo, pode selecionar a conta do Bitbucket Server para ter acesso apenas a um subconjunto dos repositórios na sua instância do Bitbucket Server para permitir um controlo mais detalhado do que está disponível no Cloud Build.
Depois de criar os tokens de acesso pessoal, guarde os valores dos tokens em segurança para estabelecer ligação ao seu repositório do Bitbucket Server.
Estabelecer ligação a um anfitrião do Bitbucket Server
Consola
Para associar o anfitrião do Bitbucket Server 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 Server no menu pendente.
É apresentado o painel Associar anfitrião.
Introduza as seguintes informações para ligar a sua instância do Bitbucket Server ao Cloud Build:
Região: selecione a região para a sua associação.
Nome: introduza um nome para a ligação.
URL do anfitrião: o URL do anfitrião da sua instância do Bitbucket Server. Por exemplo,
https://bbs.example-test.com:7990
.Google Cloud Chave da API: a chave da API usada para autenticar as suas credenciais.
Certificado da AC: o seu certificado autoassinado. O certificado não pode ter um tamanho superior a 10 KB e deve estar no formato PEM (
.pem
,.cer
ou.crt
). Se esta secção for deixada em branco, é usado um conjunto de certificados predefinido.Nome de utilizador: o nome de utilizador da sua conta do Bitbucket Server. Esta conta deve ter acesso de administrador aos repositórios que quer associar ao Cloud Build.
Chave de acesso de leitura: a chave de acesso pessoal da sua conta do Bitbucket Server com autorizações de leitura.
Chave de acesso de administrador: a chave de acesso pessoal da sua conta do Bitbucket Server 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 interno que pode ser atribuído à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/24
tem 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.0
a192.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 de 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 Server estiver numa rede com peering, a ligação do 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 Secret Manager.
gcloud
Para associar o anfitrião do Bitbucket Server ao Cloud Build
através de comandos gcloud
, tem de executar o comando
gcloud alpha builds enterprise-config bitbucketserver 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 bitbucketserver create
--name=BITBUCKET_SERVER_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:
- BITBUCKET_SERVER_CONFIG_NAME é o nome da sua configuração do Bitbucket Server.
- USERNAME é o seu nome de utilizador do Bitbucket Server.
- HOST_URI é o URI do anfitrião da sua instância do Bitbucket Server.
- 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 especificarlatest
como 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 VPC à qual se ligar para as suas instâncias do Bitbucket Server no local. Para saber mais, consulte o artigo Crie repositórios a partir do Bitbucket Server 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 em peering.
SSL_CA_FILE é o caminho para um ficheiro local que contém o seu certificado SSL a usar para pedidos ao Bitbucket Server. O certificado deve estar no formato PEM.
API
Para associar o seu anfitrião do Bitbucket Server 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 consola, tem de armazenar manualmente os seus tokens de acesso pessoais e o segredo do webhook no Secret Manager antes de chamar a API: Google Cloud
{
"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 Server.
- USERNAME é o seu nome de utilizador do Bitbucket Server.
- 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 do seu segredo de webhook armazenado no Secret Manager.
[Opcional] PEERED_NETWORK é a rede de VPC para estabelecer peering com as suas instâncias do Bitbucket Server 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/24
tem 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.0
a192.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 em peering.
[Opcional] SSL_CERTIFICATE é o certificado SSL usado para as suas instâncias do Bitbucket Server 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" -H "x-goog-user-project: PROJECT_NUMBER" https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/bitbucketServerConfigs/?bitbucketServerConfigId=BITBUCKET_SERVER_CONFIG_NAME -d @config.json
Onde:
- PROJECT_NUMBER é o número do seu projeto na nuvem.
- PROJECT_ID é o ID do seu projeto do Google Cloud.
- REGION é a região associada à configuração do Bitbucket Server.
- BITBUCKET_SERVER_CONFIG_NAME é o nome da sua configuração do Bitbucket Server.
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 projeto na nuvem.
- PROJECT_ID é o ID do seu projeto do 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.
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 Server 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.
O que se segue?
- Saiba como associar um repositório do Bitbucket Server.
- Saiba como fazer implementações azul/verde no Compute Engine.