
Problème courant : erreur de checkout SCM (mauvaise URL, credentials)
Diagnostiquez et corrigez les erreurs de checkout SCM (Git, etc.) dans Jenkins dues à une mauvaise URL ou des credentials incorrects. Guide pratique pour des pipelines CI/CD fonctionnels.
L'étape cruciale du checkout SCM et ses pièges courants
L'une des toutes premières actions d'un pipeline d'intégration continue est la récupération du code source depuis un système de gestion de configuration (SCM, Source Control Management), tel que Git, Subversion, ou Mercurial. Cette étape, communément appelée "checkout" ou "clone", est fondamentale : sans code source, il n'y a pas de build, pas de test, pas d'artefact à déployer. Malheureusement, c'est aussi une source fréquente d'échecs, particulièrement lors de la mise en place d'un nouveau job ou de la modification de la configuration d'un dépôt existant.
Les erreurs de checkout SCM dans Jenkins se manifestent généralement de manière assez explicite dans la console du build. Elles indiquent que Jenkins n'a pas réussi à se connecter au dépôt distant, à s'authentifier, ou à trouver la branche ou la révision spécifiée. Les deux coupables les plus fréquents sont une URL de dépôt incorrecte ou des problèmes avec les identifiants (credentials) nécessaires pour accéder au dépôt.
Comprendre comment identifier et résoudre ces problèmes est essentiel pour assurer la fluidité de vos processus CI/CD. Une configuration SCM correcte dès le départ vous évitera bien des frustrations et des pertes de temps.
L'URL du dépôt : une précision diabolique pour un checkout réussi
Une URL de dépôt mal configurée est une cause très répandue d'échec de checkout. Même une petite erreur de frappe, une confusion de protocole (http:// vs https:// vs ssh://) ou une coquille dans le nom d'utilisateur ou du dépôt peuvent rendre le code source inaccessible à Jenkins. Il est impératif de s'assurer que l'URL renseignée dans la configuration de votre job Jenkins correspond exactement à celle fournie par votre plateforme SCM (GitHub, GitLab, Bitbucket, etc.).
Par exemple, si l'URL correcte de votre dépôt est https://github.com/mon-utilisateur/mon-super-projet.git, des erreurs comme https://github.com/mon-utilisateur/mon-super-proje.git (faute de frappe), http://github.com/mon-utilisateur/mon-super-projet.git (mauvais protocole si HTTPS est requis) ou git@github.com:mon-utilisateur/mon-super-projet.git (format SSH alors que Jenkins est configuré pour HTTPS sans les clés adéquates) entraîneront un échec.
Les messages d'erreur typiques dans la console Jenkins pour une URL incorrecte peuvent ressembler à ceci :
ERROR: Error fetching remote repo 'origin'
Caused by: hudson.plugins.git.GitException: Failed to fetch from https://github.com/mon-utilisateur/mon-super-proje.git
Caused by: org.eclipse.jgit.api.errors.TransportException: https://github.com/mon-utilisateur/mon-super-proje.git: not foundOu encore, si le serveur lui-même n'est pas joignable ou le nom d'hôte est incorrect :
stderr: fatal: unable to access 'https://githuub.com/mon-utilisateur/mon-super-projet.git/': Could not resolve host: githuub.comLa première action corrective est donc de copier-coller l'URL exacte depuis votre interface SCM et de la vérifier attentivement dans la configuration de votre job Jenkins, section "Source Code Management".
Identifiants (credentials) : la clé d'accès à vos dépôts protégés
Si votre dépôt de code source est privé, Jenkins aura besoin d'identifiants valides pour s'authentifier auprès du serveur SCM et obtenir les permissions de lecture (et parfois d'écriture pour les tags ou les webhooks). Les problèmes de credentials sont une autre cause majeure d'échecs de checkout. Cela peut provenir d'identifiants incorrects, expirés, ou d'un type d'identifiant inapproprié pour le protocole utilisé.
Jenkins dispose d'un gestionnaire de "Credentials" sécurisé pour stocker ces informations sensibles (noms d'utilisateur/mots de passe, tokens d'accès personnels, clés SSH, certificats). Lors de la configuration SCM de votre job, vous sélectionnez les credentials appropriés à utiliser. Une erreur courante est de sélectionner les mauvais credentials, ou de ne pas en sélectionner du tout pour un dépôt privé.
Voici des exemples de messages d'erreur que vous pourriez rencontrer en cas de problème de credentials :
Pour un accès HTTPS avec un token ou mot de passe incorrect :
stderr: remote: Invalid username or password.
fatal: Authentication failed for 'https://github.com/mon-utilisateur/mon-depot-prive.git/'Pour un accès SSH où la clé n'est pas autorisée ou mal configurée :
stderr: ERROR: Permission to mon-utilisateur/mon-depot-prive.git denied to deploy key
fatal: Could not read from remote repository.
Please ensure you have the correct access rights
and the repository exists.Ou un message plus générique indiquant qu'aucune révision n'a pu être trouvée, ce qui peut aussi être un symptôme de problème d'accès :
ERROR: Couldn't find any revision to build. Verify the repository and branch configuration for this job.Pour résoudre ces problèmes, assurez-vous que les credentials utilisés dans Jenkins sont corrects et toujours valides. Pour l'accès SSH, vérifiez que la clé publique correspondante est bien enregistrée sur votre plateforme SCM (au niveau du dépôt ou de l'utilisateur) et que la clé privée est correctement chargée dans le gestionnaire de credentials Jenkins. Si vous utilisez des tokens d'accès, vérifiez qu'ils disposent des permissions (scopes) nécessaires (par exemple, `repo` pour GitHub).
Vérification et résolution : méthodologie de dépannage SCM
Face à une erreur de checkout SCM, une approche méthodique s'impose. Commencez toujours par examiner attentivement la sortie console du build Jenkins pour le message d'erreur exact. Celui-ci vous donnera souvent des indices précieux sur la nature du problème (URL, authentification, etc.).
Ensuite, vérifiez l'URL du dépôt configurée dans Jenkins. Copiez-la et essayez d'accéder au dépôt avec cette URL depuis un navigateur ou en utilisant la commande `git clone` ou `git ls-remote` directement depuis une machine ayant un accès réseau similaire à celui de l'agent Jenkins (voire l'agent lui-même si possible). Cela permet d'isoler si le problème vient de l'URL elle-même ou de la configuration Jenkins.
Si l'URL semble correcte, penchez-vous sur les credentials. Accédez au gestionnaire de "Credentials" de Jenkins (Manage Jenkins > Manage Credentials). Vérifiez que les identifiants que vous pensez utiliser pour ce job sont bien ceux attendus et qu'ils sont à jour. Pour les clés SSH, assurez-vous que le format est correct et que la clé publique correspondante est bien déployée sur le serveur SCM. Pour les tokens, vérifiez leur date d'expiration et leurs permissions.
Dans la configuration du job, sous la section SCM, assurez-vous que les bons credentials sont sélectionnés dans le menu déroulant. Parfois, l'option "(aucun)" est sélectionnée par défaut, ce qui ne fonctionnera pas pour un dépôt privé. Si vous venez d'ajouter ou de modifier des credentials, il peut être nécessaire de forcer un nouveau build pour que les changements soient pris en compte.
Enfin, n'oubliez pas de vérifier la configuration de la branche à builder (par exemple, `main`, `master`, `develop`). Une faute de frappe dans le nom de la branche ou une branche inexistante sur le dépôt distant provoquera également un échec, souvent avec un message indiquant qu'aucune révision n'a pu être trouvée.