testing - 在 hudson 中设置测试构建作业,检测 make 何时无法编译

标签 testing build hudson automated-tests automake

我在 hudson 中建立了一个“自由式项目”,它从 svn 存储库中检查我的源代码。然后我添加了一个“shell 步骤”来构建代码:

echo "# $JOB_NAME: $BUILD_ID" >log
cd to/my/path/
qmake &>>$WORKSPACE/log
make &>>$WORKSPACE/log

运行测试后, hudson 说 t 成功了。当我查看构建的控制台输出时,我发现:

In file included from src/tut.h:47,
                 from src/tut3module.cpp:1:
src/log.h:69: error: ‘uint8_t’ has not been declared
make: *** [obj/tut3module.o] Fehler 1
Finished: SUCCESS

为什么 hudson 不识别这个错误?我必须如何配置作业?

如果您需要有关我的配置的更多信息,请告诉我!

感谢您的帮助!

最佳答案

Hudson 使用构建步骤的错误代码来确定构建步骤是成功还是失败。您的整个构建步骤将转换为一个脚本。如果您不在脚本中的某处调用 exit,脚本的last 命令的退出代码将成为脚本的退出代码。

看下面的脚本

copy readme.txt dd:
type readme.txt

让我们假设 readme.txt 存在。复制将失败,错误代码为 1,因为 dd: 是未知设备。 type 命令将成功,因此构建步骤本身将返回成功。因此,要么将构建命令分开,要么在每个命令后检查错误代码。系统管理员向我推荐了第三种方法:运行脚本并检查结果。因此,在您的情况下,只要您的构建工件存在,您的构建就应该有效。

当然你也可以使用sagar提到的log parser插件。但是如果你能避免它,那就使用检查错误代码的脚本,然后依赖日志解析器。顺便说一句,有些命令偏离标准并返回非零错误代码,即使在成功的情况下也是如此。

关于testing - 在 hudson 中设置测试构建作业,检测 make 何时无法编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4334591/

相关文章:

groovy - Jenkins/Hudson Groovy 脚本控制台 : Flexibility

database - 迁移后测试数据库数据

android - 在 Android 上发送系统事件

testing - JS测试驱动中测试用例的异步执行

java - 当我们更新操作系统时,Android 的 Build 类会受到影响吗?

maven - 如何有条件地运行maven-release :rollback in jenkins?

testing - 不知道如何解决跨浏览器问题

angular - 为什么 ng build --prod 失败,而 ng build 成功?

gradle 配置以从本地目录获取依赖项

groovy - 使用构建后 Groovy 脚本获取构建持续时间 (Jenkins/Hudson)