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

Prima di connettere l'host Bitbucket Server, devi ottenere una chiave API per autenticare e accettare gli eventi in arrivo da Bitbucket Server. Inoltre, devi concedere le autorizzazioni IAM nel tuo progetto Google Cloud per creare i token di accesso personale in Bitbucket Server per creare webhook e recuperare i dati del repository.

Ottenere una chiave API

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

Per ottenere una chiave API:

  1. Apri la pagina Credenziali in Google Cloud Console:

    Apri la pagina Credenziali

  2. Fai clic su Crea credenziali.

  3. Fai clic su Chiave API.

    Vedrai una finestra di dialogo con la chiave API creata. Prendi nota della tua chiave API.

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

    Per scoprire come limitare la tua chiave, consulta l'articolo Applicare limitazioni delle chiavi API.

Autorizzazioni IAM obbligatorie

Per connettere l'host Bitbucket Server, concedi il ruolo Cloud Build Editor (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 Cloud Build. Per ulteriori informazioni sui ruoli IAM associati a Cloud Build, consulta Autorizzazioni e ruoli 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 personale sono le autorizzazioni minime richieste. Se necessario, potresti dover configurare ulteriori autorizzazioni in Bitbucket Server. Ad esempio, puoi selezionare Account Bitbucket Server per accedere solo a un sottoinsieme di repository sulla tua istanza di Bitbucket Server e consentire un controllo più granulare sui dati disponibili in Cloud Build.

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

Connessione a un host Bitbucket Server

console

Per connettere l'host Bitbucket Server a Cloud Build tramite Google Cloud Console:

  1. Apri la pagina Gestisci repository in Google Cloud Console:

    Apri la pagina Gestisci repository

  2. Fai clic su Collega host.

    Viene visualizzato il riquadro Collega host.

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

    • URL host: l'URL host della tua istanza di Bitbucket Server. Ad esempio, https://bbs.example-test.com:7990.
    • Chiave API di Google Cloud: la chiave API utilizzata per autenticare le credenziali.
    • [FACOLTATIVO] Certificato CA: il 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, verrà utilizzato un insieme predefinito di certificati.

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

    • Token di accesso in lettura: il token di accesso personale all'account Bitbucket Server con autorizzazioni di lettura.

    • Token di accesso amministrativo: il token di accesso personale dell'account Bitbucket Server con autorizzazioni di amministratore per progetti e repository.

    • [FACOLTATIVO] Progetto di rete: l'ID progetto di rete per la tua rete on-premise.

    • [FACOLTATIVO] Nome della rete: il nome della tua rete on-premise.

  3. Fai clic su Collega host.

    Se l'istanza di Bitbucket Server si trova su una rete in peering, il completamento dell'host potrebbe richiedere diversi minuti.

    Verrà visualizzato il riquadro Connetti repository.

    Dopo aver creato una connessione host, i token di accesso personale e il secret webhook verranno memorizzati 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 Google Cloud Console, dovrai archiviare manualmente i token di accesso personale e il secret di 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 \
    --ssl-ca-file=SSL_CA_FILE

Dove:

  • BITBUCKET_SERVER_CONFIG_NAME è il nome della tua configurazione Bitbucket Server.
  • USERNAME è il tuo nome utente di Bitbucket Server.
  • HOST_URI è l'URI host della tua istanza di Bitbucket Server.
  • ADMIN_ACCESS_TOKEN_SECRET_VERSION è il nome della risorsa del token di accesso amministrativo memorizzato 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 secret. Questo vale per ogni risorsa archiviata in Secret Manager.
  • READ_ACCESS_TOKEN_SECRET_VERSION è il nome della risorsa del token di accesso in lettura memorizzato in Secret Manager.
  • WEBHOOK_SECRET_SECRET_VERSION è il nome della risorsa del tuo secret webhook memorizzato in Secret Manager.
  • API_KEY è la chiave API di Google Cloud.
  • [Facoltativo] PEERED_NETWORK è la rete VPC a cui connettersi per le istanze Bitbucket Server on-premise.
  • 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.

Server

Per connettere l'host Bitbucket Server a Cloud Build tramite l'API, utilizza il seguente modello JSON. A differenza della connessione dell'host che utilizza Google Cloud Console, devi archiviare manualmente i token di accesso personale e il secret di 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,
      "sslCa": SSL_CERTIFICATE
  }

Dove:

  • HOST_URI è l'URI host della tua istanza di Bitbucket Server.
  • USERNAME è il tuo nome utente di Bitbucket Server.
  • API_KEY è la chiave API di Google Cloud.
  • ADMIN_ACCESS_TOKEN_SECRET_VERSION è il nome della risorsa del token di accesso amministrativo memorizzato 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 ulteriori informazioni, consulta Concedere il ruolo di Secret Manager al tuo account di servizio.

  • READ_ACCESS_TOKEN_SECRET_VERSION è il nome della risorsa del token di accesso in lettura memorizzato in Secret Manager.

  • WEBHOOK_SECRET_SECRET_VERSION è il nome della risorsa del tuo secret webhook memorizzato in Secret Manager.

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

  • [Facoltativo] SSL_CERTIFICATE è il certificato SSL utilizzato per le istanze di Bitbucket Server on-premise.

Inserisci il seguente comando curl nel tuo 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/global/bitbucketServerConfigs/?bitbucketServerConfigId=BITBUCKET_SERVER_CONFIG_NAME -d @config.json

Dove:

  • PROJECT_NUMBER è il tuo numero di progetto Cloud.
  • PROJECT_ID è il tuo ID progetto Cloud.
  • BITBUCKET_SERVER_CONFIG_NAME è il nome della tua configurazione Bitbucket Server.

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

Inserisci il seguente comando curl nel tuo 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/global/operations/OPERATION_ID

Dove:

  • PROJECT_NUMBER è il tuo numero di progetto Cloud.
  • PROJECT_ID è il tuo ID progetto Cloud.
  • OPERATION_ID è l'ID dell'operazione di creazione della configurazione di Bitbucket Server.

Potrebbe essere necessario 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 è stata creata, puoi visualizzarla nel campo response.value. Altrimenti, consulta il campo error per un rapporto dettagliato sugli errori.

Passaggi successivi