Hudson/Jenkins PMD配置

3
我刚开始配置Jenkins,对此还不熟悉。目前为止,我已经完成了以下操作:
  1. 安装并配置Jenkins以显示主页。添加了PMD插件。
  2. HUDSON_HOME设置为特定目录 > C:\Work\Jenkins
  3. 配置一个测试构建来运行一个简单的无操作ant脚本。它成功运行。

  4. 编写一个独立的pmdbuild.xml文件,在C:\myview(我使用clearcase)中的一组文件上运行检查。该xml还将输出的pmd_results.xml复制到$HUDSON_HOME/[job-name]/workspace工作区目录中。

  5. 现在,我将pmdbuild.xml作为我的主要构建步骤之一。因此,我的构建有两个步骤: a. 运行一个简单的脚本,什么也不做。 b. 运行pmdbuild.xml,生成pmd_results.xml并将其放置在$HUDSON_HOME/[job-name]/workspace(硬编码,因为Jenkins PMD插件期望在那里找到文件)

  6. Jenkins自动使用插件获取pmd_results.xml并显示警告和其他信息。

现在出现了问题:
  • 如果我在PMD结果中单击文件名,它会抛出filenotfound异常,因为它正在寻找位于$HUDSON_HOME/[job-name]/workspace的源文件。

  • 我的Java代码文件放在C:\myview(一个clearcase快照视图)中

我的问题是,我需要将所有代码文件都放在$HUDSON_HOME/[job-name]/workspace中吗?也就是说,我不能告诉Jenkins在C:\myview或任何其他目录中查找PMD输入文件,而不是在$HUDSON_HOME/[job-name]/workspace中吗?
1个回答

3
Jenkins希望所有的代码都在工作区中。通常,Jenkins用于将代码的一个副本检出到工作区,然后在工作区中的源代码上运行所有构建步骤。这可能一开始看起来有些限制,但如果您需要将Jenkins移动到另一个服务器或创建一个新的从属实例,它可以节省很多麻烦。
因此,我建议您让Jenkins检出您的代码(应该有一个ClearCase插件)到工作区,并在检出的代码上运行分析。如果有令人信服的理由需要保留代码所在位置(例如您的情况下为C:\ myview),您仍然可以将构建的工作区设置为该目录(在作业配置页面中找到此选项,您需要单击“扩展”按钮才能看到选项)。

谢谢,我在主Jenkins配置中找到了选项并解决了问题。不过我并不完全同意Jenkins检出我的代码。这应该更多地基于具体情况而非强制性的要求。 - Pulak Agrawal
1
当然,并不是每个工作都需要检查源代码。有一个工作检出源代码并构建它们,另一个工作对构建后的源代码执行测试,还有一个工作执行一些代码分析,这样做非常有意义。然而,最佳实践仍然是让Jenkins检出源代码,而不是在Jenkins之外进行。如果您使用Jenkins检出源代码,您将获得许多优势(例如保留哪些源更改用于哪个构建的历史记录等)。 - pushy
我有理由不进行签出,因为我的源代码包含40K+个文件,而ClearCase并非Git :) - Pulak Agrawal

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接