[git] gitlab 개인 저장소에서 npm 모듈 설치

우리는 개인 프로젝트에 GitLab 을 사용하고 있습니다. npm 모듈로 설치하려는 github의 분기 라이브러리가 있습니다. npm에서 직접 해당 모듈을 설치하는 것은 괜찮습니다. 예를 들면 다음과 같습니다.

npm install git://github.com/FredyC/grunt-stylus-sprite.git

… 올바르게 작동하지만 GitLab에서도 동일하게 수행하면 도메인을 변경하면이 오류가 발생합니다.

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

GitLab의 웹 인터페이스에서이 URL이
git@git.domain.com:library/grunt-stylus-sprite.git있습니다. 이것을 실행하면 npm 레지스트리에서 모듈 npm install을 설치하려고합니다 git.

그러나 URL을 사용하면 git+ssh@git.domain.com:library/grunt-stylus-sprite.git갑자기 암호를 묻는 메시지가 나타납니다. 내 SSH 키에 암호가 포함되어 있지 않으므로 해당 키를로드 할 수 없다고 가정합니다. 내가 놓친 일부 구성이 있습니까? 키는 내 홈 디렉토리의 표준 위치에 "id_rsa"있습니다.

저는 Windows 7 x64를 사용하고 있습니다.

최신 정보

NPM v3부터 패키지를 설치할 수있는 GitLab 및 기타 소스 (BitBucket, Gist)에 대한 기본 지원이 있습니다. 불행히도 그것은 공개 된 것들에서만 작동하므로 이것과 정확히 관련이 없지만 일부는 유용하다고 생각할 수 있습니다.

npm install gitlab:<gitlabname>/<gitlabrepo>[#<commit-ish>]

문서 확인 : https://docs.npmjs.com/cli/install



답변

비공개 gitlab 저장소에 연결하는 방법은 다음과 같습니다.

SSH 사용

git+ssh://git@git.mydomain.com:Username/Repository#{branch|tag}
git+ssh://git@git.mydomain.com/Username/Repository#{branch|tag}

HTTPS 사용

git+https://git@git.mydomain.com/Username/Repository#{branch|tag}

HTTPS 및 배포 토큰 사용

git+https://<token-name>:<token>@gitlab.com/Username/Repository#{branch|tag}


답변

대신 git://use git+ssh://및 npm이 올바른 작업을 수행해야합니다.


답변

최신 정보

@felix가 주석에서 언급했듯이 (@felix에게 감사드립니다) .NET deploy token에서 개인 레지스트리를 읽는 데 훨씬 더 관련이 있습니다 gitlab. 이렇게하면 토큰이 손상되고 공격자는 해당 저장소를 읽을 수 있으며 변경할 수 없습니다.

배포 토큰 생성

  1. 귀하의 GitLab계정에 로그인하십시오 .
  2. 배포 토큰을 생성하려는 프로젝트로 이동합니다.
  3. 설정> 리포지토리로 이동합니다.
  4. Expand토큰 배포 섹션을 클릭합니다 .
  5. 토큰의 이름과 선택적으로 만료 날짜를 선택하십시오.
  6. 원하는 범위를 선택하십시오. <= 선택read_repository
  7. 배포 토큰 생성을 클릭합니다.
  8. 배포 토큰을 안전한 곳에 저장하십시오. 페이지를 나가거나 새로 고침하면 다시 액세스 할 수 없습니다.

이전 답변

이동 하여 권한이 User Settings > Access Tokens있는 새 만들기 .access tokenread_registry

여기에 이미지 설명 입력

사본이 생성 token되었습니다 package.json. 파일에 필요 합니다.

여기에 이미지 설명 입력

이제 아래와 같이 package.json추가하십시오 dependency.

"my-module": "git+https://Xaqron:token@gitlab.com/Xaqron/my-module"

Xaqron사용자 이름과 token생성 된 토큰으로 바꿉니다 . 으로 URL 끝에 branchtag을 지정할 수 있습니다 #{branch|tag}.

참고 : 액세스 토큰은 package.json이 프로젝트에 대한 액세스 권한이 있는 모든 사용자가 저장소를 읽을 수 있으므로 프로젝트 자체가 비공개라고 가정합니다.


답변

질문은 Gitlab에 관한 것이지만이 질문은 Google 검색에서 순위가 ​​상당히 높으므로 Github에서 얻은 유사한 문제를 해결하는 방법에 대한 추가 정보가 있습니다.

나를 위해 URL을 변경하는 것만으로 작동하지 않았습니다. 이 문제를 해결하기 위해 수행해야하는 단계는 다음과 같습니다.

  • git+ssh://git@github.com:owner/repo.git#master
  • 배포 키를 만들고 저장소에 추가
  • ~/.ssh/config기본 ssh 키 대신 DeployKey를 사용하도록 git config ( 파일이없는 경우 생성)를 편집 합니다.

그 후 npm 설치가 간단히 작동했습니다. 다른 모든 옵션 및 솔루션은 npm 설치 중단으로 인해 발생했습니다.


답변

그것은 REPO (예에 대한 직접 링크를 지원하지 않는 것 같습니다 – 그냥이를 통해 실수를 한단다 다른 사람을 위해, 나는 그것이 전혀 이상 HTTPS 일 수 없었다 https://git.domain.com/user/somerepo.git),도 그것은을 지원하지 않습니다 .tar, .tar.bz또는 .zip아카이브 버전.

.tar.gz아카이브 에서만 작동하는 것 같습니다 .

전체 예 (태그 된 버전 포함) :

https://git.domain.com/user/somerepo/repository/archive.tar.gz?ref=v1.2.3


답변

다른 답변 중 어느 것도 개인 gitlab.com 저장소에 대해 나를 위해 일하지 않았습니다.

그러나 이것은 작동합니다.

npm i -S git+ssh://git@gitlab.com:<org>/<project>.git

프로젝트 페이지의 “clone”입력 필드에있는 git ssh 복제 URL git+ssh://이 앞에 추가됩니다.


답변

내가 어디에서 잘못되고 있는지 말할 수있는 한 git://프로토콜입니다. GitLab은 클론에 대해 HTTP (s) 및 SSH 만 지원합니다. 따라서 git 프로토콜 대신 이러한 방법 중 하나를 사용해야합니다.