Conectar-se a um host do data center do Bitbucket

Nesta página, explicamos como conectar um host de data center do Bitbucket ao Cloud Build.

Antes de começar

  • Ative as APIs Cloud Build, Secret Manager, and Compute Engine.

    Ative as APIs

  • Tenha seu código-fonte pronto em um repositório do data center do Bitbucket.
  • Ter um Dockerfile ou um arquivo de configuração do Cloud Build no seu repositório de origem do data center do Bitbucket.
  • Se você não instalou uma instância de data center do Bitbucket, consulte as instruções em Instalar o data center do Bitbucket.
  • Para usar os comandos gcloud nesta página, instale a Google Cloud CLI.

Conectar-se a um host do data center do Bitbucket

Console

Para conectar o host do data center do Bitbucket ao Cloud Build usando o console do Google Cloud:

  1. Abra a página Repositórios no Console do Google Cloud:

    Abrir a página Repositórios

  2. Na parte de cima da página, selecione a guia 1a geração.

  3. Clique em Conectar host.

  4. Selecione Bitbucket Data Center no menu suspenso.

    O painel Conectar host vai aparecer.

    Digite as seguintes informações para conectar sua instância do data center do Bitbucket ao Cloud Build:

    1. Região: selecione a região da sua conexão.

    2. Name (Nome): digite um nome para a conexão.

    3. URL do host: o URL do host da sua instância do data center do Bitbucket. Por exemplo, https://bbs.example-test.com:7990.

    4. Google Cloud API key: insira a chave de API usada para autenticar suas credenciais.

    5. Certificado de CA: seu certificado autoassinado. O certificado não pode exceder-se de 10 KB e precisa estar no formato PEM (.pem, .cer ou .crt). Se você deixar esta seção em branco, o Google Cloud usará um certificado do conjunto padrão de certificados.

    6. Nome de usuário: seu nome de usuário da conta do data center do Bitbucket. Essa conta precisa ter acesso de administrador aos repositórios que você quer conectar ao Cloud Build.

    7. Token de acesso de leitura: insira seu token de acesso pessoal da conta do data center do Bitbucket com permissões de leitura.

    8. Token de acesso de administrador: insira o token de acesso pessoal da sua conta do data center do Bitbucket com permissões de administrador em projetos e repositórios.

    9. Em Tipo de rede, selecione uma das seguintes opções:

      1. Internet pública: selecione essa opção caso a instância seja acessível usando a Internet pública.

      2. Rede privada: selecione essa opção se a instância estiver hospedada em uma rede privada.

        1. Projeto: selecione o ID do projeto do Google Cloud.

        2. Rede: selecione sua rede no menu suspenso. Se você não criou uma rede, consulte Criar e gerenciar redes VPC para saber como criar uma rede.

        3. Intervalo de IP: insira o intervalo de IP interno que as VMs podem ser atribuídas dentro do intervalo alocado de uma rede com peering.

          Para especificar o intervalo, use a notação de roteamento do roteamento entre domínios sem classe (CIDR) no formato STARTING_IP/SUBNET_PREFIX_SIZE. Por exemplo, 192.0.2.0/24 tem o comprimento de prefixo 24. Os primeiros 24 bits do intervalo de IP são usados como máscara de sub-rede (192.0.2.0), enquanto os endereços de hosts possíveis variam de 192.0.2.0 a 192.0.2.255.

          O valor do tamanho do prefixo não pode exceder /29. Se nenhum valor for especificado para o intervalo, um valor padrão de /24 será 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 com peering. Se nenhum valor for especificado para o endereço IP, um intervalo será atribuído automaticamente a ele na rede VPC com peering.

  5. Clique em Conectar host.

    Se a instância do data center do Bitbucket estiver em uma rede com peering, a conexão do host poderá levar alguns 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. É possível conferir e gerenciar os secrets na página Secret Manager.

gcloud

Para conectar o host do data center do Bitbucket ao Cloud Build usando comandos gcloud, execute o comando gcloud alpha builds enterprise-config bitbucketserver create no seu terminal. Diferente de conectar seu host usando o Console do Google Cloud, você precisará 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=BITBUCKET_DATA_CENTER_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:

  • BITBUCKET_DATA_CENTER_CONFIG_NAME é o nome da configuração do data center do Bitbucket.
  • USERNAME é seu nome de usuário do data center do Bitbucket.
  • HOST_URI é o URI do host da instância do data center do Bitbucket.
  • ADMIN_ACCESS_TOKEN_SECRET_VERSION é o nome do recurso do 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}. Especifique latest como sua versão para usar a versão mais recente do secret. Isso se aplica a cada recurso armazenado no Secret Manager.
  • 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.
  • API_KEY é a chave de API do Google Cloud;
  • Opcional: PEERED_NETWORK é a rede VPC a ser conectada às instâncias do data center do Bitbucket no local. Para saber mais, consulte Criar repositórios do data center do Bitbucket em uma rede privada.

  • Opcional: PEERED_NETWORK_IP_RANGE é o intervalo de IP interno ao qual as VMs podem ser atribuídas dentro de um intervalo alocado de rede com peering.

  • SSL_CA_FILE é o caminho para um arquivo local que contém o certificado SSL a ser usado nas solicitações para o data center do Bitbucket. O certificado precisa estar no formato PEM.

API

Para conectar o host do data center do Bitbucket ao Cloud Build usando a API, use o modelo JSON a seguir. Diferente de conectar seu host usando o console do Google Cloud, você precisa armazenar manualmente os 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 instância do data center do Bitbucket.
  • USERNAME é seu nome de usuário do data center do Bitbucket.
  • API_KEY é a chave de API do Google Cloud;
  • ADMIN_ACCESS_TOKEN_SECRET_VERSION é o nome do recurso do token de acesso de administrador armazenado no Secret Manager. Talvez seja necessário conceder o papel de Secret Manager à sua conta 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 à sua 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 das suas instâncias do data center do Bitbucket no local.

    É possível especificar o intervalo usando a notação de roteamento do roteamento entre domínios sem classe (CIDR, na sigla em inglês) no formato STARTING_IP/SUBNET_PREFIX_SIZE. Por exemplo, 192.0.2.0/24 tem o comprimento de prefixo 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 de 192.0.2.0 a 192.0.2.225.

  • Opcional: PEERED_NETWORK_IP_RANGE é o intervalo de IP interno ao qual as VMs podem ser atribuídas dentro de um intervalo alocado de rede com peering.

  • Opcional: SSL_CERTIFICATE é o certificado SSL usado para as instâncias do data center do Bitbucket no local.

Digite o seguinte comando curl no seu 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=BITBUCKET_DATA_CENTER_CONFIG_NAME -d @config.json

Em que:

  • PROJECT_ID é o ID do projeto no Google Cloud.
  • REGION é a região associada à configuração do data center do Bitbucket.
  • BITBUCKET_DATA_CENTER_CONFIG_NAME é o nome da configuração do data center do Bitbucket.

Se a solicitação for concluída, o corpo da resposta incluirá uma instância de Operation.

Digite o seguinte comando curl no seu 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 do Google Cloud.
  • PROJECT_ID é o ID do projeto no Google Cloud.
  • REGION é a região associada à configuração do data center do Bitbucket.
  • OPERATION_ID é o ID da operação de criação de configuração do data center do Bitbucket.

Talvez seja necessário continuar executando o comando da API GetOperation até que a resposta contenha done: true, que indica que a operação foi concluída. Se a configuração do data center do Bitbucket tiver sido criada, será possível ver a configuração no campo response.value. Caso contrário, consulte o campo error para ver um relatório de erros detalhado.

A seguir