【问题标题】:how to use gitlab repo in NPM with package.json如何在 NPM 中使用带有 package.json 的 gitlab 存储库
【发布时间】:2017-04-06 07:44:28
【问题描述】:

我正在做一个内部项目,想在小组内分享一个工具。

但如果我使用 npm 工具。它要么请求模块已在 npm 网站或公共 git repo 上注册。

我正在使用 gitlab。并且有一个私人令牌。 git+https://gitlab-ci-token:\<private token>@<domain>/<username>/<repo_name>.git 我试着把它放在 package.json 中 但它不起作用。

有没有办法通过授权安装私有 gitlab 存储库?

非常感谢。

【问题讨论】:

标签: npm gitlab package.json


【解决方案1】:

如果我正确理解您的问题,您希望运行 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 环境,以便可以提取您的私有存储库。

【讨论】:

  • 感谢您的回复。但我真正想问的是。我有一个带有 package.json 文件的项目。我如何使用私有 gitlab repo 建立具有正确架构或 url 的依赖关系
  • 如果您按照我的回答中所述进行操作,则可以使用 "git+ssh://git@&lt;gitlaburl&gt;/&lt;username&gt;/&lt;repo_name&gt;.git" 在 package.json 中添加您的私有存储库
  • @Jawad 在 Gitlab CI 管道中应该使用什么用户名?
  • @7hibault 连接到 gitlab repo 的 ssh 用户总是 git,所以 SSH URL 总是看起来像 git@&lt;gitlab_domain&gt;/&lt;username&gt;/&lt;project&gt;.git
  • 在我上面的两个 cmets 中,它应该是 git@&lt;gitlab_domain&gt;:&lt;username&gt;/&lt;project&gt;.git(注意域和用户名之间的 : 而不是 /
猜你喜欢
  • 2013-05-25
  • 2013-02-15
  • 1970-01-01
  • 2015-06-24
  • 2016-03-05
  • 2015-06-01
  • 2019-06-21
  • 2021-05-13
  • 2016-03-30
相关资源
最近更新 更多