Git, NPM, Bower et netrc

Il arrive dans nos projets que nous déclarions dans le bower.json ou dans le package.json un lien Git qui permet de récupérer un composant. Jusque-là, rien de gênant.

En revanche, il arrive que ces liens pointent vers des repos Git privés. Quand nous développons, nous allons avoir un prompt sur les commandes "bower install" ou "npm install" qui va nous demander d'entrer le login / mot de passe. Donc cela peut se résoudre, même s'il y a de fortes chances que ce prompt apparaisse à chaque fois.

Le plus gênant est dans nos CI où fatalement, il n'y a pas d'humain pour interagir avec le prompt.

Du coup, la solution naïve est de fournir dans les liens Git un login / mot de passe ... ce qui n'est pas vraiment une bonne idée.



Il existe un moyen plutôt simple d'éviter cette solution: utiliser le "netrc". C'est un fichier qui va contenir nos crédentials pour les différents hosts Git. Voici la procédure pour que cela fonctionne.


1) Exécuter la commande "git config --edit --system". Cette dernière va afficher un vi avec le contenu de la configuration global. Une section "[credential]" devrait apparaître. Il faut supprimer la ligne "helper = manager".

2) Pour Windows:
a) Déclarer une variable d'environnement "HOME" ayant comme valeur "%USERPROFILE%"
b) Créer dans votre répertoire utilisateur un fichier nommé "_netrc".

3) Pour Linux
a) Créer un fichier ".netrc"
b) Lancer la commande "chmod 600 .netrc"

4) Editer le contenu de votre fichier _netrc / .netrc où vous pouvez préciser plusieurs tuples de valeurs comprenant une machine, un login, un mot de passe.



Voici un exemple pour GitLab:

machine gitlab.com
login myLogin
password xxxxxxxxxx


Il faut parfois "tâtonner" pour trouver les bons paramètres, car pour certains hosts Git, c'est plutôt l'email qu'il souhaite avoir dans le login.


Mais c'est plutôt pratique au final

Commentaires

Posts les plus consultés de ce blog

ISO: liens & outils utiles

NodeJs et SSL: une petite analyse

Créer sa commande slack en quelques minutes