在Jenkins上进行npm安装期间访问私有存储库

Jes*_*seF 6 git npm jenkins

我创建了一个节点包,希望在公司的主应用程序中使用。我的软件包和应用程序都存储在私有git存储库中。这是我package.json文件的相关部分:

"dependencies": {
    "qc-event-logger": "git+ssh://git@git-ssh.XXXXXXXXX.com/qc-event-logger.git#v1.0.0"
},
Run Code Online (Sandbox Code Playgroud)

我能够在本地运行和构建它,并且一切正常。问题是当我尝试从我们的Jenkins构建服务器进行部署时。在npm install构建任务挂起。它不会失败或引发异常,它只会停留在该步骤上,直到我杀死构建代理为止。

我不确定,但是我认为它失败了,因为它没有为节点包提供ssh密钥。我尝试添加SSH密钥凭证: 在此处输入图片说明

但这似乎只与拉下整个项目有关,我找不到将凭证附加到构建任务的任何方法。我尝试将主应用程序的git repo的凭据切换为SSH,但未采用这种方式进行设置。

有没有办法:a)将SSH密钥附加到Jenkins构建任务,或b)在调用之前npm install或作为参数在命令行中指定SSH密钥?

Jas*_*per 3

自从提出这个问题以来已经有两年了,但它也非常准确地描述了我所处的情况,所以我将解释我如何设法解决这个问题,以防其他人也发现自己处于同样的情况。

基本上,在这种情况下,您不需要将凭据添加到 jenkins 中的构建中。如果id_rsa存在于该位置并且具有正确的权限,git 实际上会自动拾取它。

然而,它挂起的原因(无论如何对我来说)是它询问是否将 ssh 指纹添加到文件中known_hosts。由于某种原因,詹金斯没有显示这个问题,并且由于服务器正在等待输入,它似乎挂起。

解决这个问题的方法是自己创建(/添加服务器)~/.ssh/known_hostsssh <my git server>最简单的方法是手动从 jenkins 服务器运行。然后它会询问指纹,这次你可以说yes。完成此操作后,它不会再次询问,并且构建不应再挂起。