我正在开发一个内部项目,并希望在该组内共享工具。
但如果我使用npm工具。它要么是要求模块在npm网站上注册,要么是公共git repo。
我正在使用gitlab。并且有一个私人令牌。
git+https://gitlab-ci-token:\<private token>@<domain>/<username>/<repo_name>.git
我试着把它放在package.json中
但它不起作用。
有没有办法用授权安装私有gitlab仓库?
非常感谢。
答案 0 :(得分:8)
如果我正确理解您的问题,您希望运行npm的CI管道能够从您的gitlab中提取私有项目作为依赖项。
在这种情况下,您可以在gitlab中使用部署密钥机制(参见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环境,以便可以拉出您的私人存储库。