似乎将CMake + CTest集成到jenkins中应该很容易。 cmakebuilder插件非常易于配置(只需设置源树和构建树,就完成了!)。但是,我不明白如何调用CTest步骤。
根据主要xUnit page,自1.58版以来,支持CTest的XML输出,请参见bug report。
那就是我能找到的所有文档。当我在google或stackoverflow上搜索时,我只能找到非常老的文档,需要手动操作。
我想知道如何使用xUnit(1.81)设置最新的 Jenkins (1.532.1)。我应该创建一个“添加构建步骤”吗?我应该创建一个“构建后 Action ”吗?我需要填写什么才能使CTest运行并生成适当的XML文件,以便jenkins可以集成它们?
最佳答案
这是一个小示例,演示了如何让xUnit选择CTest生成的XML测试结果文件。该示例包含单个C++源文件main.cpp
#include <cstdlib>
int main() {
std::exit(-1);
}
以及伴随的
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测试运行该可执行文件,出于演示目的,其中一个总是失败,而另一个则总是成功。使用Jenkins,设置一个新作业并添加一个新的cmakebuilder构建步骤。将CMake源目录指向包含本地计算机上的示例项目的文件夹。 CMake构建目录应设置为
build
。这将使Jenkins在作业的工作空间目录中创建CMake构建文件夹。设置Clean Build
标志以使作业始终从干净状态开始是个好主意。然后,假设您正在运行Unix,请添加一个
Execute shell
作业步骤,并在Command
框中输入以下shell脚本:cd build
/usr/local/bin/ctest --no-compress-output -T Test || /usr/bin/true
使用
ctest
选项运行-T Test
将使CTest在build文件夹内的子文件夹Testing
中生成一个XML输出文件,然后可以由xUnit
插件在构建后操作中进行提取。如果某些测试失败,|| /usr/bin/true
是必需的,以防止Jenkins提前中止构建(不运行xUnit插件)。如果您使用的是Windows,请改为设置类似的
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
。
关于jenkins - 在Jenkins中产生CTest结果(xUnit> = 1.58),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21633716/