![](/img/trans.png)
[英]Download single file from private Git repository in declarative Jenkins pipeline
[英]Jenkins pipeline private repository dependency
我在存储库中有一个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"
有没有类似的问题?
当我在本地进行纱线安装时,它完美地工作,但在jenkins中它失败了
这是一个典型的git,它没有在你期望的地方搜索(应该在运行Jenkins / .ssh的帐户中)
调试这个的一个好方法是设置变量GIT_SSH_COMMAND=ssh -v
(使用JENKINS EnvInject插件 ),以便在使用ssh协议调用git时查看使用了哪些键。
OP增加:
我选择从ssh键中删除密码,它可以正常工作。
这表明缓存密码的ssh-agent正在用户帐户中运行,但不在Jenkins帐户中运行。
感谢VonC消息,我调试jenkins:
ssh -v bitbucket.org
我能够看到问题是jenkins试图发起一个tty来询问密码
debug1: read_passphrase: can't open /dev/tty: No such device or address
最后我选择从ssh键中删除密码,它可以正常工作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.