Connettersi a un host Bitbucket Server

Questa pagina spiega come connettersi a un host Bitbucket Server a Cloud Build.

Prima di iniziare

  • Abilita le API Cloud Build, Secret Manager, and Compute Engine.

    Abilita le API

Configurazione in corso…

Prima di connettere l'host Bitbucket Server, devi ottenere una chiave API per l'autenticazione e l'accettazione degli eventi in entrata da Bitbucket Server. Inoltre, devi concedere le autorizzazioni IAM nel progetto Google Cloud per creare token di accesso personali in Bitbucket Server al fine di creare webhook e recuperare i dati dei repository.

Ottenere una chiave API

Per connettere l'host e autenticare gli eventi webhook in entrata, devi avere una chiave API.

Per ottenere una chiave API:

  1. Apri la pagina Credenziali nella console Google Cloud:

    Apri la pagina Credenziali

  2. Fai clic su Crea credenziali.

  3. Fai clic su Chiave API.

    Verrà visualizzata una finestra di dialogo con la chiave API creata. Prendi nota della chiave API.

  4. Se vuoi limitare la chiave per le applicazioni del prodotto, fai clic su Limita chiave per completare i passaggi aggiuntivi per proteggere la chiave. In caso contrario, fai clic su Chiudi.

    Per scoprire come limitare la chiave, vedi Applicare le limitazioni relative alle chiavi API.

Autorizzazioni IAM richieste

Per connettere l'host Bitbucket Server, concedi il ruolo Editor Cloud Build (roles/cloudbuild.builds.editor) e il ruolo Proprietario integrazioni Cloud Build (cloudbuild.integrations.owner) al tuo account utente.

Per aggiungere i ruoli richiesti al tuo account utente, consulta Configurazione dell'accesso alle risorse di Cloud Build. Per scoprire di più sui ruoli IAM associati a Cloud Build, consulta Ruoli e autorizzazioni IAM.

Creazione di token di accesso personali

Devi creare due token di accesso personali in Bitbucket Server per eseguire le seguenti attività:

Questi token di accesso personali rappresentano le autorizzazioni minime richieste. Potresti dover configurare autorizzazioni aggiuntive in Bitbucket Server, se necessario. Ad esempio, puoi selezionare un account Bitbucket Server per accedere solo a un sottoinsieme dei repository nella tua istanza Bitbucket Server, in modo da avere un controllo più granulare su ciò che è disponibile in Cloud Build.

Dopo aver creato i token di accesso personali, salva i relativi valori in modo sicuro per connetterti al repository di Bitbucket Server.

Connessione a un host Bitbucket Server

Console

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

  1. Apri la pagina Repositories nella console Google Cloud:

    Apri la pagina Repository

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

  3. Fai clic su Connect Host (Connetti host).

  4. Seleziona Bitbucket Server dal menu a discesa.

    Verrà visualizzato il riquadro Connetti host.

    Inserisci le informazioni seguenti per connettere la tua istanza Bitbucket Server a Cloud Build:

    • Regione: seleziona la regione per la connessione.

    • Nome: inserisci un nome per la connessione,

    1. Host url (URL host): l'URL host della tua istanza Bitbucket Server. Ad esempio, https://bbs.example-test.com:7990.

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

    3. Certificato CA: il tuo certificato autofirmato. Il certificato non deve superare i 10 kB e deve essere in formato PEM (.pem, .cer o .crt). Se questa sezione viene lasciata vuota, viene utilizzato un set predefinito di certificati.

    4. Nome utente. Il nome utente del tuo account Bitbucket Server. Questo account deve avere accesso amministrativo ai repository che vuoi connettere a Cloud Build.

    5. Token di accesso in lettura: il token di accesso personale del tuo account Bitbucket Server con autorizzazioni di lettura.

    6. Token di accesso amministratore: il token di accesso personale del tuo account Bitbucket Server con autorizzazioni di amministratore su progetti e repository.

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

      1. Internet pubblica: seleziona questa opzione se l'istanza è accessibile tramite la rete internet pubblica.

      2. Rete privata: seleziona questa opzione se l'istanza è ospitata su una rete privata.

        1. Progetto: seleziona il tuo ID progetto Google Cloud.

        2. Rete: seleziona la rete dal menu a discesa. Se non hai creato una rete, consulta Creazione e gestione delle reti VPC per informazioni su come creare una rete.

        3. Intervallo IP: inserisci l'intervallo IP interno che le VM possono essere assegnate all'interno dell'intervallo allocato di una rete in peering.

          Puoi specificare l'intervallo utilizzando la notazione di routing CIDR (Classless Inter-Domain Routing) nel formato STARTING_IP/SUBNET_PREFIX_SIZE. Ad esempio, il prefisso 192.0.2.0/24 è di 24 caratteri. I primi 24 bit dell'intervallo IP vengono utilizzati come subnet mask (192.0.2.0), mentre gli indirizzi host possibili sono compresi nell'intervallo 192.0.2.0-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 in peering. Se non viene specificato alcun valore per l'indirizzo IP, all'indirizzo IP viene assegnato automaticamente un intervallo all'interno della rete VPC in peering.

  5. Fai clic su Connect Host (Connetti host).

    Se la tua istanza Bitbucket Server si trova su una rete in peering, la connessione dell'host potrebbe richiedere diversi minuti.

    Verrà visualizzato il riquadro Connetti repository.

    Dopo aver creato una connessione host, i token di accesso personali e il secret del 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 tuo terminale. A differenza della connessione dell'host tramite la console Google Cloud, dovrai archiviare manualmente i token di accesso personale e il secret del webhook in Secret Manager prima di eseguire il comando seguente:

gcloud alpha builds enterprise-config bitbucketserver create
    --name=BITBUCKET_SERVER_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:

  • BITBUCKET_SERVER_CONFIG_NAME è il nome della 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 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 in modo da utilizzare la versione più recente del secret. Questo si applica a ogni risorsa archiviata in Secret Manager.
  • 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 risorsa del tuo secret webhook archiviato in Secret Manager.
  • API_KEY è la chiave API di Google Cloud.
  • [Facoltativo] PEERED_NETWORK è la rete VPC a cui connetterti per le istanze di Bitbucket Server on-premise. Per scoprire di più, vedi 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 contenente 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 mediante l'API, utilizza il seguente modello JSON. A differenza di quanto accade per la connessione dell'host tramite la console Google Cloud, devi archiviare manualmente i token di accesso personali e il secret del 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 di Google Cloud.
  • ADMIN_ACCESS_TOKEN_SECRET_VERSION è il nome risorsa del token di accesso amministrativo archiviato in Secret Manager. Potrebbe essere necessario concedere il ruolo Secret Manager al tuo account di servizio Cloud Build, service-${PROJECT_NUMBER}@gcp-sa-cloudbuild.iam.gserviceaccount.com. Per saperne di più, vedi Concedere il ruolo di Secret Manager all'account di servizio.

  • 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 risorsa del tuo secret webhook archiviato in Secret Manager.

  • [Facoltativo] PEERED_NETWORK è la rete VPC con cui eseguire il peering per le istanze di Bitbucket Server on-premise.

    Puoi specificare l'intervallo utilizzando la notazione di routing CIDR (Classless Inter-Domain Routing) nel formato STARTING_IP/SUBNET_PREFIX_SIZE. Ad esempio, il prefisso 192.0.2.0/24 ha una lunghezza di 24 caratteri. I primi 24 bit dell'intervallo IP vengono utilizzati come subnet mask (192.0.2.0), mentre gli indirizzi host possibili sono compresi tra 192.0.2.0 e 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 di Bitbucket Server on-premise.

Inserisci il seguente comando curl nel terminale:

  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/REGION/bitbucketServerConfigs/?bitbucketServerConfigId=BITBUCKET_SERVER_CONFIG_NAME -d @config.json

Dove:

  • PROJECT_NUMBER è il numero del tuo progetto Cloud.
  • PROJECT_ID è il tuo ID progetto Cloud.
  • REGION è la regione associata alla configurazione di Bitbucket Server.
  • BITBUCKET_SERVER_CONFIG_NAME è il nome della configurazione di Bitbucket Server.

In caso di esito positivo, il corpo della risposta contiene un'istanza dell'operazione appena creata.

Inserisci il seguente 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 Cloud.
  • PROJECT_ID è il tuo ID progetto 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 fino a quando la risposta contiene done: true, a indicare che l'operazione è stata completata. Se la configurazione di Bitbucket Server è stata creata, la puoi vedere nel campo response.value. Altrimenti, vedi il campo error per un report dettagliato sugli errori.

Passaggi successivi