4

我正在使用 Jenkins CI 作为我正在处理的项目的构建服务器,我还使用 Klocwork 作为静态分析工具来识别与我们的编码标准的偏差。

目前 Jenkins 有两个构建(在不同的目录中执行),一个在夜间进行的完整构建,它会清除工作空间并执行全新的检查和对所有内容的完全重建。除了通宵构建之外,我还在签入后 15 分钟内进行了增量构建。两个构建都使用了 Klocwork 分析工具。

Klockwork 通过显示潜在问题列表来工作,如果这些问题不适用于项目,则可以修复或选择忽略这些问题,当忽略问题时,Klocwork 使用构建文件路径来记住被忽略的问题所在的位置。这意味着当我在 Klocwork 中忽略完整构建中的警告并触发增量构建时,由于构建路径不同,警告再次返回。

我能看到的最明智的解决方案是让 Jenkins 每晚执行其完整构建,但增量构建在完整构建位置进行更新,然后进行增量构建 - 以与 IDE 相同的方式在 PC 上的功能。

问题是我让 Jenkins 将完整构建和增量构建作为两个单独的作业运行,这导致它们检查到不同的位置,我找不到让这两个作业共享一个公共目录的方法。此外,我找不到一种方法可以让单个作业执行每晚的完整签出和重建,以及同时在签入时进行更新的增量构建。

有没有人熟悉让 Jenkins 在多个作业中使用公共源目录的方法?

非常感谢,

皮特。

4

2 回答 2

3

Here's what I did.

  1. Used one job to only check out source code.

  2. In other jobs configuration settings', I set an environment variable that pointed to the workspace directory tree that contains the first job's source code (command line access to the Jenkins server is helpful here to figure out where it is, but not necessary). Then in my config scripting in Jenkins in the regular jobs, I 'cd' to that location and use the environment variable as path to all files so these other jobs would use the first job's checked out code.

  3. Used locks, so regular jobs would not be running at same time as the check-out code job.

  4. Since some results files (because of the tests being run) were generated and created in the source code tree because of the specifics of some of these jobs, in the config post-action script, I copied/moved the desired results back to the workspace of the job that should have them so I could process these results in the right job.

Worked for me.

于 2013-08-16T17:28:22.293 回答
0

您可以轻松地使两个构建共享相同的构建区域,
只需将两个构建作业中的文件提取到共享位置即可。

我强烈建议不要这样做,因为您很快就会遇到这样一种情况
:nightly-build 正在清理 build-area 而增量构建仍在运行
(或者增量构建正在检查源而 nightly 是仍在运行)。

建议您仅将Klockwork连接到其中一个构建作业(可能是每晚)
,以避免重复警告。

于 2013-05-24T15:15:24.653 回答