【问题标题】:Groovy - Unable to upload artifact in JFrog ArtifactoryGroovy - 无法在 JFrog Artifactory 中上传工件
【发布时间】:2019-09-14 05:41:37
【问题描述】:

在下面的代码中:

def server = Artifactory.server 'server_id';

def uploadSpec = """{
                "files": [{
                    "pattern": "${WORKSPACE}/$repoName/target/$repoName-0.1-$jarType.jar",
                    "target": "libs-release-local/a/b/c/"
                    }
                    ]
            }"""

server.upload(uploadSpec)    

server.upload(uploadSpec) 第一次运行时,不会在libs-release-local 下创建存储库路径a/b/c


Jenkins 以管理员权限连接到 Artifactory

1) 为什么上面的代码没有在 Artifactory 中创建上传工件的存储库路径?

2) server.upload 内部是否使用 JFrog cli?

【问题讨论】:

  • 如何诊断问题? Jenkins在运行server.upload(uploadSpec)后在控制台输出中没有显示任何错误@

标签: jenkins-pipeline artifactory jenkins-groovy jfrog-cli


【解决方案1】:

1) 只有上传工件时才会在存储库下创建路径。如果没有发生错误并且没有创建路径,我假设该模式没有找到任何匹配项并且没有上传任何工件。

至于您的评论,您可以通过将 'failNoOp' 设置为 true 来诊断问题,如果没有文件受到影响,这将导致构建失败:

server.upload(uploadSpec, true) 

对于每个上传的工件,控制台输出还将包含一行“部署工件:/path/to/artifact”。

2) 不,Jenkins Artifactory 插件根本不依赖 JFrog CLI。

【讨论】:

    【解决方案2】:

    您可以为此使用 jfrog 的 REST API:https://www.jfrog.com/confluence/display/RTF/Artifactory+REST+API

    并使用 curl 放置您的工件。

    例如。

    sh("curl -u username:password@ -X PUT \"${mavenRepo}/${relativeMavenPath}/${serviceName}/${serviceTag}/${serviceName}-${serviceTag}.jar\" -T services.jar")
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-20
      相关资源
      最近更新 更多