Git Jenkins管道专用存储库依赖项

Git Jenkins管道专用存储库依赖项,git,ssh,bitbucket,jenkins-pipeline,yarnpkg,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: l

我在一个存储库中有一个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"
有没有类似的问题

当我在本地安装纱线时,它工作得很好,但在詹金斯却失败了

这是典型的git,它不会在您期望的地方搜索(应该在运行Jenkins/.ssh的帐户中)

调试这一点的一个好方法是设置变量
GIT\u SSH\u COMMAND=SSH-v
(带),以便在使用SSH协议调用GIT时查看使用了哪些密钥

OP补充道:

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

这表明将缓存密码短语的在用户帐户中运行,但在Jenkins帐户中不运行。

谢谢VonC消息,我 使用以下工具调试jenkins:

ssh -v bitbucket.org
我可以看出问题在于jenkins试图启动tty来询问密码短语

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

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

为了避免tty问题,您可以使用ssh-Tv bitbucket.org,但是,不使用密码短语很简单。我编辑了我的答案以解决您的观察。