我创建了一个节点包,希望在公司的主应用程序中使用。我的软件包和应用程序都存储在私有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密钥?
自从提出这个问题以来已经有两年了,但它也非常准确地描述了我所处的情况,所以我将解释我如何设法解决这个问题,以防其他人也发现自己处于同样的情况。
基本上,在这种情况下,您不需要将凭据添加到 jenkins 中的构建中。如果id_rsa
存在于该位置并且具有正确的权限,git 实际上会自动拾取它。
然而,它挂起的原因(无论如何对我来说)是它询问是否将 ssh 指纹添加到文件中known_hosts
。由于某种原因,詹金斯没有显示这个问题,并且由于服务器正在等待输入,它似乎挂起。
解决这个问题的方法是自己创建(/添加服务器)~/.ssh/known_hosts
。ssh <my git server>
最简单的方法是手动从 jenkins 服务器运行。然后它会询问指纹,这次你可以说yes
。完成此操作后,它不会再次询问,并且构建不应再挂起。
归档时间: |
|
查看次数: |
2104 次 |
最近记录: |