Cette page explique comment connecter un GitLab à Cloud Build.
Avant de commencer
Activez les API Cloud Build et Secret Manager.
Rôles requis pour activer les API
Pour activer les API, vous avez besoin du rôle IAM Administrateur d'utilisation du service (
roles/serviceusage.serviceUsageAdmin), qui contient l'autorisationserviceusage.services.enable. 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 niveau d'accès
apià utiliser pour connecter et déconnecter des dépôts.Créez un jeton d'accès avec le niveau d'accès
read_apipour vous assurer que les dépôts Cloud Build peuvent accéder au code source dans les dépôts.
Console
Connecter votre hôte GitLab à Cloud Build :
Ouvrez la page Dépôts dans la Google Cloud console.
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 Google Cloud projet.
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 de vos dépôts GitLab, accédez à la section Chiffrement , puis 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 le niveau d'accès
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 le niveau d'accès
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 Se 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 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 unprojet 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 : Google Cloud
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 Google Cloud projet.
Vous pouvez maintenant connecter votre hôte GitLab à Cloud Build.
Procédez comme suit :
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 est l'URI de votre instance GitLab. Exemple :
https://my-gle-server.net. - PROJECT_ID est l'ID de votre Google Cloud projet.
- REGION est la région de votre connexion.
- API_TOKEN est le nom de votre jeton avec le niveau d'accès
api. - READ_TOKEN est le nom de votre jeton avec le niveau d'accès
read_api. - SECRET_VERSION est la version de votre secret.
- WEBHOOK_SECRET est votre secret de webhook.
Vous avez créé une connexion GitLab.
Effectuer la rotation des jetons d'accès GitLab anciens ou expirés
Si votre jeton d'accès GitLab expire, votre connexion hôte Cloud Build est déconnectée de son dépôt GitLab. Par conséquent, des erreurs s'affichent dans les cas suivants :
Lorsque vous essayez d'associer une connexion Cloud Build à un dépôt GitLab, le message
Failed to fetch repositories to link. Check that Cloud Build is still authorized to access data from the selected connection(Échec de la récupération des dépôts à associer. Vérifiez que Cloud Build est toujours autorisé à accéder aux données de la connexion sélectionnée) s'affiche.Sur la page Déclencheurs, lorsque vous cliquez sur Exécuter, la page Exécuter le déclencheur s'ouvre et affiche le message
Failed to list branches. You can still enter one manually.
Pour effectuer la rotation d'un jeton ancien ou expiré pour votre connexion, procédez comme suit :
Recherchez les secrets associés à votre connexion hôte :
Exécutez la commande suivante :
gcloud builds connections describe CONNECTION_PATH --region=REGIONOù :
- CONNECTION_PATH est le chemin d'accès à votre connexion hôte GitLab
dans Cloud Build, au format
projects/PROJECT_ID/locations/REGION/connections/CONNECTION_NAME. - REGION est la région de votre connexion.
- CONNECTION_PATH est le chemin d'accès à votre connexion hôte GitLab
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_api, etauthorizerCredential.userTokenSecretVersionaffiche le nom Secret Manager du jetonapi. Ces noms sont stockés en tant que secrets dans Secret Manager.
Effectuez la rotation de chaque jeton d'accès dans GitLab :
Accédez au dépôt GitLab connecté à votre connexion hôte Cloud Build.
Suivez les instructions de la documentation GitLab pour effectuer la rotation d'un jeton d'accès. Lorsque vous effectuez la rotation d'un jeton, GitLab en crée un avec de nouveaux identifiants et invalide la version précédente. Votre jeton pivoté dispose des mêmes autorisations et du même champ d'application que le jeton d'origine.
Copiez l'ID de votre jeton pivoté.
Créez une version secrète pour chaque jeton :
Ouvrez la page Secret Manager dans la Google Cloud console :
Pour chaque jeton dont vous avez effectué la rotation, recherchez le nom secret que vous avez identifié à l'étape 1, cliquez sur Actions, puis sur Ajouter une nouvelle version.
Dans la fenêtre Ajouter une nouvelle version , saisissez l'ID de votre jeton pivoté, puis cliquez sur Ajouter une nouvelle version.
Étape suivante
- Découvrez comment connecter un dépôt GitLab.
- Découvrez comment créer et déployer vos charges de travail en Google Cloud utilisant des composants CI/CD gérés par Google dans votre pipeline GitLab. Consultez GitLab sur Google Cloud.