0

我最近开始尝试使用 Jenkins,我要么对矩阵配置工作应该做什么非常错误,要么我做错了什么。我已经尝试寻找已经问过的类似问题,但我对詹金斯行话还不够熟悉,还没有找到。也许这是第一次有人问!

我有一个项目签入 svn,其目录结构如下:


./doc
./include/
./src/
./target
./target/linux-ARM
./target/linux-ARM/include
./target/linux-ARM/lib
./target/linux-ARM/src
./target/linux-i386
./target/linux-i386/include
./target/linux-i386/lib
./target/linux-i386/src
./target/linux-x86_64
./target/linux-x86_64/include
./target/linux-x86_64/lib
./target/linux-x86_64/src
./target/win32-i386
./target/win32-i386/include
./target/win32-i386/lib
./target/win32-i386/src
./target/win32-x86_64
./target/win32-x86_64/include
./target/win32-x86_64/lib
./target/win32-x86_64/src

与平台无关的代码在 ./src 中,所有特定于平台的代码都在适当的目标目录中。我专门制作了这个目录结构,以便可以在 jenkins 中使用矩阵配置项目。

我定义的唯一轴称为“平台”,它具有以下值:linux-ARM、linux-i386、linux-x86_64、win32-i386 和 win32-x86_64。

我以为我可以简单地指定以下构建步骤,一切都会得到处理:


chmod 777 ./target/$platform/build
chmod 777 ./target/$platform/deploy
./target/$platform/build
./target/$platform/deploy

现在的问题是,jenkins 正确地完成了这项工作并且没有报告任何错误;但是当我(在 jenkins 内部)导航到工作区部分时,我看到一个完全不同的目录结构用于构建项目。基本上,对于每个配置,整个项目都会重新导出,并放置在 ./$platform 目录中。


./doc // <--- this one is actually thesame
./include/
./platform/
./platform/linux-ARM
./platform/linux-ARM/doc // <--- as this one
./platform/linux-ARM/include
./platform/linux-ARM/src
./platform/linux-ARM/target
./platform/linux-ARM/target/linux-ARM
./platform/linux-ARM/target/linux-ARM/include
./platform/linux-ARM/target/linux-ARM/lib
./platform/linux-ARM/target/linux-ARM/src
./platform/linux-ARM/target/linux-i386
./platform/linux-ARM/target/linux-i386/include
./platform/linux-ARM/target/linux-i386/lib
./platform/linux-ARM/target/linux-i386/src
./platform/linux-ARM/target/linux-x86_64
./platform/linux-ARM/target/linux-x86_64/include
./platform/linux-ARM/target/linux-x86_64/lib
./platform/linux-ARM/target/linux-x86_64/src
...
...
./src/
./target
./target/linux-ARM
./target/linux-ARM/include
./target/linux-ARM/lib
./target/linux-ARM/src
./target/linux-i386
./target/linux-i386/include
./target/linux-i386/lib
./target/linux-i386/src
./target/linux-x86_64
./target/linux-x86_64/include
./target/linux-x86_64/lib
./target/linux-x86_64/src
./target/win32-i386
./target/win32-i386/include
./target/win32-i386/lib
./target/win32-i386/src
./target/win32-x86_64
./target/win32-x86_64/include
./target/win32-x86_64/lib
./target/win32-x86_64/src

我无法想象这是预期的行为。然而,只要詹金斯声称这个项目很好,我就不会抱怨。但是,当您想使用 doxygen 生成文档时,它会成为一个问题。Doxygen 将在其递归扫描中包含外星人 ./$platform 目录,并将尝试解析不同位置的 6 个完全相同的源文件的文档。

有没有办法解决这个问题?我认为没有理由将同一个项目导出 6 次。或者这是预期的行为,我应该改用 5 个单独的自由式工作吗?

4

1 回答 1

1

Jenkins 总是为矩阵作业这样做。我认为原因是他们应该有独立的工作空间,所以构建不会相互影响。

您可以通过在您Doxyfile的 .

于 2013-06-23T20:11:02.963 回答