【问题标题】:How to provide specific Jfrog arifactory path in Jenkins groovy script for retention strategy如何在 Jenkins groovy 脚本中为保留策略提供特定的 Jfrog arifactory 路径
【发布时间】:2022-01-06 08:47:47
【问题描述】:

我想为日志轮换策略使用特定的工件路径。我们只需要在工件中保留 5 个最新版本。我们成功地将 jenkins 构建加载到指定的工件路径,但是我们无法将路径链接到 buildInfo 变量以进行删除/保留。如果我们不指定路径,它不会抛出错误,但它会转到某个默认目录,并且不会从清单中指定的路径中删除构建。我们不能使用 CURL,因为工件配置是在管理员级别定义的。所以需要从环境变量中选择用户名和密码。

stage('Artifactory: Upload and retention') {
def server = Artifactory.server 'abc-xyz'
def buildInfo = Artifactory.newBuildInfo()   

def upload_spec_bin = """{
    "files": [
        {
            "pattern": "${cyncapp_binary_name}",
            "target": "generic-local/orgproj/cyncapp/${env.BUILD_NUMBER}/"
        }
    ]
}"""
server.upload spec: upload_spec_bin

def upload_spec_manifest = """{
    "files": [
        {
            "pattern": "cyncapp_manifest.txt",
            "target": "generic-local/orgproj/cyncapp/${env.BUILD_NUMBER}/"
        }
    ]
}"""
server.upload spec: upload_spec_manifest

//def build_info = server.upload spec: upload_spec_manifest        
build_info.retention maxBuilds: 5,deleteBuildArtifacts: true        
server.publishBuildInfo buildInfo

}

【问题讨论】:

    标签: continuous-integration jenkins-pipeline devops artifactory jfrog


    【解决方案1】:

    构建保留中没有“路径”。构建保留应该删除构建的所有工件。 为确保构建保留删除您的构建工件,请确保在上传阶段将它们附加到 buildinfo 对象:

    ...
    server.upload spec: upload_spec_bin, buildInfo: buildInfo
    ...
    server.upload spec: upload_spec_manifest, buildInfo: buildInfo
    

    工作完成后,我建议在 Artifactory UI 的 builds 选项卡中检查已发布的模块,并确保所有工件都在那里。

    在此处阅读有关构建保留的更多信息:

    1. Triggering build retention
    2. Example

    【讨论】:

    • stage('Artifactory: Upload') { def server = Artifactory.server 'abc' def buildInfo = Artifactory.newBuildInfo() buildInfo.env.capture = true buildInfo.env.collect() buildInfo.保留 maxBuilds: 5,deleteBuildArtifacts: true def upload_spec_bin = """{ "files": [ { "pattern": "${cyncapp_binary_name}", "target": "generic-local/orgproj/cyncapp/${env.BUILD_NUMBER }/" } ] }""" server.upload spec: upload_spec_bin, buildInfo: buildInfo buildInfo.retention maxBuilds: 5,deleteBuildArtifacts: true server.publishBuildInfo buildInfo
    • //Excerpt from Output Log [consumer_0] Deploying artifact: XXX.XX.XX.XXX:8081/artifactory/generic-local/orgproj/cyncapp/76/… [Pipeline] publishBuildInfo Deploying build info... Build-info 成功部署。在 XXX.XX.XX.XXX:8081/ui/builds/Aakash/76/1641732911875/published 发送构建保留请求、删除构建工件、要存储的最大构建数量的 Artifactory 中浏览它:5. [Pipeline] } [Pipeline] // stage [Pipeline] } [Pipeline] // 节点 [Pipeline]管道结束:成功
    • 如您所见,构建被部署在正确的目录中,但是,删除请求是在不同的路径中发送的。
    • 我检查了一下,上传策略似乎只适用于 JFrog Artifactory 专业版,因为我们使用的是普通版本,因此它不起作用。我会建议是否有人可以提供一种替代方法来实施构建保留策略。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-02-18
    • 1970-01-01
    • 2020-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多