Connettersi a un host Bitbucket Data Center

Questa pagina spiega come connettere un host Bitbucket Data Center a Cloud Build. La connessione a un host Bitbucket Data Center integra i tuoi repository Bitbucket Data Center con Cloud Build. In questo modo, puoi configurare i trigger di build per creare repository da Bitbucket Data Center e creare repository da Bitbucket Data Center 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 the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

Autorizzazioni IAM obbligatorie

Per ottenere le autorizzazioni necessarie per connetterti all'host Bitbucket Data Center, chiedi all'amministratore di concederti i seguenti ruoli IAM sul tuo account utente:

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 Data Center è ospitata in una rete privata, consulta Creare repository da Bitbucket Data Center 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 Data Center, crea token di accesso personale in Bitbucket Data Center procedendo nel seguente modo:

  1. Accedi alla tua istanza di Bitbucket Data Center.

  2. Segui le istruzioni per creare token di accesso HTTP per il tuo account utente.

    1. Crea un token di accesso con l'ambito amministratore del repository da utilizzare per collegare e scollegare i repository.

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

  3. Salva i valori dei token in modo sicuro. Li utilizzerai per connetterti al repository Bitbucket Data Center.

Connettersi a un host Bitbucket Data Center

Console

Per connettere l'host Bitbucket Data Center a Cloud Build utilizzando la console Google Cloud :

  1. Apri la pagina Repository nella console Google Cloud :

    Apri la pagina Repository

  2. Nella parte superiore della pagina, seleziona la scheda 1ª gen..

  3. Fai clic su Connetti host.

  4. Seleziona Bitbucket Data Center dal menu a discesa.

    Viene visualizzato il riquadro Collega host.

    Inserisci le seguenti informazioni per connettere l'istanza Bitbucket Data Center a Cloud Build:

    1. Regione: seleziona la regione per la connessione.

    2. Name (Nome): inserisci un nome per la connessione.

    3. URL host: l'URL host dell'istanza Bitbucket Data Center. Ad esempio, https://bbs.example-test.com:7990.

    4. Google Cloud Chiave API: inserisci la chiave API utilizzata per autenticare le tue credenziali.

    5. Certificato CA: il certificato autofirmato. Il certificato non deve superare i 10 KB di dimensione e deve essere in formato PEM (.pem, .cer o .crt). Se lasci questa sezione vuota, Google Cloud utilizza un certificato del set di certificati predefinito.

    6. Nome utente: il nome utente del tuo account Bitbucket Data Center. Questo account deve disporre dell'accesso amministrativo ai repository che vuoi connettere a Cloud Build.

    7. Token di accesso in lettura: inserisci il token di accesso personale dell'account Bitbucket Data Center con autorizzazioni di lettura.

    8. Token di accesso amministratore: inserisci il token di accesso personale dell'account Bitbucket Data Center con autorizzazioni amministrative per progetti e repository.

    9. In Tipo di rete, seleziona una delle seguenti opzioni:

      1. Internet pubblico: seleziona questa opzione se la tua istanza è accessibile tramite internet pubblico.

      2. Rete privata: seleziona questa opzione se la tua istanza è ospitata su una rete privata.

        1. Progetto: seleziona l' Google Cloud ID progetto.

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

        3. 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/24 ha 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 da 192.0.2.0 a 192.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.

  5. Fai clic su Connetti host.

    Se l'istanza di Bitbucket Data Center si trova su una rete con 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 Data Center a Cloud Build utilizzando i comandi gcloud, devi eseguire il comando gcloud alpha builds enterprise-config bitbucket-data-center 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 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

Dove:

  • CONFIG_NAME è il nome della configurazione di Bitbucket Data Center.
  • USERNAME è il tuo nome utente Bitbucket Data Center.
  • HOST_URI è l'URI host dell'istanza di Bitbucket Data Center.
  • 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 specificare latest come 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 Data Center on-premise. Per scoprire di più, consulta Creare repository da Bitbucket Data Center 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 Data Center. Il certificato deve essere in formato PEM.

API

Per connettere l'host Bitbucket Data Center 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 dell'istanza di Bitbucket Data Center.
  • USERNAME è il tuo nome utente Bitbucket Data Center.
  • 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 Data Center 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/24 ha 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 da 192.0.2.0 a 192.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 istanze on-premise di Bitbucket Data Center.

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 Data Center.
  • CONFIG_NAME è il nome della configurazione di Bitbucket Data Center.

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 Data Center.
  • OPERATION_ID è l'ID dell'operazione di creazione della configurazione di Bitbucket Data Center.

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 Data Center viene creata correttamente, puoi visualizzarla nel campo response.value. In caso contrario, consulta il campo error per un report dettagliato sull'errore.

Ruotare i token di accesso Bitbucket Data Center vecchi o scaduti

Se il token di accesso a Bitbucket Data Center scade, la connessione dell'host Cloud Build viene disconnessa dal repository Bitbucket Data Center. Di conseguenza, visualizzerai errori nelle seguenti circostanze:

  • Quando provi a collegare una connessione Cloud Build a un repository Bitbucket Data Center, viene visualizzato un messaggio Failed to fetch repositories to link. Check that Cloud Build is still authorized to access data from the selected connection.

  • Nella pagina Trigger, quando fai clic su Esegui, si apre la pagina Esegui trigger e viene visualizzato un messaggio Failed to list branches. You can still enter one manually.

Per ruotare un token precedente o scaduto per la connessione:

  1. Trova i segreti associati alla connessione host:

    1. Esegui questo comando:

      gcloud builds connections describe CONNECTION_PATH --region=REGION
      

      Dove:

      • CONNECTION_PATH è il percorso della connessione host di Bitbucket Data Center in Cloud Build, nel formato projects/PROJECT_ID/locations/REGION/connections/CONNECTION_NAME.
      • REGION è la regione per la tua connessione.
    2. Nell'output del comando, cerca i valori dei campi del token utente. readAuthorizerCredential.userTokenSecretVersion mostra il nome di Secret Manager del token Read e authorizerCredential.userTokenSecretVersion mostra il nome di Secret Manager del token Admin. Questi nomi vengono archiviati come secret in Secret Manager.

  2. Ruota ogni token di accesso in Bitbucket Data Center:

    1. Vai al repository Bitbucket Data Center connesso alla connessione host Cloud Build.

    2. Segui le istruzioni riportate nella documentazione di Bitbucket per ruotare un token di accesso. Quando ruoti un token, Bitbucket Data Center ne crea uno nuovo con nuove credenziali e invalida la versione precedente. Il token ruotato ha le stesse autorizzazioni e lo stesso ambito del token originale.

    3. Copia l'ID del token ruotato.

  3. Crea una nuova versione del secret per ogni token:

    1. Apri la pagina Secret Manager nella console Google Cloud :

      Apri la pagina Secret Manager

    2. Per ogni token che hai ruotato, trova il nome del secret che hai identificato nel passaggio 1 e fai clic su Azioni, quindi fai clic su Aggiungi nuova versione.

    3. Nella finestra Aggiungi nuova versione, inserisci l'ID del token ruotato e poi fai clic su Aggiungi nuova versione.

Per saperne di più, consulta Token di accesso e Migliorare la sicurezza in Bitbucket: introduzione della scadenza per i token di accesso nella documentazione di Bitbucket Data Center.

Passaggi successivi