gitlab 개인 저장소에서 npm 모듈 설치
우리는 개인 프로젝트에 GitLab을 사용하고 있습니다.npm 모듈로 설치하고 싶은 github의 forked library가 있습니다.해당 모듈을 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
에서, 저는 이 URL GitLab을 .git@git.domain.com:library/grunt-stylus-sprite.git을 상대로 것. npm install를 설치하려고 .git registrynpm registry.npm registry.module from npm registry.
URL :git+ssh@git.domain.com:library/grunt-stylus-sprite.git 묻네요 비밀번호를 키에 제 같습니다것없었던암호가 포함되어 로드할 수 키를 해당 않아서 있지 갑자기 doesn 같습니다 것 없었던 ssh , 갑자기 제 phrase pass ssh my 묻네요 key t include ' 비밀번호를 i so it 수 키에 assume 로드할 wasn 키를 that 해당 암호가 않아서 포함되어 있지 key t ' load able to갑자기 <T>키된이은요는?요된은? 키는 홈 디렉토리의 표준 위치에 있습니다. 이름은 다음과 같습니다."id_rsa".
저는 윈도우 7 x64에 있습니다.
갱신하다
NPM v3부터는 GitLab 및 기타 소스(BitBucket, Gist)에 대한 지원이 내장되어 있으며, 이를 통해 패키지를 설치할 수 있습니다.공공 및 개인용으로 사용할 수 있기 때문에 정확한 관련은 없지만 일부에서는 유용하다고 생각할 수도 있습니다.
npm install gitlab:<gitlabname>/<gitlabrepo>[#<commit-ish>]
문서 확인: https://docs.npmjs.com/cli/install
하려면 Gitlab에서 증명. 이 경우 Gitlab에서 자격 증명/auth-token을 관리해야 ..npmrc. 다음을 참조하십시오. https://docs.gitlab.com/ee/user/packages/npm_registry/ #중간 사이트
개인 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}
갱신하다
에서 언급한처럼 (감사합니다 @ @felix 에서 처럼 (합니다 @felix) 을 한 합니다 을 .deploy token는 Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ ΔΔ Δ Δ Δ Δ Δ Δ Δ ΔΔ Δ gitlab는 해당 수 뿐 할 수 . 이렇게 하면 토큰이 손상되고 공격자는 해당 저장소를 읽을 수 있을 뿐 변경할 수 없습니다.
- 에 합니다.
GitLab계좌. - 토큰 배포를 만들 프로젝트로 이동합니다.
- Settings > Repository로 이동합니다.
- 하기 클릭
Expand[토큰 전개] 섹션에서 확인할 수 있습니다. - 토큰의 이름과 만료 날짜(선택사항)를 선택합니다.
- 원하는 스코프를 선택합니다.= = >
read_repository - Create deploy token을 클릭합니다.
- 배포 토큰을 안전한 곳에 저장합니다.페이지를 나가거나 새로 고치면 다시 액세스할 수 없습니다.
구답
에 가다User Settings > Access Tokens그리고 새로운 것을 창조합니다.access token와 함께read_registry허가.
된 복사 token, 우리는 그것이 필요합니다.package.json파일.파일.
은 에 package.json을을 dependency아래와 같이
"my-module": "git+https://Xaqron:token@gitlab.com/Xaqron/my-module"
교체 Xaqron의과자과를 합니다.token생성된 토큰으로지정할 수 있습니다.branch그리고.tagurl의 끝에 에#{branch|tag}.
참고: 액세스 토큰이 위치해 있으므로package.json이 프로젝트에 접근할 수 있는 사람은 누구나 저장소를 읽을 수 있으므로 프로젝트 자체는 비공개라고 생각합니다.
git://,사용하다git+ssh://그리고 npm은 옳은 일을 해야 합니다.
Gitlab에 대한 질문이지만, 이 질문은 구글 검색에서 꽤 좋은 순위를 차지하고 있습니다. 그래서 여기 제가 Github에서 받은 비슷한 문제를 해결하는 방법에 대한 몇 가지 정보가 있습니다.
저는 url만 변경해도 되지 않았습니다.다음은 이 문제를 해결하기 위해 수행해야 하는 단계입니다.
git+ssh://git@github.com:owner/repo.git#master- 배포 키를 생성하여 repo에 추가합니다.
- 구성 (git ()
~/.ssh/config파일을 를하여 기본 키 하도록 강제합니다. 기본 ssh 키 대신 배포 키를 사용하도록 설정합니다.
그 후 npm 설치가 간단히 작동했습니다.다른 모든 옵션과 해결책들은 npm 설치가 깨짐으로 인해 발생했습니다.
제가 짐을 꾸리도록 하겠습니다.아래와 같은 json.
"dependencies": {
"<module-name>": "git+http://<username>:<token>@url.git",
}
토큰은 "프로필 설정 - 액세스 토큰"에서 가져옵니다.
gitlab.com 개인 레포에 대해서는 다른 어떤 답변도 제게 통하지 않았습니다.
이 기능은 다음과 같습니다.
npm i -S git+ssh://git@gitlab.com:<org>/<project>.git
에서 "clone" "gitssh clone URL"로 입니다.git+ssh://그 앞에 추가된.
문제를 발견한 수 것 같습니다: 을 한 을 을 는 를 시킬 을 시킬 를 는 ). 그것은 레포에 대한 직접적인 링크를 지원하지 않는 것 같습니다(예: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
어디가 잘못되었는지 알 수 있는 한git://◦ 에 대해합니다.GitLab은 클론에 대해 HTTP와 SSH만 지원합니다.따라서 git 프로토콜 대신에 그 방법 중 하나를 사용해야 합니다.
이제 Gitlab에는 npm 패키지를 구축, 배포 및 호스팅할 수 있는 패키지 레지스트리가 있습니다.개인 저장소를 사용하면 저장소 내용 및 패키지에 대한 세부 액세스 제어를 제공할 수 있습니다.
는 NPM 는 Gitlab 에서 하여 할 를 추가하여 개인 Gitlab 에서 설치할 수 ..npmrc나란히 줄을 지어 늘어놓다package.json. 자세한 내용은 이쪽.동일한 코드베이스에 있는 서로 다른 저장소에 대해 여러 배포 토큰을 사용할 경우 복잡해질 수 있습니다.
Gitlab을 사용하면 패키지에 액세스할 수 있습니다..tgzHTTPS로 직접 파일을 작성하고 토큰을 배포합니다.다음과 같이 프로젝트 종속성을 추가하기만 하면 됩니다.
"@foo/bar": "https://<username>:<token>@gitlab.com/api/v4/projects/<project-id>/packages/npm/@foo/bar/-/@foo/bar-1.0.0.tgz"
@foo/bar는 URL에 두 번 존재합니다. @foo는 프로젝트 범위, bar는 모듈 이름, 1.0.0은 모듈 이름입니다.project-id(8자리 숫자)는 Gitlab 프로젝트 ID로 이름 아래 프로젝트 페이지에서 확인할 수 있습니다.모듈 이름에서 @foo를 생략할 수도 있지만 링크는 생략할 수 없습니다.
범위가 같고 배포 토큰이 다른 여러 모듈을 사용하면 개인 저장소를 안전하게 관리할 수 있습니다.또한 Deploy 토큰은 다음에 대한 액세스 권한만 가질 수 있습니다.package registry즉, 최종 사용자는 저장소에서 전체 소스 코드에 액세스할 수 없습니다.
이 솔루션은 다음과만 작동합니다.yarn,것은 아니다.npm,그렇지만.....
종속성이 없는 환경에 종속성을 설치해야 하는 경우git도 아니다ssh사용 가능한 실행 파일(내부 도커와 같이), 읽기 API 액세스 권한이 있는 repo access key를 사용하여 tarball 링크를 만든 후 다음과 같이 참조할 수 있습니다.
꾸러미의json
{
"dependencies": {
"your-lib-name": "https://gitlab.com/api/v4/projects/1234567/repository/archive?private_token=ABC_123asdfg&sha=abcdef0123456789abcdef0123456789abcdef01",
위치:
1234567는 귀하의 프로젝트 ID이며, 이는 gitlab Project 개요 페이지에서 확인할 수 있습니다.ABC_123asdfg작성한 API Read 권한이 있는 Project Access Key입니다.abcdef0123456789abcdef0123456789abcdef01커밋 해시입니다.
gitlab 파이프라인과 로컬(ssh 로컬 및 https + CI_JOB_TOKEN)에서 모두 작동하는 안전한 방법을 원하는 경우:
로컬:
- 패키지에 종속성을 넣습니다.json이 이런.
"package-name": gitlab:group-name/repo-name#2.5.31-> 이렇게 하면 로컬에서 ssh를 통해 다운로드할 수 있습니다.
추가 CI 설정:
- npm까지 참조할 repo로 이동하여 파이프라인이 실행되는 repo의 토큰 액세스를 활성화합니다.
- 이것을 npm install 명령 앞 어딘가에 놓습니다.
git config --global url."https://gitlab-ci-token:$CI_JOB_TOKEN@gitlab.com".insteadOf "ssh://git@gitlab.com"-> 이렇게 하면 파이프라인에서도 다운로드할 수 있습니다.
언급URL : https://stackoverflow.com/questions/22988876/install-npm-module-from-gitlab-private-repository
'codememo' 카테고리의 다른 글
| 레이아웃을 부풀려서 사용자 정의 보기를 작성하시겠습니까? (0) | 2023.09.15 |
|---|---|
| 도커 컴포지트를 사용하는 PHP MARIADB PHPMYADMIN 문제 (0) | 2023.09.15 |
| Spring Data JPA Repository에서 save() 후 반환된 인스턴스를 사용하는 이유는 무엇입니까? (0) | 2023.09.10 |
| MySQL 선택에서 업데이트 (0) | 2023.09.10 |
| iframe의 내용에 대해 본문 스타일 재정의 (0) | 2023.09.10 |

