我在存储库中有一个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"
有没有类似的问题?
答案 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键中删除密码,它可以正常工作。