在Jenkins的npm安装期间访问私有存储库

时间:2016-07-07 19:24:33

标签: git jenkins npm

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

"dependencies": {
    "qc-event-logger": "git+ssh://git@git-ssh.XXXXXXXXX.com/qc-event-logger.git#v1.0.0"
},

我能够在本地运行和构建它,一切正常。问题是当我尝试从我们的Jenkins构建服务器进行部署时。 npm install构建任务挂起。它不会失败或抛出异常,它只是坐在那一步上,直到我杀死构建代理。

我无法确定,但我认为它失败了,因为它没有为节点包提供ssh密钥。我尝试添加SSH密钥凭证: enter image description here

但这似乎只与将整个项目拉下来有关,而我无法找到将凭据附加到构建任务的任何方法。我尝试将主应用程序的git repo的凭据切换到SSH,但它没有这样设置。

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

在命令行指定SSH密钥

2 个答案:

答案 0 :(得分:1)

问这个问题已经有两年了,但是它也非常准确地描述了我所处的状况,因此,我将解释如何在其他人也遇到相同情况的情况下解决这个问题。 / p>

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

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

解决此问题的方法是自行创建{/ 1或将服务器添加到)~/.ssh/known_hosts。最简单的方法是从jenkins服务器手动运行ssh <my git server>。然后它将询问有关指纹的信息,这一次您可以说yes。完成此操作后,它将不会再询问,并且构建也不应挂起。

答案 1 :(得分:0)

我解决了这个问题,从jenkins用户生成了一个ssh密钥。 首先,我在jenkins主机上通过ssh连接。

然后,我使用jenkins用户(而不是当前用户或root用户)生成ssh私钥和公钥。 我将举一个位桶示例:

su - jenkins
ssh-keygen -f ~/.ssh/bitbucket -C "bitbucket"

然后,您应该创建一个配置文件,以便在每个bitbuket请求中使用此ssh密钥。

touch ~/.ssh/config
chmod 755 ~/.ssh/config

echo "# Bitbucket configuration" > ~/.ssh/config
echo "Host bitbucket.org" >> ~/.ssh/config
echo "   HostName bitbucket.org">> ~/.ssh/config
echo "   IdentityFile ~/.ssh/bitbucket">> ~/.ssh/config

最后更新ssh配置并添加bitbucket私钥:

ssh-add ~/.ssh/bitbucket

您可以检查Everythig是否正常,请通过以下命令ssh-add -l进行检查,并返回包含私钥配置的行。