Conectar-se a um host do Bitbucket Cloud

Nesta página, explicamos como se conectar a um host do Bitbucket Cloud ao Cloud Build.

Antes de começar

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

    Ative as APIs

Permissões do IAM obrigatórias

Para receber as permissões necessárias para se conectar, peça ao administrador para conceder a você o papel do IAM de administrador de conexão do Cloud Build (cloudbuild.connectionAdmin) na conta de usuário. Para mais informações sobre como conceder papéis, consulte Gerenciar acesso.

Também é possível conseguir as permissões necessárias por meio de papéis personalizados ou de outros papéis predefinidos.

Criar tokens de acesso do Bitbucket Cloud

Crie os dois tokens de acesso a seguir no Bitbucket Cloud:

  • Token de acesso de administrador para conectar e desconectar repositórios.
  • Token de acesso de leitura: para permitir que o Cloud Build acesse o código-fonte.

Para criar esses tokens, siga estas etapas:

  1. Faça login no Bitbucket Cloud.

  2. Siga as instruções do Bitbucket Cloud para criar tokens de acesso vinculados ao repositório, ao projeto ou ao espaço de trabalho.

    Conceda as seguintes permissões:

    • Token de acesso de administrador:

      • Repositórios: leitura e administrador
      • Solicitações de envio: Read
      • Webhooks: Read e Write
    • Token de acesso de leitura:

      • Repositórios: leitura
  3. Copie seus tokens para usar nos procedimentos a seguir.

Conectar-se a um host do Bitbucket Cloud

Console

Siga estas etapas para conectar o Cloud Build ao seu host do Bitbucket Cloud:

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

    Abrir a página Repositórios

    Você verá a página Repositórios.

  2. No seletor de projetos, escolha seu projeto do Google Cloud.

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

  4. Clique em Criar conexão de host para conectar um novo host ao Cloud Build.

  5. Selecione Bitbucket como o provedor de origem.

  6. Na seção Configurar conexão, insira as seguintes informações:

    1. Região: selecione uma região para sua conexão.

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

    3. Na seção Detalhes do host, selecione Bitbucket Cloud como o tipo de host.

    4. Espaço de trabalho: digite o ID do espaço de trabalho do repositório do Bitbucket Cloud.

    5. Token de acesso: digite seu token de acesso de administrador criado anteriormente.

    6. Token de acesso de leitura: digite seu token de acesso de leitura criado anteriormente.

  7. Clique em Conectar.

    A nova conexão é exibida na página Repositórios.

gcloud

  1. Siga estas etapas para armazenar suas credenciais:

    1. Execute os comandos a seguir para armazenar os tokens de acesso no Secret Manager do seu projeto do Google Cloud:

      echo -n ADMIN_TOKEN | gcloud secrets create ADMIN_SECRET_NAME --data-file=-
      
      echo -n READ_TOKEN | gcloud secrets create READ_SECRET_NAME --data-file=-
      

      Em que:

      • ADMIN_TOKEN é seu token de acesso de administrador.
      • ADMIN_SECRET_NAME é o nome que você quer dar ao secret do token de acesso de administrador no Secret Manager.
      • READ_TOKEN é seu token de acesso de leitura.
      • READ_SECRET_NAME é o nome que você quer dar ao secret do token de acesso de leitura no Secret Manager.
    2. Crie um secret do webhook no Secret Manager executando o comando a seguir, em que WEBHOOK_SECRET_NAME é o nome que você quer atribuir ao secret do webhook:

      echo -n ${ex.(random-uuid)} | gcloud secrets create WEBHOOK_SECRET_NAME --data-file=-
      
    3. Se os secrets não estiverem todos no mesmo projeto, conceda acesso à conta de serviço do Cloud Build executando o seguinte:

      PN=$(gcloud projects describe PROJECT_ID --format="value(projectNumber)")
      CLOUD_BUILD_SERVICE_ACCOUNT="service-${PN}@gcp-sa-cloudbuild.iam.gserviceaccount.com"
      gcloud secrets add-iam-policy-binding ADMIN_SECRET_NAME \
          --member="serviceAccount:${CLOUD_BUILD_SERVICE_ACCOUNT}" \
          --role="roles/secretmanager.secretAccessor"
      
      gcloud secrets add-iam-policy-binding READ_SECRET_NAME \
          --member="serviceAccount:${CLOUD_BUILD_SERVICE_ACCOUNT}" \
          --role="roles/secretmanager.secretAccessor"
      
      gcloud secrets add-iam-policy-binding WEBHOOK_SECRET_NAME \
          --member="serviceAccount:${CLOUD_BUILD_SERVICE_ACCOUNT}" \
          --role="roles/secretmanager.secretAccessor"
      

      Em que:

      • PROJECT_ID é o ID do projeto no Google Cloud.
      • ADMIN_SECRET_NAME é o nome da chave secreta do token de administrador.
      • READ_SECRET_NAME é o nome do secret do token de leitura.
      • WEBHOOK_SECRET_NAME é o nome do secret do webhook.
  2. Conecte o Cloud Build ao host do Bitbucket Cloud usando o seguinte comando:

    gcloud builds connections create bitbucket-cloud CONNECTION_NAME \
        --workspace=WORKSPACE_ID \
        --project=PROJECT_ID \
        --region=REGION \
        --authorizer-token-secret-version=projects/PROJECT_ID/secrets/ADMIN_SECRET_NAME/versions/latest \
        --read-authorizer-token-secret-version=projects/PROJECT_ID/secrets/READ_SECRET_NAME/versions/latest \
        --webhook-secret-secret-version=projects/PROJECT_ID/secrets/WEBHOOK_SECRET_NAME/versions/1
    

    Em que:

    • CONNECTION_NAME é o nome que você quer dar à conexão com o host do Bitbucket Cloud.
    • WORKSPACE_ID é o ID do espaço de trabalho do seu repositório do Bitbucket Cloud.
    • PROJECT_ID é o ID do projeto no Google Cloud.
    • REGION é a região da conexão do host.
    • ADMIN_SECRET_NAME é o nome do secret do token do administrador.
    • READ_SECRET_NAME é o nome do secret do token de acesso de leitura.
    • WEBHOOK_SECRET_NAME é o nome do secret do webhook.

A seguir