1

设置:

  • 詹金斯
  • 单元
  • 电子邮件分机(Jenkins 插件)

我们在 C# 中有一个测试套件,它可以进行设置:它在 TestRail 中检查测试计划中存在哪些测试,并将该测试列表写入文件。Jenkins 中的构建有两个构建步骤(在 pull & build 之后):

  1. 运行设置套件以获取要运行的测试列表。
  2. 运行套件,使用/runlistNUnit 参数拉入该列表。

当有要运行的测试时,这非常有效。

但是,由于[完全独立的实现],有时该文件为空。因此,“使用列表运行”构建步骤的 NUnit 结果:

Tests run: 0, Errors: 0, Failures: 0, Inconclusive: 0, Time: 0.010100375885762 seconds
Not run: 0, Invalid: 0, Ignored: 0, Skipped: 0

这告诉 Jenkins 这一步失败了:

C:\Program Files (x86)\Jenkins\jobs\[job_name]\workspace>exit 0 
Archiving artifacts
Recording NUnit tests results
No test report files were found. Configuration error?
Build step 'Publish NUnit test result report' changed build result to FAILURE
Email was triggered for: Failure
Sending email for trigger: Failure

我想要的是两件事之一:

  • 至少,它不会发送失败电子邮件。
  • 理想情况下,设置构建步骤的结果会告诉构建停止,因为没有要构建的东西。将发送“中止”电子邮件触发器。

如何配置 Jenkins/此构建以实现这一目标?

4

1 回答 1

1

我相信我已经找到了自己问题的答案。

脚步:

  • 安装Conditional Build Step 插件
  • 安装Fail The Build 插件
  • 添加一个批处理脚本,如果要运行的测试文件大小为 0,则返回错误代码 1,否则返回错误代码 0。
  • 添加一个条件构建步骤:
    • 执行 Windows 批处理命令 == 批处理文件的路径。
    • 设置构建结果 == 不稳定(或其他)。

我的批处理文件代码:

@echo off

REM Retrieve the build name.
set arg1=%1

REM Set the file name.
set file="C:\Path\To\TestsToRunFile\%arg1%.txt"

REM Get the file size.
FOR /F "usebackq" %%A IN ('%file%') DO set size=%%~zA

REM Exit codes based on the file size.
IF %size% EQU 0 (
    exit /b 0
) ELSE (
    exit /b 1
)
于 2014-01-16T16:34:16.657 回答