Nous utilisons GitLab pour notre projet privé. Il y a des bibliothèques forkées de github, que nous voulons installer en tant que module npm. L'installation de ce module directement à partir de npm est ok et par exemple ceci:
npm install git://github.com/FredyC/grunt-stylus-Sprite.git
... fonctionne correctement aussi, mais faire la même chose pour GitLab, changer de domaine me donne cette erreur.
npm WARN `git config --get remote.Origin.url` returned wrong result (git://git.domain.com/library/grunt-stylus-Sprite.git)
npm ERR! git clone git://git.domain.com/library/grunt-stylus-Sprite.git Cloning into bare repository 'D:\users\Fredy\AppData\Roaming\npm-cache\_git-remotes\git-git-domain-com-library-grunt-stylus-Sprite-git-6f33bc59'...
npm ERR! git clone git://git.domain.com/library/grunt-stylus-Sprite.git fatal:unable to connect to git.domain.com:
npm ERR! git clone git://git.domain.com/library/grunt-stylus-Sprite.git git.domain.com[0: 77.93.195.214]: errno=No error
npm ERR! Error: Command failed: Cloning into bare repository 'D:\users\Fredy\App
Data\Roaming\npm-cache\_git-remotes\git-git-domain-com-library-grunt-stylus-spr
ite-git-6f33bc59'...
npm ERR! fatal: unable to connect to git.domain.com:
npm ERR! git.domain.com[0: xx.xx.xx.xx]: errno=No error
Depuis l'interface Web de GitLab, j'ai cette URL [email protected]:library/grunt-stylus-Sprite.git
. Exécuter ceci contre npm install
_ il tente d’installer git
module à partir du registre npm.
Cependant, en utilisant l'URL: [email protected]:library/grunt-stylus-Sprite.git
me demande soudain le mot de passe. Ma clé SSH n'inclut pas de phrase secrète, donc je suppose qu'elle n'a pas été en mesure de charger cette clé. Peut-être y a-t-il une configuration pour celle que j'ai manquée? La clé se trouve à l’emplacement standard de mon répertoire personnel sous le nom "id_rsa"
.
Je suis sur Windows 7 x64.
[~ # ~] met à jour [~ # ~]
Depuis NPM v3, GitLab et d’autres sources (BitBucket, Gist) sont intégrés, à partir desquels vous pouvez installer des packages. Malheureusement, cela ne fonctionne que pour les publics, donc ce n'est pas exactement lié à cela, mais certains pourraient trouver cela utile.
npm install gitlab:<gitlabname>/<gitlabrepo>[#<commit-ish>]
Consultez la documentation: https://docs.npmjs.com/cli/install
Vous avez les méthodes suivantes pour vous connecter à un référentiel privé gitlab
avec SSH
git+ssh://[email protected]:Username/Repository#{branch|tag}
git+ssh://[email protected]/Username/Repository#{branch|tag}
avec HTTPS
git+https://[email protected]/Username/Repository#{branch|tag}
avec HTTPS et jeton de déploiement
git+https://<token-name>:<token>@gitlab.com/Username/Repository#{branch|tag}
Au lieu de git://
, utilisation git+ssh://
et NPM devraient faire le bon choix.
Mettre à jour
Comme @felix mentionné dans les commentaires (merci @felix) en utilisant deploy token
est beaucoup plus pertinent pour lire un registre privé sur gitlab
. De cette façon, le jeton est compromis, l’attaquant ne peut que lire ce référentiel et ne peut pas apporter de modifications.
Création d'un jeton de déploiement
GitLab
.Expand
dans la section Déployer les jetons.read_repository
Ancienne réponse
Aller à User Settings > Access Tokens
et créer un nouveau access token
avec read_registry
autorisation.
Copie générée token
, nous en avons besoin pour notre package.json
fichier.
Maintenant en package.json
ajoutez le dependency
comme ci-dessous:
"my-module": "git+https://Xaqron:[email protected]/Xaqron/my-module"
Remplacez Xaqron
par votre nom d'utilisateur et token
par le jeton généré. Vous pouvez spécifier branch
et tag
à la fin de l'URL par #{branch|tag}
.
Remarque: Le jeton d'accès étant situé dans package.json
toute personne ayant accès à ce projet peut lire le référentiel, donc je suppose que votre projet est privé.
Bien que la question concerne Gitlab, cette question est assez bien classée dans la recherche Google. Voici donc quelques informations supplémentaires sur la façon de résoudre un problème similaire rencontré avec Github.
Pour moi, changer seulement l'URL ne le faisait pas fonctionner. Voici les étapes à suivre pour résoudre ce problème:
git+ssh://[email protected]:owner/repo.git#master
~/.ssh/config
créer le fichier s'il n'existe pas) pour forcer l'utilisation de DeployKey au lieu de la clé ssh par défautAprès cela, l’installation de npm a simplement fonctionné. Toutes les autres options et solutions résultent de la rupture d'installation de npm
Pour tous ceux qui tombent sur un problème, je ne pouvais pas le faire fonctionner du tout avec HTTPS - il semble que cela ne supporte pas le lien direct vers le repo (par exemple, https://git.domain.com/user/somerepo.git
), ni ne prend en charge le .tar
, .tar.bz
ou .Zip
versions d'archives.
Cela ne semble fonctionner qu'avec le .tar.gz
archive.
Exemple complet (avec la version marquée):
https://git.domain.com/user/somerepo/repository/archive.tar.gz?ref=v1.2.3
Autant que je puisse dire où vous allez mal, le git://
protocole. GitLab ne supporte que HTTP (s) et SSH pour les clones. Vous devez donc utiliser l’une de ces méthodes à la place du protocole git.
Pour moi, le package.json comme ci-dessous fonctionne.
"dependencies": {
"<module-name>": "git+http://<username>:<token>@url.git",
}
Le jeton provient de vos "Paramètres de profil - Jeton d'accès".
Aucune des autres réponses n'a fonctionné pour moi pour un dépôt privé de gitlab.com ...
Cela fonctionne cependant:
npm i -S git+ssh://[email protected]:<org>/<project>.git
C'est juste l'URL de clone git ssh du champ de saisie "clone" de la page de projet avec git+ssh://
ajouté à l'avant de celui-ci.