Se connecter à un hôte Bitbucket Cloud

Cette page explique comment se connecter à Cloud Build à un hôte Bitbucket Cloud.

Avant de commencer

  • Activer les API Cloud Build, Secret Manager, and Compute Engine.

    Activer les API

Autorisations IAM requises

Pour obtenir les autorisations dont vous avez besoin pour vous connecter, demandez à votre administrateur de vous attribuer le rôle IAM d'administrateur de connexion Cloud Build (cloudbuild.connectionAdmin) sur le compte utilisateur. Pour en savoir plus sur l'attribution de rôles, consultez la section Gérer les accès.

Vous pouvez également obtenir les autorisations requises via des rôles personnalisés ou d'autres rôles prédéfinis.

Créer des jetons d'accès Bitbucket Cloud

Créez les deux jetons d'accès suivants dans Bitbucket Cloud:

  • Jeton d'accès administrateur, qui permet de connecter et de dissocier des dépôts.
  • Jeton d'accès en lecture permettant à Cloud Build d'accéder à votre code source.

Pour créer ces jetons, procédez comme suit:

  1. Connectez-vous à Bitbucket Cloud.

  2. Suivez les instructions de Bitbucket Cloud pour créer des jetons d'accès associés à votre dépôt, votre projet ou votre espace de travail.

    Accordez les autorisations suivantes:

    • Jeton d'accès administrateur:

      • Dépôts: Lecture et Administration
      • Demandes d'extraction: Lu
      • Webhooks: lecture et écriture
    • Jeton d'accès en lecture:

      • Dépôts: Lecture
  3. Copiez vos jetons pour les utiliser dans les procédures suivantes.

Se connecter à un hôte Bitbucket Cloud

Console

Pour connecter Cloud Build à votre hôte Cloud Bitbucket, procédez comme suit:

  1. Ouvrez la page Dépôts de la console Google Cloud.

    Ouvrir la page "Dépôts"

    La page Dépôts s'affiche.

  2. Dans le sélecteur de projet, choisissez votre projet Google Cloud.

  3. En haut de la page, sélectionnez l'onglet 2nd gen (2e génération).

  4. Cliquez sur Créer une connexion hôte pour connecter un nouvel hôte à Cloud Build.

  5. Sélectionnez Bitbucket comme fournisseur source.

  6. Dans la section Configure Connection (Configurer la connexion), saisissez les informations suivantes:

    1. Région: sélectionnez une région pour votre connexion.

    2. Name (Nom) : saisissez le nom de votre connexion.

    3. Dans la section Détails de l'hôte, sélectionnez le type d'hôte Bitbucket Cloud.

    4. Espace de travail: saisissez l'ID de l'espace de travail de votre dépôt Bitbucket Cloud.

    5. Access token (Jeton d'accès) : saisissez le jeton d'accès administrateur créé précédemment.

    6. Read access token (Jeton d'accès en lecture) : saisissez le jeton d'accès en lecture créé précédemment.

  7. Cliquez sur Connect (Se connecter).

    La nouvelle connexion s'affiche sur la page Dépôts.

gcloud

  1. Pour stocker vos identifiants, procédez comme suit:

    1. Stockez vos jetons d'accès dans Secret Manager de votre projet Google Cloud en exécutant les commandes suivantes:

      echo -n ADMIN_TOKEN | gcloud secrets create ADMIN_SECRET_NAME --data-file=-
      
      echo -n READ_TOKEN | gcloud secrets create READ_SECRET_NAME --data-file=-
      

      Où :

      • ADMIN_TOKEN est votre jeton d'accès administrateur.
      • ADMIN_SECRET_NAME est le nom que vous souhaitez attribuer au secret de votre jeton d'accès administrateur dans Secret Manager.
      • READ_TOKEN est votre jeton d'accès en lecture.
      • READ_SECRET_NAME est le nom que vous souhaitez attribuer au secret de votre jeton d'accès en lecture dans Secret Manager.
    2. Créez un secret de webhook dans Secret Manager en exécutant la commande suivante, où WEBHOOK_SECRET_NAME est le nom que vous souhaitez attribuer à votre secret de webhook:

      echo -n ${ex.(random-uuid)} | gcloud secrets create WEBHOOK_SECRET_NAME --data-file=-
      
    3. Si vos secrets ne se trouvent pas tous dans le même projet, accordez l'accès au compte de service Cloud Build en exécutant la commande suivante:

      PN=$(gcloud projects describe PROJECT_ID --format="value(projectNumber)")
      CLOUD_BUILD_SERVICE_ACCOUNT="service-${PN}@gcp-sa-cloudbuild.iam.gserviceaccount.com"
      gcloud secrets add-iam-policy-binding ADMIN_SECRET_NAME \
          --member="serviceAccount:${CLOUD_BUILD_SERVICE_ACCOUNT}" \
          --role="roles/secretmanager.secretAccessor"
      
      gcloud secrets add-iam-policy-binding READ_SECRET_NAME \
          --member="serviceAccount:${CLOUD_BUILD_SERVICE_ACCOUNT}" \
          --role="roles/secretmanager.secretAccessor"
      
      gcloud secrets add-iam-policy-binding WEBHOOK_SECRET_NAME \
          --member="serviceAccount:${CLOUD_BUILD_SERVICE_ACCOUNT}" \
          --role="roles/secretmanager.secretAccessor"
      

      Où :

      • PROJECT_ID correspond à votre ID de projet Google Cloud.
      • ADMIN_SECRET_NAME est le nom du secret de votre jeton d'administrateur.
      • READ_SECRET_NAME est le nom du secret de votre jeton de lecture.
      • WEBHOOK_SECRET_NAME est le nom du secret de votre webhook.
  2. Connectez Cloud Build à votre hôte Bitbucket Cloud à l'aide de la commande suivante:

    gcloud builds connections create bitbucket-cloud CONNECTION_NAME \
        --workspace=WORKSPACE_ID \
        --project=PROJECT_ID \
        --region=REGION \
        --authorizer-token-secret-version=projects/PROJECT_ID/secrets/ADMIN_SECRET_NAME/versions/latest \
        --read-authorizer-token-secret-version=projects/PROJECT_ID/secrets/READ_SECRET_NAME/versions/latest \
        --webhook-secret-secret-version=projects/PROJECT_ID/secrets/WEBHOOK_SECRET_NAME/versions/1
    

    Où :

    • CONNECTION_NAME est le nom que vous souhaitez donner à la connexion à votre hôte Bitbucket Cloud.
    • WORKSPACE_ID est l'ID d'espace de travail de votre dépôt Cloud Bitbucket.
    • PROJECT_ID correspond à votre ID de projet Google Cloud.
    • REGION est la région de votre connexion hôte.
    • ADMIN_SECRET_NAME est le nom du secret de votre jeton d'administrateur.
    • READ_SECRET_NAME est le nom du secret de votre jeton d'accès en lecture.
    • WEBHOOK_SECRET_NAME est le nom du secret de votre webhook.

Étapes suivantes