似乎将CMake + CTest集成到jenkins中应该很容易。该cmakebuilder插件是非常容易配置(刚才设置的源树和构建树,完成了!)。但是我不明白如何调用CTest步骤。
根据xUnit主页,自1.58版以来,支持CTest的XML输出,请参见bug报告。
那就是我能找到的所有文档。当我在google或stackoverflow上搜索时,我只能找到非常老的文档,需要手动操作。
我想知道如何使用xUnit(1.81)设置最新的詹金斯(1.532.1)。我应该创建一个“添加构建步骤”吗?我应该创建一个“构建后动作”吗?我需要填写什么才能使CTest运行并生成适当的XML文件,以便jenkins可以集成它们?
这是一个小示例,演示了如何让xUnit选择CTest生成的XML测试结果文件。该示例包含一个C ++源文件main.cpp
main.cpp
#include <cstdlib> int main() { std::exit(-1); }
和伴随CMakeLists.txt:
CMakeLists.txt
cmake_minimum_required(VERSION 2.8) project(JenkinsExample) enable_testing() add_executable(main main.cpp) add_test(test1 main) add_test(test2 main) set_tests_properties(test2 PROPERTIES WILL_FAIL ON)
CMake列表文件生成一个可执行文件,main并通过两个CMake测试运行该可执行文件,其中出于演示目的,一个将始终失败,而另一个将始终成功。
main
使用Jenkins,设置一个新作业并添加一个新的cmakebuilder构建步骤。将CMake源目录指向包含本地计算机上的示例项目的文件夹。CMake构建目录应设置为build。这将使Jenkins在作业的工作空间目录中创建CMake构建文件夹。设置Clean Build标志以使作业始终从干净状态开始是个好主意。
build
Clean Build
然后,假设您正在运行Unix,请添加一个Execute shell作业步骤并在Command框中输入以下shell脚本:
Execute shell
Command
cd build /usr/local/bin/ctest --no-compress-output -T Test || /usr/bin/true
运行ctest该选项-T Test将使CTest Testing在build文件夹内的子文件夹中生成XML输出文件,然后xUnit插件可以在构建后的操作中将其提取。|| /usr/bin/true如果某些测试失败,则必须使用来防止Jenkins提前中止构建(不运行xUnit插件)。
ctest
-T Test
Testing
xUnit
|| /usr/bin/true
如果使用的是Windows,请设置类似的Execute Windows batch command作业步骤:
Execute Windows batch command
cd build "C:\Program Files (x86)\CMake 2.8\bin\ctest.exe" --no-compress-output -T Test || verify > NUL
最后xUnit,必须按以下方式配置插件:
添加Publish xUnit test result report构建后操作,然后使用插件的Add按钮创建CTest- Version测试结果报告。在CTest-Version (default) Pattern输入文件模式中build/Testing/**/Test.xml。
Publish xUnit test result report
Add
CTest- Version
CTest-Version (default) Pattern
build/Testing/**/Test.xml