【问题标题】:TeamCity fails deploying to Artifactory - reports "Expected a folder but found a file"TeamCity 无法部署到 Artifactory - 报告“预期文件夹但找到文件”
【发布时间】:2013-10-14 22:48:19
【问题描述】:

我有一个 Maven 构建,它最近可以正常工作并正确部署,但现在无法部署。据我所知,构建设置和 pom.xml 都没有改变。 (我对成功和失败文件夹的 pom 进行了比较,它们是相同的;假设文件夹尚未更新。)

Maven 构建的平衡能够部署。我对所有项目使用相同的模板,以及相同的 settings.xml 文件。

构建成功完成,然后事情变得很奇怪。我查看了 TeamCity 中两个版本的日志,除了失败(此时退出)之外,命令似乎相同。

我注意到的事情:

  1. Artifactory 中的失败日志消息发出mkdir 命令,
  2. 然后稍后警告预期目录但找到文件,
  3. 在搜索那个短语时,我找到了异常类。 FolderExpectedException 代表 Artifactory。
  4. 在失败之前,TeamCity 中的日志看起来都是一样的。
  5. 其他 Maven 构建(使用相同的构建模板和 settings.xml 文件)成功部署。
  6. 我对成功和失败的 pom 进行了比较,没有任何差异。
  7. 目前,我没有来自 Artifactory 的成功日志;不过,我将在机器上进行挖掘,看看是否能找到旧日志。
  8. 在构建代理的两个工作目录中(成功与失败),jar 位于target/mylib.jar
  9. 最大唯一快照设置为0,所以我认为这与this older bug.无关
  10. 如果我将快照从 libs-snapshot-local 移出到列入黑名单的存储库并尝试再次部署...它将创建 5-6-0-SNAPSHOT 根文件夹,但随后会创建与 jar 和 pom 名称相同的空子文件夹!但是 TeamCity 中 target/mylib.jar 中的工件绝对是一个 jar 文件。
  11. TeamCity 8.0.4 内部版本 27616; Artifactory 3.0.1 rev 30008
  12. TeamCity 最近从 8.0.2 升级,当时部署工作正常。我没有尝试回滚它,但是基于相同构建模板的其他构建正在成功部署,所以我认为不是这样,但这可能是接下来要检查的事情。
  13. 工件路径(来自常规设置)是:**/*.jar
  14. 运行此操作的帐户是域帐户并且未被锁定。它可以完全控制每台构建机器上的 TeamCity Build Agent 目录。

问题:

  1. 我还能寻找什么?
  2. 有什么我可以尝试更改的吗?
  3. 我可以做些什么来导出 TeamCity 在成功构建和失败构建中看到的所有内容?

TeamCity 日志 - 成功

[Step 1/1] Publishing artifacts  
[Publishing artifacts] Collecting files to publish:  
    [E:\TCBuildAgent\temp\buildTmp\.tc-maven-bi\maven-build-info.xml.gz  
    => .teamcity]  
[Publishing artifacts] Sending  
    E:/TCBuildAgent/temp/buildTmp/.tc-maven-bi/maven-build-info.xml.gz  
[Step 1/1] Deploying artifacts to http://myserver.com:8081/artifactory  
[Step 1/1] Deploying artifact:  
    http://myserver.com:8081/artifactory/libs-snapshot-local/  
    com/company/myapp/mylib/5.6.0-SNAPSHOT/mylib-5.6.0-SNAPSHOT.jar  
[11:07:24][Step 1/1] Deploying artifact:  
    http://myserver.com:8081/artifactory/libs-snapshot-local/  
    com/company/myapp/mylib/5.6.0-SNAPSHOT/mylib-5.6.0-SNAPSHOT.pom  
[11:07:27][Step 1/1] Deploying build info ...  
[11:07:27][Step 1/1] Deploying build info to:  
    http://myserver.com:8081/artifactory/api/build  

TeamCity 日志 - 失败

[Step 1/1] Publishing artifacts  
[Publishing artifacts] Collecting files to publish: 
    [E:\TCBuildAgent\temp\buildTmp\.tc-maven-bi\maven-build-info.xml.gz => 
    .teamcity]  
[Publishing artifacts] Sending 
    E:/TCBuildAgent/temp/buildTmp/.tc-maven-bi/maven-build-info.xml.gz  
[Step 1/1] Deploying artifacts to http://myserver.com:8081/artifactory  
[Step 1/1] Deploying artifact: 
    http://myserver.com:8081/artifactory/libs-snapshot-local/
    com/company/myapp/mylib/5.6.0-SNAPSHOT/mylib-5.6.0-SNAPSHOT.jar  
[Step 1/1] Error deploying artifact: 
    E:\TCBuildAgent\work\2e99f45d5745c8fa\target\mylib.jar. Skipping 
    deployment of remaining artifacts (if any) and build info.  

Artifactory 日志 - 失败 - 注意 jar 上的 mkdir -p 命令

2013-10-08 18:00:23,718 [http-bio-8081-exec-1424] [INFO ]  
    (o.a.e.UploadServiceImpl:263) - MKDir request to  
    'libs-snapshot-local:com/company/myapp/mylib/5.6.0-SNAPSHOT/mylib-5.6.0-SNAPSHOT.jar'  
2013-10-08 18:00:23,734 [http-bio-8081-exec-1424] [WARN ]  
    (o.a.s.f.l.SessionLockEntry:111) - Mutable item  
    'libs-snapshot-local:com/company/myapp/mylib/5.6.0-SNAPSHOT/mylib-5.6.0-SNAPSHOT.jar'  
    has local modifications that will be discarded.  
2013-10-08 18:00:23,734 [http-bio-8081-exec-1424] [ERROR]  
    (o.a.w.s.RepoFilter :206) - Sending HTTP error code 500: Expected a folder  
    but found a file, at:  
    libs-snapshot-local:com/company/myapp/mylib/5.6.0-SNAPSHOT/mylib-5.6.0-SNAPSHOT.jar  
2013-10-08 18:00:23,734 [http-bio-8081-exec-1425] [INFO ]  
    (o.a.e.UploadServiceImpl:263) - MKDir request to  
    'libs-snapshot-local:com/company/myapp/mylib/5.6.0-SNAPSHOT/mylib-5.6.0-SNAPSHOT.jar'  
2013-10-08 18:00:23,749 [http-bio-8081-exec-1425] [WARN ]  
    (o.a.s.f.l.SessionLockEntry:111) - Mutable item  
    'libs-snapshot-local:com/company/myapp/mylib/5.6.0-SNAPSHOT/mylib-5.6.0-SNAPSHOT.jar'  
    has local modifications that will be discarded.  
2013-10-08 18:00:23,749 [http-bio-8081-exec-1425] [ERROR]  
    (o.a.w.s.RepoFilter :206) - Sending HTTP error code 500: Expected a folder  
    but found a file, at:  
    libs-snapshot-local:com/company/myapp/mylib/5.6.0-SNAPSHOT/mylib-5.6.0-SNAPSHOT.jar  

相关的 pom.xml 条目 %

<groupId>com.company.myapp</groupId>
<artifactId>mylib</artifactId>
<version>5.6.0-SNAPSHOT</version>
<packaging>jar</packaging>
<name>mylib</name>

<properties>
    <maven.build.timestamp.format>yyyy.MM.dd:HH.mm</maven.build.timestamp.format>
    <main.package>com.company.myapp</main.package>
    <build.time>${maven.build.timestamp}</build.time>
</properties>

<distributionManagement>
    <snapshotRepository>
        <id>ciassets</id>
        <name>ciassets-snapshots</name>
        <url>http://myserver.com:8081/artifactory/libs-snapshot-local</url>
    </snapshotRepository>
</distributionManagement>

Artifactory 创建目录而不是 poms 时的日志文件:

2013-10-08 19:12:19,198 [http-bio-8081-exec-1454] [INFO ] 
    (o.a.e.UploadServiceImpl:263) - MKDir request to 
    'libs-snapshot-local:com/company/myapp/mylib/5.6.0-SNAPSHOT/mylib-5.6.0-SNAPSHOT.jar'
2013-10-08 19:12:19,214 [http-bio-8081-exec-1454] [INFO ] 
    (o.a.e.UploadServiceImpl:269) - Directory 
    'libs-snapshot-local:com/company/myapp/mylib/5.6.0-SNAPSHOT/mylib-5.6.0-SNAPSHOT.jar' 
    was created successfully.
2013-10-08 19:12:19,448 [http-bio-8081-exec-1454] [INFO ] 
    (o.a.e.UploadServiceImpl:263) - MKDir request to 
    'libs-snapshot-local:com/company/myapp/mylib/5.6.0-SNAPSHOT/mylib-5.6.0-SNAPSHOT.pom'
2013-10-08 19:12:19,464 [http-bio-8081-exec-1454] [INFO ] 
    (o.a.e.UploadServiceImpl:269) - Directory 
    'libs-snapshot-local:com/company/myapp/mylib/5.6.0-SNAPSHOT/mylib-5.6.0-SNAPSHOT.pom' 
    was created successfully.
2013-10-08 19:12:19,682 [http-bio-8081-exec-1454] [INFO ] 
    (o.a.r.r.c.BuildResource:280) - Adding build 
    'Java Stack :: My App - branch 5.6.0/ #9_412'
2013-10-08 19:12:19,792 [http-bio-8081-exec-1454] [INFO ] 
    (o.a.r.r.c.BuildResource:296) - Added build 
    'Java Stack :: My App - branch 5.6.0/ #9_412'

【问题讨论】:

  • 我会尝试检查失败构建的目录/用户权限。
  • 感谢您的建议。我检查了这个,但它似乎不是权限问题。我对所有 Maven 构建使用相同的构建模板,并且每个构建使用相同的用户。该用户是域用户,并且是每个构建代理上管理员组的成员,并且我已验证它没有被锁定;另外,它仍然适用于其他人。

标签: java maven teamcity artifactory


【解决方案1】:

这原来是 TeamCity 构建配置的问题。我的猜测是它在从 8.0.2 更新到 8.0.4 的过程中被损坏了,但我不能 100% 确定。 我正在向他们提交一个错误。

我确定这是该配置的问题:

  1. 从 Maven 构建模板创建了一个新配置(失败所基于的模板相同)
  2. 使用与损坏配置相同的构建参数设置新配置
  3. 针对新配置启动构建,成功。
  4. 多次验证构建参数相同。

顺便说一句,我做了一个备份,然后将它们复制到 TeamCity 中的一个新项目中。当我这样做时,它们都成功了,包括主项目中失败的副本的副本。

在原始项目中,它似乎也停留在较旧的版本上。希望他们能阐明它失败的原因(并可能在未来提供更好的错误消息),但是,我能够绕过它。

【讨论】:

  • 我在 6 小时内无法将此标记为已解决。我将标记它明天解决。
猜你喜欢
  • 1970-01-01
  • 2018-10-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-01
  • 1970-01-01
  • 2020-02-08
  • 1970-01-01
相关资源
最近更新 更多