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配置的连通性。

非Maven项目如何部署artifacts

可以在构建脚本中打包好artifact,然后调用API请求上传到artifactory仓库。

curl -u username:password -X PUT "http://artifactory.example.com/artifactory/libs-release-local/path/to/file.jar" -T localfile.jar

支持直接创建远程目录,在路径中指定即可。例如,

$ curl -X PUT "http://artifactory.example.com/artifactory/mdl-master/somedir/test.json" -T test.json
{
  "repo" : "mdl-master",
  "path" : "/somedir/test.json",
  "created" : "2025-11-18T14:23:16.876+08:00",
  "createdBy" : "anonymous",
  "downloadUri" : "http://artifactory.example.com/artifactory/mdl-master/somedir/test.json",
  "mimeType" : "application/json",
  "size" : "834",
  "checksums" : {
    "sha1" : "461c815adf3ba257fc7ea6cf705a6e8fb2e0c344",
    "md5" : "06c3862a164f688e0269b1722bd03545",
    "sha256" : "0c82fe8190971d42ea7334afce5230267e96c7c47962caeaa2a9d64f80c30512"
  },
  "originalChecksums" : {
    "sha256" : "0c82fe8190971d42ea7334afce5230267e96c7c47962caeaa2a9d64f80c30512"
  },
  "uri" : "http://artifactory.example.com/artifactory/mdl-master/somedir/test.json"
}

Jenkins API token

Jenkins有REST API,以及平时如果想从jenkins直接下载编译产物,工作空间中的文件,都是需要登录的。此时使用用户名密码自然可以,但类似github,jenkins其实还提供了token的方式。使用用户名+token的方式也可以操作包括,

  • 从Jenkins下载文件
  • 调用Jenkins api
# 查询最新编译序号
curl -u '<JENKINS_USER_NAME>:<JENKINS_API_TOKEN>' http://jenkins.ci.datayes.com/job/mdl-linux-release/lastBuild/buildNumber
1050
 
# 下载workspace文件
curl -u '<JENKINS_USER_NAME>:<JENKINS_API_TOKEN>' -LO http://jenkins.ci.datayes.com/job/mdl-linux-release/ws/build/make/bin/sdk/libmdl_api.so
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  225M  100  225M    0     0  4897k      0  0:00:47  0:00:47 --:--:-- 5179k