簡體   English   中英

使用 Jenkins 從 Artifactory 獲取 BuildInfo

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM