1

问题

当我通过 PowerShell 为 Baseline Branch 运行 Karma 时,Environment::Exit(1)如果结果中有任何失败的测试,PowerShell 的反应方式与执行的方式相似。这会导致 Jenkins 构建在不运行其余组件的情况下过早失败。我想绕过这个,以便作业仅在出现合法问题时失败,在针对目标分支(包含代码更改的分支)运行业力时发现失败的测试,或者新行的代码覆盖率低于所需的最小值.

背景

我正在与 Jenkins、PowerShell 和 Karma 合作,为 Web 应用程序提供代码覆盖率测试。在 Jenkins 中,我有一个执行 karma 的 PowerShell 任务:

在作业中,我检查了两个分支(一个用作基线,另一个包含代码/测试更新)。我恢复所有 NuGet 包,然后构建基线分支的解决方案。接下来,我运行 karma 来获取当前的覆盖率。然后我为目标分支构建解决方案,然后运行 ​​Karma 以获取代码覆盖率。使用 SonarQube,我正在比较结果以提供新的线路覆盖。

我已经尝试过的事情:

  • 加入-ErrorAction SilentlyContinue
  • 调查质量门
  • 查找文档karma start
  • 在命令末尾添加| $true|| $truekarma start

代码示例

& $nodePath $karmaPath start $karmaTest --log-level debug

$nodePath只是 node.exe 的文件路径

$karmaPath只是业力的文件路径

$karmaTest是 karma.conf.ci.js 文件的文件路径

4

1 回答 1

1

它失败的原因是由于返回的退出代码。如果您在 Jenkins bash 脚本中运行命令,那么 Jenkins 会取消所有剩余的任务。如果单元测试失败,你不应该真正通过构建。如果它们很脆弱,那么你最好重构测试。

要解决此问题,请在运行测试脚本后使用命令管道。例如

假设您在 package.json 中定义了脚本,大致定义如下

scripts:{
ng: ng;
install: npm install;
test-ci: ng test --karma-config karmaconfig --code-coverage
build: npm build
}

现在,通过使用 package.json 中定义的脚本,您的 jenkins bash 脚本可能如下所示。

npm run install
npm run test-ci || echo "Tests Failed"
npm run build
于 2019-01-17T00:40:15.793 回答