Jenkins管道私有存储库依赖

时间:2017-10-30 14:34:41

标签: git ssh bitbucket jenkins-pipeline yarnpkg

我在存储库中有一个Jenkins管道,并且此存储库的package.json具有来自另一个存储库的依赖项(两者都是Bitbucket私有存储库)。当我在本地进行纱线安装时,它完美地工作,但在jenkins中它失败了这个错误:

yarn install v1.2.1
[1/5] Validating package.json...
[2/5] Resolving packages...
error Command failed.
Exit code: 128
Command: git
Arguments: ls-remote --tags --heads ssh://git@bitbucket.org/user/repo.git
Directory: /var/lib/jenkins/workspace/s_repo_branch-
YJRVO7LRN3U452ZV2XNZJUB35FGSW2NXEAUPBCDKUVTKUFAHHBDA
Output:
Permission denied (publickey).
fatal: Could not read from remote repository.

我在主机上添加了ssh密钥,添加为扫描组织文件夹的jenkins凭据(使用Bitbucket分支源插件)并在bitbucket项目中添加了密钥。另一个项目的管道(没有依赖)工作正常,所以我不认为它会成为ssh密钥的问题。 package.json中依赖项的行如下所示:

"repo": "ssh://bitbucket.org/user/repo.git#develop"

也试过

"repo": "git+ssh://bitbucket.org/user/repo.git#develop"

有没有类似的问题?

2 个答案:

答案 0 :(得分:1)

  

当我在本地进行纱线安装时,它完美地工作,但在jenkins中它失败了

这是一个典型的git,它没有在你期望的地方搜索(应该在运行Jenkins / .ssh的帐户中)

调试此方法的一个好方法是设置变量/(使用JENKINS EnvInject Plugin),以便在使用ssh协议调用git时,查看使用了哪些键。

OP补充道:

  

我已选择从ssh密钥中删除密码短语,但它可以正常工作。

表示缓存密码的ssh-agent正在用户帐户中运行,但不在Jenkins帐户中运行。

答案 1 :(得分:0)

感谢VonC留言,我 调试jenkins:

ssh -v bitbucket.org

我能够看到问题是jenkins试图发出一个tty来询问密码短语

debug1: read_passphrase: can't open /dev/tty: No such device or address

最后我选择从ssh键中删除密码,它可以正常工作。