[英]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.