2017-04-06 59 views
4

我正在開發一個內部項目並希望在組內共享一個工具。如何在NPM中使用gitlab repo與package.json

但如果我使用npm工具。它要麼申請該模塊已在npm網站或公共git回購註冊。

我正在使用gitlab。並有一個私人令牌。 git+https://gitlab-ci-token:\<private token>@<domain>/<username>/<repo_name>.git 我試圖把它這樣在package.json ,但它不工作。

有沒有辦法通過授權安裝私人gitlab倉庫?

非常感謝。

+0

重度相關(檢查第二個答案):http://stackoverflow.com/q/28728665/1233251 –

+0

@ E_net4是的。我也看到那篇文章。但是那個使用github。我嘗試了兩個。但似乎gitlab不使用與github相同的方式。 –

+0

http://stackoverflow.com/a/43774869/2179157 –

回答

9

如果我正確理解你的問題,你希望你的CI管道運行npm能夠從你的gitlab中拉出一個私人項目作爲依賴。

在這種情況下,您可以在gitlab中使用deploy keys機制(請參閱here)。

首先生成SSH密鑰對。你可以使用ssh-keygen -t rsa

然後轉到私有存儲庫的gitlab頁面並找到Deploy Keys設置。在那裏你應該粘貼你剛剛生成的公鑰。

然後轉到在CI中運行npm的項目並找到Variables頁面。例如,創建一個名稱爲SSH_PRIVATE_KEY的新私有變量,並粘貼您在那裏生成的私鑰。

最後,在.gitlab-ci.yml文件中添加以下,這樣你的私鑰將提供給您的CI環境:

- 'which ssh-agent || (apt-get update -y && apt-get install openssh-client -y)' 
# Run ssh-agent (inside the build environment) 
- eval $(ssh-agent -s) 
# Add the SSH key stored in SSH_PRIVATE_KEY variable to the agent store 
- ssh-add <(echo "$SSH_PRIVATE_KEY") 
- mkdir -p ~/.ssh 
- '[[ -f /.dockerenv ]] && echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config' 

您的CI環境現在應該設置,使得可以拉你的私人資料庫。

+0

感謝您的回覆。 但我真正想問的是。 我有一個package.json文件的項目。 我如何建立一個依賴與正確的模式或URL與私人gitlab回購 –

+0

如果你做我的答案描述,那麼你可以添加你的package.json與''git + ssh:// git @// .git「' – Jawad

+0

@Jawad在Gitlab CI管道中應該使用什麼用戶名? – 7hibault

相關問題