Cette page explique comment se connecter à un serveur Bitbucket vers Cloud Build.
Avant de commencer
-
Activer les API Cloud Build, Secret Manager, and Compute Engine.
- Si vous n'avez pas installé d'instance Bitbucket Server, consultez le guide d'installation du serveur Bitbucket pour obtenir des instructions.
Configuration
Avant de connecter votre hôte Bitbucket Server, vous devez obtenir une clé API pour authentifier et accepter les événements entrants provenant du serveur Bitbucket. En outre, vous devez accorder des autorisations IAM dans votre projet Google Cloud pour créer des jetons d'accès personnels dans Bitbucket Server afin de créer des webhooks et récupérer des données de dépôt.
Obtenir une clé API
Pour connecter votre hôte et authentifier les événements de webhook entrants, vous avez besoin d'une clé API.
Pour obtenir une clé API:
Ouvrez la page Identifiants dans la console Google Cloud:
Ouvrez la page Identifiants.
Cliquez sur Créer des identifiants.
Cliquez sur Clé API.
Une boîte de dialogue contenant la clé API s'affiche. Prenez note de votre clé API.
Si vous souhaitez limiter votre clé pour les applications de produits, cliquez sur Restreindre la clé pour effectuer les étapes supplémentaires permettant de sécuriser votre clé. Sinon, cliquez sur Fermer.
Pour savoir comment restreindre votre clé, consultez la section Appliquer des restrictions de clé API.
Autorisations IAM requises
Pour connecter votre hôte Bitbucket Server, attribuez à votre compte utilisateur les rôles Éditeur Cloud Build (roles/cloudbuild.builds.editor
) et Propriétaire des intégrations Cloud Build (cloudbuild.integrations.owner
).
Pour ajouter les rôles requis à votre compte utilisateur, consultez la page Configurer l'accès aux ressources Cloud Build. Pour en savoir plus sur les rôles IAM associés à Cloud Build, consultez la page Rôles et autorisations IAM.
Créer des jetons d'accès personnels
Vous devez créer deux jetons d'accès personnels dans Bitbucket Server pour effectuer les tâches suivantes:
- Créez des webhooks: créez un jeton d'accès personnel avec un accès administrateur.
- Récupérez les données du dépôt: créez un jeton d'accès personnel avec un accès en lecture. Vous pouvez éventuellement créer un jeton disposant d'un accès en lecture et en écriture.
Ces jetons d'accès personnels correspondent aux autorisations minimales requises. Si nécessaire, vous devrez peut-être configurer des autorisations supplémentaires dans le serveur Bitbucket. Par exemple, vous pouvez sélectionner un compte de serveur Bitbucket pour n'avoir accès qu'à un sous-ensemble des dépôts de votre instance Bitbucket Server. Cela vous permet de contrôler plus précisément les éléments disponibles dans Cloud Build.
Une fois que vous avez créé vos jetons d'accès personnels, enregistrez leurs valeurs de manière sécurisée pour vous connecter à votre dépôt Bitbucket Server.
Se connecter à un hôte Bitbucket Server
Console
Pour connecter votre hôte Bitbucket Server à Cloud Build à l'aide de la console Google Cloud, procédez comme suit:
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 Server dans le menu déroulant.
Le panneau Connecter un hôte s'affiche.
Saisissez les informations suivantes pour connecter votre instance de serveur Bitbucket à Cloud Build:
Région: sélectionnez la région de votre connexion.
Nom: saisissez le nom de votre connexion.
URL de l'hôte: l'URL de votre hôte de votre instance Bitbucket Server. Exemple :
https://bbs.example-test.com:7990
.Clé API Google Cloud: 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
,.cer
ou.crt
). Si cette section est vide, un ensemble de certificats par défaut est utilisé.Nom d'utilisateur: le nom d'utilisateur de votre compte Bitbucket Server. 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: jeton d'accès personnel de votre compte Bitbucket Server avec des autorisations de lecture.
Jeton d'accès administrateur: jeton d'accès personnel de votre compte Bitbucket Server doté d'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é.
Project (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 créé de réseau, consultez la section Créer et gérer des réseaux VPC pour savoir comment créer un réseau.
Plage d'adresses IP: saisissez la plage d'adresses IP internes à laquelle les VM peuvent être attribuées dans la plage allouée d'un réseau appairé.
Vous pouvez la spécifier à l'aide du format CIDR (Classless Inter-Domain Routing) au format
STARTING_IP/SUBNET_PREFIX_SIZE
. Par exemple,192.0.2.0/24
a 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ôtes possibles sont comprises entre192.0.2.0
et192.0.2.255
.La valeur 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/24
est automatiquement attribuée. Si aucune valeur n'est spécifiée pour la longueur du préfixe, les adresses IP sont automatiquement attribuées au sein du 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 au sein du réseau VPC appairé.
Cliquez sur Connecter un hôte.
Si votre instance Bitbucket Server 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 hôte créée, vos jetons d'accès personnels et votre secret de 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 Server à Cloud Build à l'aide des commandes gcloud
, vous devez exécuter la commande gcloud alpha builds enterprise-config bitbucketserver create
dans votre terminal. 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 votre code secret de webhook dans Secret Manager avant d'exécuter la commande suivante:
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
Où :
- BITBUCKET_SERVER_CONFIG_NAME est le nom de votre configuration de serveur Bitbucket.
- USERNAME est votre nom d'utilisateur Bitbucket Server.
- HOST_URI est l'URI hôte de votre instance Bitbucket Server.
- 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écifierlatest
comme 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 du secret de votre webhook stocké dans Secret Manager.
- API_KEY est la clé API Google Cloud.
[Facultatif] PEERED_NETWORK est le réseau VPC auquel vous connecter pour vos instances Bitbucket Server sur site. Pour en savoir plus, consultez Créer des dépôts à partir de Bitbucket Server dans un réseau privé.
[Facultatif] PEERED_NETWORK_IP_RANGE est la plage d'adresses IP internes à laquelle les VM peuvent être attribuées dans la plage allouée d'un réseau appairé.
SSL_CA_FILE est le chemin d'accès à un fichier local contenant le certificat SSL à utiliser pour les requêtes adressées à Bitbucket Server. Le certificat doit être au format PEM.
API
Pour connecter votre hôte Bitbucket Server à 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 votre code secret de 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 hôte de votre instance Bitbucket Server.
- USERNAME est votre nom d'utilisateur Bitbucket Server.
- 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 Secret Manager à votre compte 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 du secret de votre webhook stocké dans Secret Manager.
[Facultatif] PEERED_NETWORK est le réseau VPC à appairer pour vos instances Bitbucket Server sur site.
Vous pouvez spécifier la plage à l'aide de la notation de routage CIDR (Classless Inter-Domain Routing) au format
STARTING_IP/SUBNET_PREFIX_SIZE
. Par exemple,192.0.2.0/24
a 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ôtes possibles sont comprises entre192.0.2.0
et192.0.2.225
.[Facultatif] PEERED_NETWORK_IP_RANGE est la plage d'adresses IP internes à laquelle les VM peuvent être attribuées dans la plage allouée d'un réseau appairé.
[Facultatif] SSL_CERTIFICATE est le certificat SSL utilisé pour vos instances Bitbucket Server 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" -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
Où :
- PROJECT_NUMBER est le numéro de votre projet Cloud.
- PROJECT_ID est votre ID de projet cloud.
- REGION est la région associée à votre configuration Bitbucket Server.
- BITBUCKET_SERVER_CONFIG_NAME est le nom de votre configuration de serveur Bitbucket.
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 Cloud.
- PROJECT_ID est votre ID de projet cloud.
- REGION est la région associée à votre configuration Bitbucket Server.
- OPERATION_ID est l'ID de votre opération de création de configuration Bitbucket Server.
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 Server a bien été créée, vous pouvez la voir dans le champ response.value
. Sinon, consultez le champ error
pour obtenir un rapport d'erreur détaillé.
Étapes suivantes
- Découvrez comment connecter un dépôt Bitbucket Server.
- Découvrez comment effectuer des déploiements bleu-vert sur Compute Engine.