![](/img/trans.png)
[英]how to get build dependencies from Artifactory buildInfo in jenkins pipeline
[英]Get BuildInfo From Artifactory Using Jenkins
使用 Jenkins DSL,我可以使用 Artifactory.newBuildInfo 创建和发布构建信息,但我正在寻找补充方法来读取在 Artifactory 上生成的 BuildInfo JSON 数据。 已经浏览了许多资源。 任何建议,将不胜感激。
从Artifactory REST API看来,您确实可以检索 buildInfo。 我希望这也必须从 jenkins 插件中公开。
Build Info
Description: Build Info
Since: 2.2.0
Security: Requires a privileged user with deploy permissions (can be anonymous)
Usage: GET /api/build/{buildName}/{buildNumber}
Produces: application/vnd.org.jfrog.build.BuildInfo+json
...
JFrog 在 github 上的项目示例和他们的jenkins 插件一样是极好的资源
通过快速搜索,您似乎定义了一个下载规范,然后使用 server.download 方法(请参阅在 Jenkins 中使用管道作业
def buildInfo1 = server.download downloadSpec
上一个答案创建了一个新的 buildInfo,它不会将原始 buildInfo 下载到我已经尝试了几天试图弄清楚如何做原始海报想要做的事情。 我成功的最好方法是将 buildinfo 下载到哈希表中,使用它,然后通过 REST 调用上传更改。
def curlstr = "curl -H 'X-JFrog-Art-Api:${password}' ${arturl}api/build/${buildName}/${buildNumber}"
def buildInfoString = sh(
script: curlstr,
returnStdout: true
).trim()
buildInfo = (new JsonSlurperClassic().parseText(buildInfoString))
sh("echo '${JsonOutput.toJson(buildInfo)}'|curl -XPUT -H 'X-JFrog-Art-Api:${password}' -H 'Content-Type: application/json' ${arturl}api/build --upload-file - ")
我能够使用这种技术修改工件存储库中的 buildInfo。 没有我想要的那么干净。 我也无法让 jfrogCLI 修改现有的 buildInfo 文件。
对于任何值得我尝试做的事情的意图是推广 docker 工件并在执行时更改名称。 我发现没有办法向工件表达这一点,而不涉及将工件下载到 docker 然后再次推送它。 如果来自@jfrog 的人能告诉我如何做,我会很高兴。
更新:注意! 我问错了。 这是您在声明性管道脚本中获取本地 BuildInfo-Object 的方式。
我通过使用来自 jenkins-artifactory-plugin 的内部 api 来管理这个。
// found in org.jfrog.hudson.pipeline.declarative.utils.DeclarativePipelineUtils
/**
* Get build info as defined in previous rtBuildInfo{...} scope.
*
* @param rootWs - Step's root workspace.
* @param build - Step's build.
* @param customBuildName - Step's custom build name if exist.
* @param customBuildNumber - Step's custom build number if exist.
* @return build info object as defined in previous rtBuildInfo{...} scope or a new build info.
*/
public static BuildInfo getBuildInfo(FilePath rootWs, Run<?, ?> build, String customBuildName, String customBuildNumber, String project) throws IOException, InterruptedException {
...
}
使用此代码,您可以在声明性管道脚本步骤中获取 BuildInfo。
def buildInfo = org.jfrog.hudson.pipeline.declarative.utils.DeclarativePipelineUtils.getBuildInfo(new hudson.FilePath(new java.io.File(env.WORKSPACE)), currentBuild.rawBuild, null, null, null);
更新:当心自定义构建名称和编号。 如果您定义了自定义构建名称和/或构建编号,则必须通过getBuildInfo
调用为其提供。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.