【问题标题】:Jenkins error when publishing artifact to Artifactory将工件发布到 Artifactory 时出现 Jenkins 错误
【发布时间】:2015-04-05 21:18:36
【问题描述】:

我有一个 spring-boot 项目的 gradle 构建作为 Jenkins 的工作。我正在使用 Jenkins 的工件插件将生成的 JAR 发布到我们的工件服务器。

构建成功完成并发布了工件,但是 Jenkins 控制台报告了与 Artifactory 通信的错误(摘自下面列出的控制台)。

我正在使用 Jenkins 1.597、artifactory 插件 2.2.5 和 Artifactory 3.0.3

谁能建议如何解决这个问题或帮助我更好地了解问题所在?

谢谢!

--约翰

:artifactoryPublish
Deploying artifact: http://artifactory.ngdc.noaa.gov/artifactory/jenkins-local/ngdc/hazards/tsunamis/1.0-SNAPSHOT/tsunamis-1.0-SNAPSHOT.jar
Failed while reading the response from: PUT http://artifactory.ngdc.noaa.gov/artifactory/jenkins-local/ngdc/hazards/tsunamis/1.0-SNAPSHOT/tsunamis-1.0-SNAPSHOT.jar;build.name=tsunami;build.timestamp=1423158706241;build.number=42;vcs.revision=afd5283084a119a1e8a2983e0e94cfca7fc14df2 HTTP/1.1
org.codehaus.jackson.JsonParseException: Unexpected character ('<' (code 60)): expected a valid value (number, String, array, object, 'true', 'false' or 'null')
 at [Source: org.apache.http.conn.EofSensorInputStream@b51b399; line: 1, column: 2]
    at org.codehaus.jackson.JsonParser._constructError(JsonParser.java:943)

【问题讨论】:

  • 看起来像是 Artifactory 与插件版本不匹配。 Artifactory 返回 XML,而插件需要 JSON。我会检查更改是在哪个版本中进行的,并会提供完整的答案。
  • 谢谢。虽然有些工作似乎很奇怪,例如grails 工作正常,而其他的,例如gradle 显示错误。
  • 好的,我查过了。 Artifactory 从未为此查询返回 XML :) 问题,Artifactory 和 Jenkins 之间有代理服务器吗?
  • 感谢您的检查。 Artifactory 使用 Jetty 独立运行,但 Jenkins 通过 Apache 来实现它。
  • 我也遇到了同样的错误。我正在使用 Jenkins 版本。 1.601、Artifactory 插件 2.2.7 和 Artifactory 2.6.6

标签: jenkins gradle artifactory


【解决方案1】:

我通过将工件服务器 URL(Jenkins -> 管理 Jenkins -> 配置系统 -> 工件)中的 http 协议更改为 https 解决了这个问题。

所以不是 Artifactory 服务器的 URL

http://my.artifactory.server/artifactory

我有 Artifactory 服务器 URL

https://my.artifactory.server/artifactory

说明

我的工件服务器位于nginx 代理后面,它以HTTP 301(重定向)到http 协议请求进行响应。 Jenkins artifactory 插件不处理此类重定向,需要直接 URL。

您可以使用culr检查您的网址是否直接:

curl -l http://my.artifactory.server/artifactory

回复:

<html>
<head><title>301 Moved Permanently</title></head>
<body bgcolor="white">
<center><h1>301 Moved Permanently</h1></center>
<hr><center>nginx/1.6.3</center>
</body>
</html>

【讨论】:

    【解决方案2】:

    看来升级到 Artifactory 3.6.0 解决了这个问题。现在使用 Jenkins 1.605 和 Artifactory 3.6.0 并且不再看到问题。

    【讨论】:

      【解决方案3】:

      我遇到了同样的问题。我通过将工件 url 添加到非代理主机来解决它,如下所示 管理 Jenkins -> 配置系统 -> 全局属性 检查环境变量,并使用如下名称配置属性

      -Dgradle.user.home=<your .gradle path> -Dhttp.proxyHost=<httpProxy> -Dhttp.proxyPort=<port_of_httpProxyHost> **-Dhttp.nonProxyHosts=<your_artifactory_url>** -Dhttps.proxyHost=<httpsProxy> -Dhttps.proxyPort=<port_of_httpsProxyHost>
      

      【讨论】:

        【解决方案4】:

        我通过将 Allow double escaping 放入 IIS 请求过滤中解决了这个问题。其他代理可能需要类似的设置。

        【讨论】:

          【解决方案5】:

          我的问题是将工件名称-X-0.1-TEST.zip 发布到快照存储库。一旦我将版本更改为 X-0.1-SNAPSHOT,它就会上传。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2016-09-23
            • 2016-03-28
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2012-02-29
            相关资源
            最近更新 更多