Crie uma associação a um anfitrião do Bitbucket Server

Esta página explica como associar um anfitrião do Bitbucket Server ao Cloud Build. A ligação a um anfitrião do Bitbucket Server integra os seus repositórios do Bitbucket Server com o Cloud Build. Desta forma, pode configurar acionadores de compilação para criar repositórios a partir do Bitbucket Server e criar repositórios a partir do Bitbucket Server numa 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

Autorizações de IAM necessárias

Para receber as autorizações de que precisa para se ligar ao seu anfitrião do Bitbucket Server, peça ao seu administrador que lhe conceda as seguintes funções de IAM na sua conta de utilizador:

Para mais informações sobre a atribuição de funções, consulte o artigo Faça a gestão do acesso a projetos, pastas e organizações.

Também pode conseguir as autorizações necessárias através de funções personalizadas ou outras funções predefinidas.

Se a sua instância do Bitbucket Server estiver alojada numa rede privada, consulte o artigo Crie repositórios a partir do Bitbucket Server numa rede privada para saber mais sobre as funções do IAM adicionais necessárias para configurar uma associação de anfitriões.

Crie tokens de acesso pessoal

Antes de criar uma associação de anfitrião para a sua instância do Bitbucket Server, crie tokens de acesso pessoal no Bitbucket Server fazendo o seguinte:

  1. Inicie sessão na instância do Bitbucket Server.

  2. Siga as instruções para criar tokens de acesso HTTP para a sua conta de utilizador.

    1. Crie um token de acesso com o âmbito de administrador do repositório para usar na associação e desassociação de repositórios.

    2. Crie um token de acesso com o âmbito repository read para garantir que os repositórios do Cloud Build podem aceder ao código-fonte nos repositórios.

  3. Guarde os valores dos tokens em segurança. Vai usá-los para estabelecer ligação ao seu repositório do Bitbucket Server.

Crie uma associaçã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:

  1. Abra a página Repositórios na Google Cloud consola:

    Abra a página Repositórios

  2. Na parte superior da página, selecione o separador 1.ª geração.

  3. Clique em Associar anfitrião.

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

    1. Região: selecione a região para a sua associação.

    2. Nome: introduza um nome para a associação.

    3. URL do anfitrião: o URL do anfitrião da sua instância do Bitbucket Server. Por exemplo, https://bbs.example-test.com:7990.

    4. Google Cloud Chave da API: introduza a chave da API usada para autenticar as suas credenciais.

    5. Certificado da AC: o seu certificado autoassinado. O certificado não pode exceder 10 KB e deve estar no formato PEM (.pem, .cer ou .crt). Se deixar esta secção em branco, Google Cloud usa um certificado do conjunto predefinido de certificados.

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

    7. Chave de acesso de leitura: introduza a chave de acesso pessoal da sua conta do Bitbucket Server com autorizações de leitura.

    8. Token de acesso de administrador: introduza o token de acesso pessoal da sua conta do Bitbucket Server com autorizações de administrador em projetos e repositórios.

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

      1. Internet pública: selecione esta opção se a sua instância for acessível através da Internet pública.

      2. Rede privada: selecione esta opção se a sua instância estiver alojada numa rede privada.

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

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

        3. Intervalo de IPs: introduza o intervalo de IPs internos que podem ser atribuídos à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 de 192.0.2.0 a 192.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 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.

  5. 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 do 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 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=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:

  • 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 especificar latest 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 de 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 com 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 Google Cloud consola, tem de armazenar manualmente os seus tokens de acesso pessoais e o segredo 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"
}

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 segredo do webhook armazenado no Secret Manager.

  • Opcional: PEERED_NETWORK é a rede de VPC com a qual estabelecer uma relação de interligação para 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 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 no intervalo alocado de uma rede com 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" https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/bitbucketServerConfigs/?bitbucketServerConfigId=CONFIG_NAME -d @config.json

Onde:

  • PROJECT_ID é o seu Google Cloud ID do projeto.
  • REGION é a região associada à configuração do Bitbucket Server.
  • CONFIG_NAME é o nome da 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 Google Cloud projeto.
  • PROJECT_ID é o ID do seu Google Cloud projeto.
  • 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?