O Cloud Build permite criar gatilhos para criar a partir de repositórios hospedados no Bitbucket Data Center, permitindo que você execute builds em resposta a eventos, como solicitações de envio ou envio de confirmação, associadas ao seu repositório do Data Center do Bitbucket.
Nesta página, você verá como ativar a funcionalidade de gatilho em uma instância do Data Center e como criar repositórios a partir dessa ferramenta se a instância estiver hospedada em um ambiente local.
Antes de começar
-
Ative as APIs Cloud Build, Secret Manager, and Compute Engine.
- Se você não tiver instalado uma instância do Data Center do Bitbucket, consulte as instruções em Instalar o Data Center do Bitbucket.
- [Opcional] Se a instância do Bitbucket Data Center estiver hospedada em um ambiente local, ative a API Service Networking para fazer peering de uma rede de nuvem privada virtual.
Configuração
Antes de criar um gatilho do Data Center do Bitbucket, você precisa de uma chave de API para autenticar e aceitar eventos recebidos do Bitbucket Data Center. Além disso, você precisa conceder permissões do IAM no projeto do Google Cloud para criar gatilhos e tokens de acesso pessoais no Bitbucket Data Center para criar webhooks e recuperar dados do repositório.
Nesta seção, abordamos as etapas que você precisa concluir antes de criar um acionador do Bitbucket Data Center.
Como receber uma chave de API
Para conectar seus repositórios de host e autenticar eventos de webhook recebidos, você precisa de uma chave de API.
Para gerar uma chave de API:
Abra a página Credenciais no Console do Google Cloud:
Clique em Criar credenciais.
Clique em Chave de API.
Você vai ver uma caixa de diálogo com a chave de API criada. Anote a sua chave de API.
Se quiser restringir a chave para aplicativos de produto, clique em Restringir chave para concluir as etapas adicionais para protegê-la. Caso contrário, clique em Fechar.
Para saber como restringir sua chave, consulte Como aplicar restrições de chave de API.
Como criar tokens de acesso pessoal
É necessário criar dois tokens de acesso pessoal no Bitbucket Data Center para executar 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, crie um token que tenha acesso de leitura e gravação.
Esses tokens de acesso pessoal são as permissões mínimas necessárias. É possível configurar permissões adicionais no Bitbucket Data Center conforme necessário. Por exemplo, é possível selecionar a conta do Data Center do Bitbucket para ter acesso apenas a um subconjunto dos repositórios na sua instância do Bitbucket Data Center. Isso permite um controle mais refinado sobre o que está disponível no Cloud Build.
Depois de criar seus tokens de acesso pessoal, salve os valores com segurança. Você usará esses tokens para se conectar ao repositório do Data Center do Bitbucket mais tarde.
Invocação de acionadores do Data Center do Bitbucket
Veja nesta seção como conectar seus repositórios do Data Center do Bitbucket ao Cloud Build e criar um gatilho para invocar automaticamente os builds nos seus repositórios conectados. Se quiser usar gatilhos do Bitbucket Data Center em um ambiente no local, consulte Como criar repositórios em um ambiente local no Bitbucket Data Center para ver mais instruções.
Como se conectar a um host do Data Center do Bitbucket
Console
Para conectar seu host do Data Center do Bitbucket ao Cloud Build usando o Console do Google Cloud:
Abra a página Gerenciar repositórios no Console do Google Cloud:
Clique em Conectar host.
Você verá o painel Conectar host.
Digite as seguintes informações para conectar sua instância do Data Center do Bitbucket ao Cloud Build:
- URL do host: o URL do host da sua instância do Data Center do Bitbucket. Por exemplo,
https://bbs.example-test.com:7990
. - Chave de API do Google Cloud: chave de API usada para autenticar suas credenciais
- CA Certificate: seu certificado autoassinado. O certificado não pode exceder 10 KB e precisa estar no formato PEM (
.pem
,.cer
ou.crt
). Se esta seção for deixada em branco, um conjunto padrão de certificados será usado. - Nome de usuário: o nome de usuário da sua conta do Data Center do Bitbucket. Essa conta precisa ter acesso de administrador aos repositórios que você quer conectar ao Cloud Build.
- Token de acesso de leitura: é o token de acesso pessoal da conta do Bitbucket Data Center com permissões de leitura.
- Token de acesso de administrador: é o token de acesso pessoal da conta do Data Center do Bitbucket com permissões de administrador em projetos e repositórios.
- [OPCIONAL] Projeto de rede: é o ID do projeto de rede da rede local.
- [OPCIONAL] Nome da rede: o nome da sua rede local.
- URL do host: o URL do host da sua instância do Data Center do Bitbucket. Por exemplo,
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.
Você será redirecionado para o painel Connect Repository.
Depois de criar uma conexão de host, seus tokens de acesso pessoal e a chave secreta do webhook serão armazenados com segurança no Secret Manager. É possível ver e gerenciar seus secrets na página Gerenciador de secrets.
gcloud
Para conectar seu host do Data Center do Bitbucket ao Cloud Build
usando comandos gcloud
, é necessário executar o
comando gcloud alpha builds enterprise-config bitbucketserver create
no seu terminal. Diferentemente de conectar seu host usando o
Console do Google Cloud, você precisará armazenar manualmente seus tokens
de acesso pessoal e a chave secreta do webhook no Gerenciador de secrets 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 \
--ssl-ca-file=SSL_CA_FILE
Em que:
- BITBUCKET_DATA_CENTER_CONFIG_NAME é o nome da configuração do Bitbucket do Bitbucket.
- USERNAME é seu nome de usuário do Bitbucket Data Center;
- HOST_URI é o URI do host da instância do Bitbucket Data Cemter.
- 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}
. Especifiquelatest
como a 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 que você quer se conectar quando estiver no local das instâncias do Data Center do Bitbucket.
- SSL_CA_FILE é o caminho para um arquivo local que contém seu certificado SSL a ser usado para solicitações ao Bitbucket Data Center. O certificado deve estar no formato PEM.
API
Para conectar seu host do Data Center do Bitbucket ao Cloud Build usando a API, use o seguinte modelo JSON. Antes de conectar seu host usando o Console do Google Cloud, você precisa armazenar manualmente seus tokens de acesso pessoal e a chave secreta do webhook no Gerenciador de secrets 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,
"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 Bitbucket Data Center;
- 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 Secret Manager à sua conta de serviço do Cloud Build,
service-${PROJECT_NUMBER}@gcp-sa-cloudbuild.iam.gserviceaccount.com
. Para saber mais, consulte Como atribuir o papel 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 a que você quer se conectar quando estiver no local das instâncias do Data Center do Bitbucket.
[Opcional] SSL_CERTIFICATE é o certificado SSL usado para suas instâncias do Bitbucket Data Center 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/global/bitbucketServerConfigs/?bitbucketServerConfigId=BITBUCKET_DATA_CENTER_CONFIG_NAME -d @config.json
Em que:
- PROJECT_ID é seu ID do projeto do Cloud.
- 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/global/operations/OPERATION_ID
Em que:
- PROJECT_NUMBER é o número do projeto do Cloud.
- PROJECT_ID é seu ID do projeto do Cloud.
- OPERATION_ID é o ID da operação de configuração do seu data center do Bitbucket.
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 data center do Bitbucket for criada com sucesso, 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.
Como se conectar a um repositório do Data Center do Bitbucket
Console
Para conectar um repositório do Data Center do Bitbucket ao Cloud Build usando o Console do Google Cloud:
Abra a página Gatilhos no Console do Google Cloud.
Clique em Conectar repositório.
Você verá o painel Conectar repositório.
Em Selecionar origem, selecione Data center do Bitbucket.
Em Selecionar repositório, selecione os repositórios do Data Center do Bitbucket que você quer conectar ao Cloud Build.
Clique em Conectar para conectar seus repositórios.
Quando um repositório é conectado, o Cloud Build configura um webhook no repositório na sua instância do Data Center do Bitbucket. Em seguida, o repositório envia webhooks para invocar os acionadores correspondentes do Bitbucket Data Center quando você faz alterações no repositório. Um repositório também pode ser conectado várias vezes com várias conexões de host. Para saber como gerenciar webhooks, consulte Gerenciar webhooks.
Você precisa do ID do webhook para localizá-lo. O ID do webhook para cada repositório conectado pode ser encontrado no BitbucketServerConfig. Digite o seguinte comando para recuperar o ID do webhook, em que CONFIG_NAME é o nome da configuração do Bitbucket Data Center:
gcloud alpha builds enterprise-config bitbucketserver describe --config=CONFIG_NAME
Clique em Concluído. Também é possível clicar em Criar um acionador.
gcloud
No momento, a compatibilidade com gcloud
não está disponível para se conectar a um
repositório do Data Center do Bitbucket.
API
Para conectar seu repositório do Data Center do Bitbucket ao Cloud Build usando a API, use o seguinte modelo JSON:
{
"parent": "projects/PROJECT_NUMBER/locations/global/bitbucketServerConfigs/BITBUCKET_DATA_CENTER_CONFIG_NAME",
"requests": {
"parent": "projects/PROJECT_NUMBER/locations/global/bitbucketServerConfigs/BITBUCKET_DATA_CENTER_CONFIG_NAME",
"bitbucketServerConnectedRepository": {
"parent": "projects/PROJECT_NUMBER/locations/global/bitbucketServerConfigs/BITBUCKET_DATA_CENTER_CONFIG_NAME",
"repo": {
"projectKey":PROJECT_KEY,
"repoSlug": REPO_SLUG,
}
}
}
}
Em que:
- PROJECT_NUMBER é o número do projeto do Cloud.
- BITBUCKET_DATA_CENTER_CONFIG_NAME é o nome da configuração do Bitbucket do Bitbucket.
- PROJECT_KEY é a chave do seu projeto do Data Center do Bitbucket.
Se você quiser conectar um repositório pessoal, a chave do projeto
precisa conter o símbolo do til (
~
) antes do nome de usuário. Por exemplo,~${USERNAME}
. O URL completo de um repositório de host pode ser semelhante ahttps://${HOST_URI}/projects/~${USER_NAME}/repos/${REPO_SLUG}
. - REPO_SLUG é o slug do repositório do Data Center do Bitbucket.
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" -H "x-goog-user-project: PROJECT_NUMBER" https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/locations/global/bitbucketServerConfigs/BITBUCKET_DATA_CENTER_CONFIG_NAME/connectedRepositories:batchCreate -d @requests.json
Em que:
- PROJECT_ID é seu ID do projeto do Cloud.
- 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/global/operations/OPERATION_ID
Em que:
- PROJECT_NUMBER é o número do projeto do Cloud.
- PROJECT_ID é seu ID do projeto do Cloud.
- OPERATION_ID é o ID da operação de configuração do seu data center do Bitbucket.
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 o repositório do Data Center do Bitbucket estiver conectado, você poderá ver o repositório conectado no campo response.bitbucketServerConnectedRepositories
. Caso contrário, consulte o campo error
para ver um relatório de erros detalhado.
Como criar um gatilho do Data Center do Bitbucket
Console
Para criar um gatilho do Data Center do Bitbucket usando o Console do Google Cloud:
Acesse a página Gatilhos:
Selecione seu projeto na parte superior da página e clique em Abrir.
Clique em Criar gatilho.
Preencha as configurações de gatilho a seguir:
Nome: nome do acionador.
Região: selecione a região do gatilho.
Descrição (opcional): uma descrição do gatilho.
Evento: selecione o evento de repositório para invocar seu gatilho.
Enviar para uma ramificação: defina o gatilho para iniciar um build em confirmações de uma ramificação específica.
Enviar nova tag por push: configure o gatilho para iniciar um build em confirmações que contenham uma tag específica.
Solicitação de envio (o Cloud Source Repositories não é compatível): defina o gatilho para iniciar uma versão em confirmações para uma solicitação de envio.
Origem: selecione o repositório a ser criado quando o gatilho do Data Center do Bitbucket for executado.
Revisão: selecione a ramificação ou a tag que será criada quando o gatilho do Data Center do Bitbucket for executado.
Ramificação: defina um gatilho para criar a ramificação.
Tag: defina um acionador para criar essa tag.
Configuração: selecione o arquivo de configuração do build localizado no seu repositório ou configure o build in-line no gatilho.
Tipo: selecione o tipo de configuração a ser usado para seu build.
- Arquivo de configuração do Cloud Build (yaml ou json): use um arquivo de configuração do build na sua configuração.
- Dockerfile: use um
Dockerfile
para sua configuração.
Local: especifique o local de configuração.
Repositório: se o arquivo de configuração estiver localizado no repositório, forneça o local do arquivo de configuração de build ou o diretório
Dockerfile
e um nome para a imagem resultante. Se sua configuração for umDockerfile
, você poderá fornecer um tempo limite para a criação. Depois de fornecer oDockerfile
e o nome da imagem, você verá uma visualização do comandodocker build
que sua o build executará.Inline: se você selecionou o arquivo de configuração do Cloud Build (yaml ou json) como opção de configuração, pode especificar a configuração do build inline. Clique em Abrir editor para gravar seu arquivo de configuração do build no Console do Google Cloud usando a sintaxe YAML ou JSON. Clique em Concluído para salvar a configuração do build.
Clique em Criar para criar o acionador do Bitbucket Data Center.
gcloud
Para criar um gatilho do Bitbucket Data Center usando comandos gcloud
, será necessário executar o seguinte comando gcloud alpha builds triggers create bitbucketserver
no seu terminal:
gcloud alpha builds triggers create bitbucketserver
--name=TRIGGER_NAME \
--project-key=PROJECT_KEY \
--repo-slug=REPO_SLUG \
--bitbucket-server-config-resource=projects/PROJECT_NUMBER/locations/global/bitbucketServerConfigs/ID \
--branch-pattern=BRANCH_NAME \ # --tag-pattern=TAG_NAME
--build-config=BUILD_CONFIG
Em que:
- TRIGGER_NAME é o nome do gatilho.
- PROJECT_KEY é a chave do seu projeto do Data Center do Bitbucket.
- REPO_SLUG é o slug do repositório do Data Center do Bitbucket.
- PROJECT_NUMBER é o número do projeto do Cloud.
- ID é o ID do BitbucketServerConfig.
- BRANCH_NAME é a regex da ramificação, se você quiser definir o gatilho para criar determinadas ramificações.
- TAG_NAME é a regex da tag se você quiser definir o gatilho para criar determinadas tags;
- BUILD_CONFIG é o caminho para seu arquivo de configuração do build.
API
Para criar um acionador do Bitbucket Data Center com a API, use o seguinte modelo JSON.
{
"filename": "cloudbuild.yaml",
"name": "curl-trigger",
"description": "curl trigger",
"bitbucket_server_trigger_config": {
"repo_slug": REPO_SLUG
"project_key": PROJECT_KEY
"push": {
"branch": BRANCH_NAME # "tag": TAG_NAME
}
"bitbucket_server_config_resource": "projects/PROJECT_NUMBER/locations/global/bitbucketServerConfigs/ID"
}
}
Em que:
- PROJECT_KEY é a chave do seu projeto do Data Center do Bitbucket.
- REPO_SLUG é o slug do repositório do Data Center do Bitbucket.
- PROJECT_NUMBER é o número do projeto do Cloud.
- ID é o ID do BitbucketServerConfig.
- BRANCH_NAME é a regex da ramificação, se você quiser definir o gatilho para criar determinadas ramificações.
- TAG_NAME é a regex da tag se você quiser definir o gatilho para criar determinadas tags;
Digite o seguinte comando curl
no seu terminal, em que PROJECT_ID é o ID do projeto do Cloud:
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/triggers -d @trigger.json
Como criar repositórios em um ambiente local com o Bitbucket Data Center
Se a instância do Bitbucket Data Center estiver hospedada em um ambiente local e não for acessível por uma conexão de Internet pública, será necessário criar uma conexão particular entre a rede VPC e a rede de produtor de serviços. Você também precisa de um Pool privado para criar em um ambiente local.
Para criar um gatilho do Bitbucket Data Center e criá-lo no ambiente local:
Crie uma conexão particular entre sua rede VPC e a rede do produtor de serviços seguindo estas etapas:
- Ative a API Service Networking.
Aloque um intervalo de IP nomeado na rede VPC. Para usar a rede VPC com o Cloud Build, o comprimento do prefixo precisa ser
/23
ou inferior, como/22
,/21
etc.Estabeleça uma conexão de rede VPC particular entre sua rede VPC e o Google Cloud. Para saber mais, consulte Como criar uma conexão particular.
Se você tiver o DNS configurado para sua instância do Data Center do Bitbucket, precisará fazer o peering manual da zona de DNS com nosso provedor de serviços. Para saber mais, consulte Como compartilhar zonas DNS particulares com produtores de serviço.
[OPTIONAL] Se você não quiser criar uma conexão particular do projeto do Cloud, configure uma VPC compartilhada e faça com que seu projeto do Cloud use essa rede se o projeto fizer parte de uma organização. Você ainda precisa que a VPC compartilhada faça peering para a API Service Networking.
Use pools particulares para executar seus builds. Se você ainda não criou um pool privado, consulte Criar um novo pool privado.
Crie um gatilho do Bitbucket Data Center para criar repositórios hospedados em uma instância do Bitbucket Data Center.
Agora, seu gatilho do Bitbucket Data Center invocará automaticamente as versões na sua instância do Bitbucket Data Center com base na sua configuração. Para saber como executar builds usando um pool de workers particulares, consulte Como executar builds em um pool privado.
A seguir
- Saiba como criar e gerenciar gatilhos de compilação.
- Saiba como criar repositórios do Bitbucket Server.
- Saiba como criar repositórios do Bitbucket Cloud.
- Saiba como criar repositórios do GitHub Enterprise.
- Saiba como ver os resultados de compilação para os gatilhos de compilação.