Cette page explique comment connecter un hôte GitLab à Cloud Build.
Avant de commencer
Activez les API Cloud Build et Secret Manager, si ce n'est pas déjà fait.
Rôles requis pour activer les API
Pour activer les API, vous devez disposer de l'autorisation
serviceusage.services.enable. Si vous avez créé le projet, vous disposez probablement déjà de cette autorisation grâce au rôle Propriétaire (roles/owner). Sinon, vous pouvez obtenir cette autorisation grâce au rôle Administrateur Service Usage (roles/serviceusage.serviceUsageAdmin). Découvrez comment attribuer des rôles.
Se connecter à un hôte GitLab
Avant de créer une connexion hôte pour votre instance GitLab, vous devez créer des jetons d'accès personnels dans GitLab en procédant comme suit :
Connectez-vous à votre instance GitLab.
Sur la page GitLab de votre instance, cliquez sur votre avatar en haut à droite.
Cliquez sur Modifier mon profil.
Dans la barre latérale de gauche, sélectionnez Jetons d'accès.
La page Jetons d'accès personnels s'affiche.
Créez un jeton d'accès avec le champ d'application
apià utiliser pour connecter et déconnecter des dépôts.Créez un jeton d'accès avec le champ d'application
read_apipour vous assurer que les dépôts Cloud Build peuvent accéder au code source dans les dépôts.
Console
Pour connecter votre hôte GitLab à Cloud Build :
Ouvrez la page Dépôts dans la console Google Cloud .
La page Dépôts s'affiche.
En haut de la page, sélectionnez l'onglet 2e génération.
Dans le sélecteur de projet de la barre supérieure, sélectionnez votre projet Google Cloud .
Cliquez sur Créer une connexion hôte pour connecter un nouvel hôte à Cloud Build.
Dans le panneau de gauche, sélectionnez GitLab comme fournisseur de source.
Dans la section Configurer la connexion, saisissez les informations suivantes :
Région : sélectionnez une région pour votre connexion.
Nom : saisissez un nom pour votre connexion.
Dans la section Détails de l'hôte, accédez à Hôte GitLab, puis sélectionnez GitLab.com.
Facultatif : Si vous souhaitez gérer les clés de chiffrement utilisées pour chiffrer les jetons d'accès à vos dépôts GitLab, accédez à la section Chiffrement et choisissez une clé Cloud Key Management Service. Pour en savoir plus, consultez Activer les clés de chiffrement gérées par le client pour Secret Manager.
Dans la section Jetons d'accès personnels, saisissez les informations suivantes :
Jeton d'accès à l'API : saisissez le jeton avec l'accès au champ d'application
api. Ce jeton est utilisé pour connecter et déconnecter des dépôts.Jeton d'accès à l'API en lecture seule : saisissez le jeton avec l'accès au champ d'application
read_api. Les déclencheurs Cloud Build utilisent ce jeton pour accéder au code source dans les dépôts.
Cliquez sur Se connecter.
Après avoir cliqué sur le bouton Connecter, vos jetons d'accès personnels sont stockés de manière sécurisée dans Secret Manager. Après la connexion hôte, Cloud Build crée également un secret de webhook en votre nom. Vous pouvez afficher et gérer vos secrets sur la page Secret Manager.
Vous avez bien créé une connexion GitLab.
gcloud
Avant de connecter votre hôte GitLab à Cloud Build, procédez comme suit pour stocker vos identifiants :
Créez un secret de webhook dans Secret Manager en exécutant la commande suivante :
cat /proc/sys/kernel/random/uuid | tr -d '\n' | gcloud secrets create my-gle-webhook-secret --data-file=-Si vous stockez vos secrets dans un projet Google Cloud différent de celui que vous prévoyez d'utiliser pour créer une connexion hôte, saisissez la commande suivante pour accorder à votre projet l'accès à l'agent de service Cloud Build :
PN=$(gcloud projects describe PROJECT_ID --format="value(projectNumber)") CLOUD_BUILD_SERVICE_AGENT="service-${PN}@gcp-sa-cloudbuild.iam.gserviceaccount.com" gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:${CLOUD_BUILD_SERVICE_AGENT}" \ --role="roles/secretmanager.admin"Où :
- PROJECT_ID est l'ID de votre projet Google Cloud .
Vous pouvez maintenant connecter votre hôte GitLab à Cloud Build.
Procédez comme suit :
Pour connecter votre hôte GitLab à Cloud Build :
Saisissez la commande suivante pour créer une connexion GitLab :
gcloud builds connections create gitlab CONNECTION_NAME \ --host-uri=HOST_URI \ --project=PROJECT_ID \ --region=REGION \ --authorizer-token-secret-version=projects/PROJECT_ID/secrets/API_TOKEN/versions/SECRET_VERSION \ --read-authorizer-token-secret-version=projects/PROJECT_ID/secrets/READ_TOKEN/versions/SECRET_VERSION \ --webhook-secret-secret-version=projects/PROJECT_ID/secrets/WEBHOOK_SECRET/versions/SECRET_VERSIONOù :
- CONNECTION_NAME est le nom de votre connexion hôte GitLab dans Cloud Build.
- HOST_URI correspond à l'URI de votre instance GitLab. Exemple :
https://my-gle-server.net - PROJECT_ID est l'ID de votre projet Google Cloud .
- REGION correspond à la région de votre connexion.
- API_TOKEN est le nom de votre jeton avec le champ d'application
api. - READ_TOKEN est le nom de votre jeton avec le champ d'application
read_api. - SECRET_VERSION correspond à la version de votre secret.
- WEBHOOK_SECRET est votre secret de webhook.
Vous avez bien créé une connexion GitLab.
Faire tourner les jetons d'accès GitLab anciens ou expirés
Faites tourner vos jetons d'accès pour que votre connexion hôte Cloud Build puisse maintenir sa connexion à votre dépôt GitLab. Si votre jeton d'accès GitLab expire, la connexion de votre hôte Cloud Build à son dépôt GitLab est interrompue. Dans ce cas, vous ne pouvez pas désactiver la connexion ni associer un dépôt tant que vous n'avez pas renouvelé le jeton expiré. De plus, des erreurs s'afficheront dans les cas suivants :
La page Détails de la connexion de votre connexion affiche un message d'erreur indiquant
Connection is disconnected due to an invalid or expired access token.Si vous essayez d'associer un dépôt à une connexion dont le jeton a expiré, le message Jeton d'accès non valide s'affiche. Si vous cliquez sur Afficher la connexion, vous êtes redirigé vers la page Détails de la connexion pour la connexion dont le jeton a expiré.
Cloud Build vous permet de faire tourner les jetons d'accès en saisissant de nouvelles valeurs de jeton et en les enregistrant dans la dernière version du secret dans Secret Manager. Pour faire tourner vos jetons d'accès :
Faites tourner chaque jeton d'accès dans GitLab :
Accédez au dépôt GitLab connecté à votre connexion d'hôte Cloud Build.
Suivez les instructions de la documentation GitLab pour faire tourner un jeton d'accès. Lorsque vous effectuez une rotation d'un jeton, GitLab en crée un avec de nouvelles identifiants et invalide la version précédente de ce jeton. Votre jeton renouvelé dispose des mêmes autorisations et de la même portée que le jeton d'origine.
Copiez les ID de vos jetons renouvelés.
Mettez à jour votre jeton d'accès dans Cloud Build :
Accédez à la page Détails de connexion de votre connexion.
Sélectionnez Mettre à jour les jetons d'accès.
Dans le menu Rotation des jetons, saisissez vos nouveaux jetons dans les champs Jeton d'accès à l'API et Jeton d'accès en lecture.
(Facultatif) Si vous souhaitez que votre connexion utilise toujours la dernière version du secret pour vos jetons, sélectionnez Mettre à jour la connexion pour toujours utiliser la dernière version. Il peut être utile de laisser cette option décochée si votre connexion utilise un numéro de version secret spécifique.
Sélectionnez Mettre à jour pour enregistrer vos modifications.
Cloud Build enregistre les nouveaux jetons d'accès en tant que dernière version de votre secret dans Secret Manager.
Étapes suivantes
- Découvrez comment connecter un dépôt GitLab.
- Découvrez comment créer et déployer vos charges de travail sur Google Cloud à l'aide de composants CI/CD gérés par Google dans votre pipeline GitLab. Consultez GitLab sur Google Cloud.