Conectar-se a um host do Bitbucket Data Center

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 the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

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:

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:

  1. Faça login na sua instância do Bitbucket Data Center.

  2. Siga as instruções para criar tokens de acesso HTTP para sua conta de usuário.

    1. Crie um token de acesso com o escopo administrador do repositório para usar na conexão e desconexão de repositórios.

    2. 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.

  3. 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 :

  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 1ª geração.

  3. Clique em Conectar host.

  4. 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:

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

    2. Nome: insira um nome para a conexão.

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

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

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

    6. 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.

    7. Token de acesso de leitura: insira o token de acesso pessoal da sua conta do Bitbucket Data Center com permissões de leitura.

    8. 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.

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

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

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

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

        2. 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.

        3. 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/24 tem 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 de 192.0.2.0 a 192.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 /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 em peering. Se nenhum valor for especificado para o endereço IP, ele será automaticamente atribuído a um intervalo na rede VPC pareada.

  5. 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}. Especifique latest como 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/24 tem 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 de 192.0.2.0 a 192.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 connection aparece.

  • 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:

  1. Encontre os secrets associados à conexão do host:

    1. Execute este comando:

      gcloud builds connections describe CONNECTION_PATH --region=REGION
      

      Em 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.
    2. Na saída do comando, procure os valores dos campos do token de usuário. readAuthorizerCredential.userTokenSecretVersion mostra o nome do Secret Manager do token Read, e authorizerCredential.userTokenSecretVersion mostra o nome do Secret Manager do token Admin. Esses nomes são armazenados como secrets no Secret Manager.

  2. Gire cada token de acesso no Bitbucket Data Center:

    1. Acesse o repositório do Bitbucket Data Center conectado à sua conexão de host do Cloud Build.

    2. 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.

    3. Copie o ID do token rotacionado.

  3. Crie uma nova versão do secret para cada token:

    1. Abra a página do Secret Manager no console Google Cloud :

      Abrir a página "Gerenciador de secrets"

    2. 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.

    3. Na janela Adicionar nova versão, insira o ID do token rotacionado e clique em Adicionar nova versão.

Para mais informações, consulte Tokens de acesso e Como aumentar a segurança no Bitbucket: apresentação da expiração para tokens de acesso na documentação do Bitbucket Data Center.

A seguir