Jenkins引用sshkey凭据
原始问题:Jenkins job中,用户脚本中如何使用已经配置好的ssh-key凭据?
有时一个项目的编译,依赖另一个项目的部分代码。同样的场景再度上演了!在Jenkins流水线中,主仓库的clone很简单,直接配置使用哪个凭据就好了。如下图所示,ci-key-2是一个jenkins凭据,类型为ssh username with private key.


配置好了直接使用就行。Jenkins后台会自动使用这个key去配置git,拉取远程仓库(主)。
但是当我们在用户脚本中去拉远程仓库,事情变得不一样了。执行脚本的环境,git未经过配置,所以要么会报错没有权限,要么报错仓库找不到。那既然已经有这个ci-key-2有权限拉取远程仓库(主),那能不能用这个key拉取依赖仓库呢?
当然可以,闲话少叙。只要在jenkins job中,“构建环境→绑定”配置中,把这个key注入到环境变量中即可。

然后,替换掉git ssh协议使用的命令,指定用我们临时生成的ssh-key文件。这样,在后续用户脚本中的git命令连接远程仓库时,都会用上这个key,也就能够成功拉取数据。

在编译日志中可见,git执行成功。

TIP
可以使用
git ls-remote <repo-url>来测试git配置的连通性。