我有一个包含多个步骤的TeamCity构建配置,我希望最后一步是Sonar。步骤是这样的:
clean deploy -DskipITs
verify
sonar:sonar
据我所知,这应该有效,因为Sonar不需要在同一个Maven反应堆中编译源。它确实有效。其他时候,我得到一些神秘的错误消息,如:
[ERROR] Failed to execute goal org.sonarsource.scanner.maven:sonar-maven-plugin:3.4.0.905:sonar (default-cli) on project org.acme.project: Maven session does not declare a top level project -> [Help 1]
OR
[ERROR] Failed to execute goal org.sonarsource.scanner.maven:sonar-maven-plugin:3.4.0.905:sonar (default-cli) on project org.acme.project.build: Not inside a Git work tree: C:\TeamCity\buildAgent\work\9aeba6ee3e5dd34c\org.acme.project.it -> [Help 1]
(项目org.acme.project.it
当然是最后一个模块,因此Sonar之前已经分析了其他所有内容。)
我检查了日志并将其与工作版本进行了比较。 不在Git工作树中的区别是添加以下行:
[INFO] SCM provider for this project is: git
对于 Maven会话未声明顶级项目,在调用Maven Sonar插件后立即失败:
[09:55:46][Step 3/3] [INFO] --- sonar-maven-plugin:3.4.0.905:sonar (default-cli) @ org.acme.project ---
[09:55:46][Step 3/3] [INFO] User cache: C:\Windows\system32\config\systemprofile\.sonar\cache
[09:55:46][Step 3/3] [INFO] SonarQube version: 6.7.1
[09:55:46][Step 3/3] Failed to execute goal org.sonarsource.scanner.maven:sonar-maven-plugin:3.4.0.905:sonar (default-cli) on project org.acme.project: Maven session does not declare a top level project
这两条错误消息的信息非常少,而且两者的谷歌搜索结果都很稀疏。
但是,如果我使用Maven命令clean verify sonar:sonar
,一切正常。 (但由于错误信息不可重现,这可能是巧合。)
如何在TeamCity中创建可重现的Sonar构建?