Questa pagina spiega come connettere un host Bitbucket Server a Cloud Build. La connessione a un host Bitbucket Server integra i repository Bitbucket Server con Cloud Build. In questo modo, puoi configurare i trigger di build per creare repository da Bitbucket Server e creare repository da Bitbucket Server in una rete privata.
Prima di iniziare
-
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 theserviceusage.services.enablepermission. Learn how to grant roles.
- Prepara il codice sorgente in un repository Bitbucket Server.
- Avere un
Dockerfileo un file di configurazione Cloud Build nel repository di origine Bitbucket Server. - Se non hai installato un'istanza Bitbucket Server, consulta la Guida all'installazione di Bitbucket Server per le istruzioni.
Autorizzazioni IAM obbligatorie
Per ottenere le autorizzazioni necessarie per connetterti all'host Bitbucket Server, chiedi all'amministratore di concederti i seguenti ruoli IAM sul tuo account utente:
-
Editor Cloud Build (
roles/cloudbuild.builds.editor) -
Proprietario delle integrazioni (
roles/cloudbuild.integrations.owner)
Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.
Potresti anche riuscire a ottenere le autorizzazioni richieste tramite i ruoli personalizzati o altri ruoli predefiniti.
Se la tua istanza Bitbucket Server è ospitata in una rete privata, consulta Creare repository da Bitbucket Server in una rete privata per scoprire di più sui ruoli IAM aggiuntivi necessari per configurare una connessione host.
Creare token di accesso personali
Prima di creare una connessione host per l'istanza Bitbucket Server, crea token di accesso personale in Bitbucket Server procedendo nel seguente modo:
Accedi alla tua istanza Bitbucket Server.
Segui le istruzioni per creare token di accesso HTTP per il tuo account utente.
Crea un token di accesso con l'ambito amministratore del repository da utilizzare per collegare e scollegare i repository.
Crea un token di accesso con l'ambito lettura del repository per garantire che i repository Cloud Build possano accedere al codice sorgente nei repository.
Salva i valori dei token in modo sicuro. Li utilizzerai per connetterti al repository Bitbucket Server.
Connettersi a un host Bitbucket Server
Console
Per connettere l'host Bitbucket Server a Cloud Build utilizzando la console Google Cloud :
Apri la pagina Repository nella console Google Cloud :
Nella parte superiore della pagina, seleziona la scheda 1ª gen..
Fai clic su Connetti host.
Seleziona Bitbucket Server dal menu a discesa.
Viene visualizzato il riquadro Collega host.
Inserisci le seguenti informazioni per connettere l'istanza Bitbucket Server a Cloud Build:
Regione: seleziona la regione per la connessione.
Name (Nome): inserisci un nome per la connessione.
URL host: l'URL host dell'istanza Bitbucket Server. Ad esempio,
https://bbs.example-test.com:7990.Google Cloud Chiave API: inserisci la chiave API utilizzata per autenticare le tue credenziali.
Certificato CA: il certificato autofirmato. Il certificato non deve superare i 10 KB di dimensione e deve essere in formato PEM (
.pem,.cero.crt). Se lasci questa sezione vuota, Google Cloud utilizza un certificato del set di certificati predefinito.Nome utente: il nome utente del tuo account Bitbucket Server. Questo account deve disporre dell'accesso amministrativo ai repository che vuoi connettere a Cloud Build.
Token di accesso in lettura: inserisci il token di accesso personale del tuo account Bitbucket Server con autorizzazioni di lettura.
Token di accesso amministrativo: inserisci il token di accesso personale dell'account Bitbucket Server con autorizzazioni amministrative per progetti e repository.
In Tipo di rete, seleziona una delle seguenti opzioni:
Internet pubblico: seleziona questa opzione se la tua istanza è accessibile tramite internet pubblico.
Rete privata: seleziona questa opzione se la tua istanza è ospitata su una rete privata.
Progetto: seleziona l' Google Cloud ID progetto.
Rete: seleziona la tua rete dal menu a discesa. Se non hai creato una rete, consulta Crea e gestisci le reti VPC per scoprire come crearne una.
Intervallo IP: inserisci l'intervallo IP interno che può essere assegnato alle VM all'interno dell'intervallo allocato di una rete in peering.
Puoi specificare l'intervallo utilizzando la notazione di routing Classless Inter-Domain Routing (CIDR) nel formato
STARTING_IP/SUBNET_PREFIX_SIZE. Ad esempio,192.0.2.0/24ha una lunghezza del prefisso di 24. I primi 24 bit dell'intervallo IP vengono utilizzati come subnet mask (192.0.2.0), mentre gli indirizzi host possibili vanno da192.0.2.0a192.0.2.255.Il valore della lunghezza del prefisso non deve superare
/29. Se non viene specificato alcun valore per l'intervallo, viene assegnato automaticamente un valore predefinito di/24. Se non viene specificato alcun valore per la lunghezza del prefisso, gli indirizzi IP vengono assegnati automaticamente all'interno della rete VPC con peering. Se non viene specificato alcun valore per l'indirizzo IP, all'indirizzo IP viene assegnato automaticamente un intervallo all'interno della rete VPC con peering.
Fai clic su Connetti host.
Se l'istanza di Bitbucket Server si trova su una rete in peering, la connessione dell'host potrebbe richiedere diversi minuti.
Si aprirà il riquadro Connetti repository.
Dopo aver creato una connessione host, i tuoi token di accesso personale e il secret webhook verranno archiviati in modo sicuro in Secret Manager. Puoi visualizzare e gestire i tuoi secret nella pagina Secret Manager.
gcloud
Per connettere l'host Bitbucket Server a Cloud Build
utilizzando i comandi gcloud, devi eseguire il comando
gcloud alpha builds enterprise-config bitbucketserver create
nel terminale. A differenza della connessione dell'host tramite la
consoleGoogle Cloud , dovrai archiviare manualmente i token di accesso
personali e il segreto del webhook in Secret Manager prima di eseguire il seguente 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
Dove:
- CONFIG_NAME è il nome della tua configurazione di Bitbucket Server.
- USERNAME è il tuo nome utente Bitbucket Server.
- HOST_URI è l'URI host della tua istanza Bitbucket Server.
- ADMIN_ACCESS_TOKEN_SECRET_VERSION è il nome della risorsa del token di accesso amministrativo archiviato in Secret Manager. Il
formato previsto per i secret archiviati in Secret Manager
è
projects/${PROJECT_ID}/secrets/${SECRET_NAME}/versions/${VERSION_NUMBER}. Puoi specificarelatestcome versione per utilizzare l'ultima versione del tuo segreto. Ciò vale per ogni risorsa archiviata in Secret Manager.
- READ_ACCESS_TOKEN_SECRET_VERSION è il nome della risorsa del tuo token di accesso in lettura archiviato in Secret Manager.
- WEBHOOK_SECRET_SECRET_VERSION è il nome della risorsa del tuo del tuo secret webhook archiviato in Secret Manager.
- API_KEY è la chiave API. Google Cloud
(Facoltativo) PEERED_NETWORK è la rete VPC a cui connettersi per le tue istanze Bitbucket Server on-premise. Per scoprire di più, consulta l'articolo Creare repository da Bitbucket Server in una rete privata.
(Facoltativo) PEERED_NETWORK_IP_RANGE è l'intervallo IP interno a cui possono essere assegnate le VM all'interno dell'intervallo allocato di una rete in peering.
SSL_CA_FILE è il percorso di un file locale che contiene il certificato SSL da utilizzare per le richieste a Bitbucket Server. Il certificato deve essere in formato PEM.
API
Per connettere l'host Bitbucket Server a Cloud Build utilizzando l'API, utilizza il seguente modello JSON. A differenza della connessione dell'host tramite la console Google Cloud , devi archiviare manualmente i token di accesso personali e il secret webhook in Secret Manager prima di chiamare l'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"
}
Dove:
- HOST_URI è l'URI host della tua istanza Bitbucket Server.
- USERNAME è il tuo nome utente Bitbucket Server.
- API_KEY è la chiave API. Google Cloud
ADMIN_ACCESS_TOKEN_SECRET_VERSION è il nome della risorsa del token di accesso amministrativo archiviato in Secret Manager. Potresti dover concedere il ruolo Funzione di accesso ai secret di Secret Manager al tuo agente di servizio Cloud Build,
service-${PROJECT_NUMBER}@gcp-sa-cloudbuild.iam.gserviceaccount.com. Per scoprire di più, vedi Concessione del ruolo Secret Manager al service account.READ_ACCESS_TOKEN_SECRET_VERSION è il nome della risorsa del token di accesso in lettura archiviato in Secret Manager.
WEBHOOK_SECRET_SECRET_VERSION è il nome della risorsa del secret del webhook archiviato in Secret Manager.
(Facoltativo) PEERED_NETWORK è la rete VPC a cui eseguire il peering per le tue istanze Bitbucket Server on-premise.
Puoi specificare l'intervallo utilizzando la notazione di routing Classless Inter-Domain Routing (CIDR) nel formato
STARTING_IP/SUBNET_PREFIX_SIZE. Ad esempio,192.0.2.0/24ha una lunghezza del prefisso di 24. I primi 24 bit dell'intervallo IP vengono utilizzati come subnet mask (192.0.2.0), mentre gli indirizzi host possibili vanno da192.0.2.0a192.0.2.225.(Facoltativo) PEERED_NETWORK_IP_RANGE è l'intervallo IP interno a cui possono essere assegnate le VM all'interno dell'intervallo allocato di una rete in peering.
(Facoltativo) SSL_CERTIFICATE è il certificato SSL utilizzato per le tue istanze di Bitbucket Server on-premise.
Inserisci questo comando curl nel terminale:
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
Dove:
- PROJECT_ID è il tuo Google Cloud ID progetto.
- REGION è la regione associata alla configurazione di Bitbucket Server.
- CONFIG_NAME è il nome della configurazione di Bitbucket Server.
In caso di esito positivo, il corpo della risposta contiene un'istanza di Operation appena creata.
Inserisci questo comando curl nel terminale:
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
Dove:
- PROJECT_NUMBER è il numero del tuo progetto Google Cloud .
- PROJECT_ID è l'ID progetto Google Cloud .
- REGION è la regione associata alla configurazione di Bitbucket Server.
- OPERATION_ID è l'ID dell'operazione di creazione della configurazione di Bitbucket Server.
Potresti dover continuare a eseguire il comando API GetOperation finché la risposta non contiene done: true, che indica che l'operazione è stata completata. Se la configurazione di Bitbucket Server viene creata correttamente, puoi visualizzarla nel campo response.value. In caso contrario, consulta il campo error per un report dettagliato sull'errore.
Passaggi successivi
- Scopri come connettere un repository Bitbucket Server.
- Scopri come eseguire deployment blu/verde su Compute Engine.