Cette page explique comment connecter un hôte Bitbucket Data Center à Cloud Build. La connexion à un hôte Bitbucket Data Center permet d'intégrer vos dépôts Bitbucket Data Center à Cloud Build. Vous pouvez ainsi configurer des déclencheurs de compilation pour créer des dépôts à partir de Bitbucket Data Center et créer des dépôts à partir de Bitbucket Data Center dans un réseau privé.
Avant de commencer
-
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.
- Préparez votre code source dans un dépôt Bitbucket Data Center.
- Vous devez disposer d'un fichier de configuration
Dockerfileou Cloud Build dans votre dépôt source Bitbucket Data Center. - Si vous n'avez pas installé d'instance Bitbucket Data Center, consultez le guide d'installation de Bitbucket Data Center pour obtenir des instructions.
Autorisations IAM requises
Pour obtenir les autorisations nécessaires pour vous connecter à votre hôte Bitbucket Data Center, demandez à votre administrateur de vous accorder les rôles IAM suivants sur votre compte utilisateur :
-
Éditeur Cloud Build (
roles/cloudbuild.builds.editor) -
Propriétaire des intégrations (
roles/cloudbuild.integrations.owner)
Pour en savoir plus sur l'attribution de rôles, consultez Gérer l'accès aux projets, aux dossiers et aux organisations.
Vous pouvez également obtenir les autorisations requises avec des rôles personnalisés ou d'autres rôles prédéfinis.
Si votre instance Bitbucket Data Center est hébergée dans un réseau privé, consultez Créer des dépôts à partir de Bitbucket Data Center dans un réseau privé pour en savoir plus sur les rôles IAM supplémentaires requis pour configurer une connexion hôte.
Créer des jetons d'accès personnels
Avant de créer une connexion hôte pour votre instance Bitbucket Data Center, créez des jetons d'accès personnels dans Bitbucket Data Center en procédant comme suit :
Connectez-vous à votre instance Bitbucket Data Center.
Suivez les instructions pour créer des jetons d'accès HTTP pour votre compte utilisateur.
Créez un jeton d'accès avec le champ d'application repository admin (administrateur de dépôt) pour l'utiliser afin de connecter et de déconnecter des dépôts.
Créez un jeton d'accès avec le champ d'application repository read pour vous assurer que les dépôts Cloud Build peuvent accéder au code source des dépôts.
Enregistrez vos valeurs de jeton de manière sécurisée. Vous les utiliserez pour vous connecter à votre dépôt Bitbucket Data Center.
Se connecter à un hôte Bitbucket Data Center
Console
Pour connecter votre hôte Bitbucket Data Center à Cloud Build à l'aide de la console Google Cloud :
Ouvrez la page Dépôts dans la console Google Cloud :
En haut de la page, sélectionnez l'onglet 1re génération.
Cliquez sur Connecter un hôte.
Sélectionnez Bitbucket Data Center dans le menu déroulant.
Le panneau Connecter un hôte s'affiche.
Saisissez les informations suivantes pour connecter votre instance Bitbucket Data Center à Cloud Build :
Région : sélectionnez la région de votre connexion.
Nom : saisissez un nom pour votre connexion.
URL de l'hôte : URL de l'hôte de votre instance Bitbucket Data Center. Exemple :
https://bbs.example-test.com:7990.Clé APIGoogle Cloud : saisissez la clé API utilisée pour authentifier vos identifiants.
Certificat CA : votre certificat autosigné. Votre certificat ne doit pas dépasser 10 Ko et doit être au format PEM (
.pem,.cerou.crt). Si vous laissez cette section vide, Google Cloud utilise un certificat de l'ensemble de certificats par défaut.Nom d'utilisateur : nom d'utilisateur de votre compte Bitbucket Data Center. Ce compte doit disposer d'un accès administrateur aux dépôts que vous souhaitez connecter à Cloud Build.
Jeton d'accès en lecture : saisissez le jeton d'accès personnel de votre compte Bitbucket Data Center avec les autorisations de lecture.
Jeton d'accès administrateur : saisissez le jeton d'accès personnel de votre compte Bitbucket Data Center avec les autorisations d'administrateur sur les projets et les dépôts.
Sous Type de réseau, sélectionnez l'une des options suivantes :
Internet public : sélectionnez cette option si votre instance est accessible via l'Internet public.
Réseau privé : sélectionnez cette option si votre instance est hébergée sur un réseau privé.
Projet : sélectionnez l'ID de votre projet Google Cloud .
Réseau : sélectionnez votre réseau dans le menu déroulant. Si vous n'avez pas encore créé de réseau, consultez Créer et gérer des réseaux VPC pour découvrir comment en créer un.
Plage d'adresses IP : saisissez la plage d'adresses IP internes qui peuvent être attribuées aux VM dans la plage allouée d'un réseau appairé.
Vous pouvez spécifier la plage à l'aide de la notation CIDR (Classless Inter-Domain Routing) au format
STARTING_IP/SUBNET_PREFIX_SIZE. Par exemple,192.0.2.0/24a une longueur de préfixe de 24. Les 24 premiers bits de la plage d'adresses IP sont utilisés comme masque de sous-réseau (192.0.2.0), tandis que les adresses d'hôte possibles vont de192.0.2.0à192.0.2.255.La valeur de la longueur de votre préfixe ne doit pas dépasser
/29. Si aucune valeur n'est spécifiée pour la plage, la valeur par défaut/24est automatiquement attribuée. Si aucune valeur n'est spécifiée pour la longueur du préfixe, des adresses IP sont automatiquement attribuées dans le réseau VPC appairé. Si aucune valeur n'est spécifiée pour l'adresse IP, une plage est automatiquement attribuée à l'adresse IP dans le réseau VPC appairé.
Cliquez sur Connecter un hôte.
Si votre instance Bitbucket Data Center se trouve sur un réseau appairé, la connexion de votre hôte peut prendre plusieurs minutes.
Vous serez redirigé vers le panneau Connecter un dépôt.
Une fois la connexion à l'hôte créée, vos jetons d'accès personnels et le secret du webhook seront stockés de manière sécurisée dans Secret Manager. Vous pouvez afficher et gérer vos secrets sur la page Secret Manager.
gcloud
Pour connecter votre hôte Bitbucket Data Center à Cloud Build à l'aide des commandes gcloud, vous devez exécuter la commande gcloud alpha builds enterprise-config bitbucket-data-center create dans votre terminal. Contrairement à la connexion de votre hôte à l'aide de la consoleGoogle Cloud , vous devrez stocker manuellement vos jetons d'accès personnels et le code secret du webhook dans Secret Manager avant d'exécuter la commande suivante :
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
Où :
- CONFIG_NAME est le nom de votre configuration Bitbucket Data Center.
- USERNAME est votre nom d'utilisateur Bitbucket Data Center.
- HOST_URI est l'URI de l'hôte de votre instance Bitbucket Data Center.
- ADMIN_ACCESS_TOKEN_SECRET_VERSION est le nom de ressource de votre jeton d'accès administrateur stocké dans Secret Manager. Le format attendu pour les secrets stockés dans Secret Manager est
projects/${PROJECT_ID}/secrets/${SECRET_NAME}/versions/${VERSION_NUMBER}. Vous pouvez spécifierlatestcomme version pour utiliser la dernière version de votre secret. Cela s'applique à chaque ressource stockée dans Secret Manager.
- READ_ACCESS_TOKEN_SECRET_VERSION est le nom de ressource de votre jeton d'accès en lecture stocké dans Secret Manager.
- WEBHOOK_SECRET_SECRET_VERSION est le nom de ressource de votre secret de webhook stocké dans Secret Manager.
- API_KEY est la clé API Google Cloud .
(Facultatif) PEERED_NETWORK est le réseau VPC auquel se connecter pour vos instances Bitbucket Data Center sur site. Pour en savoir plus, consultez Créer des dépôts à partir de Bitbucket Data Center dans un réseau privé.
Facultatif : PEERED_NETWORK_IP_RANGE correspond à la plage d'adresses IP internes pouvant être attribuées aux VM dans la plage allouée d'un réseau appairé.
SSL_CA_FILE est le chemin d'accès à un fichier local contenant votre certificat SSL à utiliser pour les requêtes adressées à Bitbucket Data Center. Le certificat doit être au format PEM.
API
Pour connecter votre hôte Bitbucket Data Center à Cloud Build à l'aide de l'API, utilisez le modèle JSON suivant. Contrairement à la connexion de votre hôte à l'aide de la console Google Cloud , vous devez stocker manuellement vos jetons d'accès personnels et le secret du webhook dans Secret Manager avant d'appeler 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"
}
Où :
- HOST_URI est l'URI de l'hôte de votre instance Bitbucket Data Center.
- USERNAME est votre nom d'utilisateur Bitbucket Data Center.
- API_KEY est la clé API Google Cloud .
ADMIN_ACCESS_TOKEN_SECRET_VERSION est le nom de ressource de votre jeton d'accès administrateur stocké dans Secret Manager. Vous devrez peut-être attribuer le rôle Accesseur de secrets Secret Manager à votre agent de service Cloud Build,
service-${PROJECT_NUMBER}@gcp-sa-cloudbuild.iam.gserviceaccount.com. Pour en savoir plus, consultez Attribuer le rôle Secret Manager à votre compte de service.READ_ACCESS_TOKEN_SECRET_VERSION est le nom de ressource de votre jeton d'accès en lecture stocké dans Secret Manager.
WEBHOOK_SECRET_SECRET_VERSION est le nom de ressource de votre secret de webhook stocké dans Secret Manager.
(Facultatif) PEERED_NETWORK est le réseau VPC à associer à vos instances Bitbucket Data Center sur site.
Vous pouvez spécifier la plage à l'aide de la notation CIDR (Classless Inter-Domain Routing) au format
STARTING_IP/SUBNET_PREFIX_SIZE. Par exemple,192.0.2.0/24a une longueur de préfixe de 24. Les 24 premiers bits de la plage d'adresses IP sont utilisés comme masque de sous-réseau (192.0.2.0), tandis que les adresses d'hôte possibles vont de192.0.2.0à192.0.2.225.Facultatif : PEERED_NETWORK_IP_RANGE correspond à la plage d'adresses IP internes pouvant être attribuées aux VM dans la plage allouée d'un réseau appairé.
Facultatif : SSL_CERTIFICATE est le certificat SSL utilisé pour vos instances Bitbucket Data Center sur site.
Saisissez la commande curl suivante dans votre terminal :
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
Où :
- PROJECT_ID est l' Google Cloud ID de votre projet.
- REGION correspond à la région associée à votre configuration Bitbucket Data Center.
- CONFIG_NAME est le nom de votre configuration Bitbucket Data Center.
Si la requête aboutit, le corps de la réponse contient une nouvelle instance de Operation.
Saisissez la commande curl suivante dans votre terminal :
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
Où :
- PROJECT_NUMBER est le numéro de votre projet Google Cloud .
- PROJECT_ID est l'ID de votre projet Google Cloud .
- REGION correspond à la région associée à votre configuration Bitbucket Data Center.
- OPERATION_ID est l'ID de l'opération de création de votre configuration Bitbucket Data Center.
Vous devrez peut-être continuer à exécuter la commande d'API GetOperation jusqu'à ce que la réponse contienne done: true, ce qui indique que l'opération est terminée. Si la configuration Bitbucket Data Center est créée, vous pouvez la voir dans le champ response.value. Sinon, consultez le champ error pour obtenir un rapport d'erreur détaillé.
Faire tourner les jetons d'accès Bitbucket Data Center anciens ou expirés
Si votre jeton d'accès Bitbucket Data Center expire, votre connexion d'hôte Cloud Build est déconnectée de son dépôt Bitbucket Data Center. Par conséquent, des erreurs s'affichent dans les cas suivants :
Lorsque vous essayez d'associer une connexion Cloud Build à un dépôt Bitbucket Data Center, un message
Failed to fetch repositories to link. Check that Cloud Build is still authorized to access data from the selected connections'affiche.Sur la page Déclencheurs, lorsque vous cliquez sur Exécuter, la page Exécuter le déclencheur s'ouvre et affiche un message
Failed to list branches. You can still enter one manually.
Pour remplacer un jeton ancien ou expiré pour votre connexion :
Recherchez les secrets associés à votre connexion hôte :
Exécutez la commande suivante :
gcloud builds connections describe CONNECTION_PATH --region=REGIONOù :
- CONNECTION_PATH correspond au chemin d'accès à la connexion de votre hôte Bitbucket Data Center dans Cloud Build, au format
projects/PROJECT_ID/locations/REGION/connections/CONNECTION_NAME. - REGION est la région de votre connexion.
- CONNECTION_PATH correspond au chemin d'accès à la connexion de votre hôte Bitbucket Data Center dans Cloud Build, au format
Dans le résultat de la commande, recherchez les valeurs des champs de votre jeton utilisateur.
readAuthorizerCredential.userTokenSecretVersionaffiche le nom Secret Manager du jetonRead, etauthorizerCredential.userTokenSecretVersionaffiche le nom Secret Manager du jetonAdmin. Ces noms sont stockés en tant que secrets dans Secret Manager.
Faites tourner chaque jeton d'accès dans Bitbucket Data Center :
Accédez au dépôt Bitbucket Data Center connecté à votre connexion hôte Cloud Build.
Suivez les instructions de la documentation Bitbucket pour faire pivoter un jeton d'accès. Lorsque vous faites tourner un jeton, Bitbucket Data Center en crée un avec de nouvelles identifiants et invalide la version précédente. Votre jeton renouvelé dispose des mêmes autorisations et du même champ d'application que le jeton d'origine.
Copiez l'ID de votre jeton permuté.
Créez une version secrète pour chaque jeton :
Ouvrez la page Secret Manager dans la console Google Cloud :
Pour chaque jeton que vous avez fait pivoter, recherchez le nom secret que vous avez identifié à l'étape 1, puis cliquez sur Actions, puis sur Ajouter une version.
Dans la fenêtre Ajouter une nouvelle version, saisissez l'ID de votre jeton renouvelé, puis cliquez sur Ajouter une nouvelle version.
Étapes suivantes
- Découvrez comment connecter un dépôt Bitbucket Data Center.
- Découvrez comment effectuer des déploiements bleu-vert sur Compute Engine.