1

我有葫芦在 Jenkins 上运行 iOS 测试。当作业遇到失败时,我有时会通过按作业中的 stop[x] 按钮手动中止测试。问题是即使我中止了功能文件中的下一个测试也开始运行。通过终端启动测试时未观察到此行为。在终端中退出黄瓜测试时,sim 会返回首页,并且不会启动其他测试。

我发现了一个可能有用的钩子

After do |s| 
  # Tell Cucumber to quit after this scenario is done - if it failed.
  Cucumber.wants_to_quit = true if s.failed?
end

但是,有时我不希望它仅仅因为一个场景失败而停止。我觉得詹金斯需要杀死所有进程,而不是。

如果有人知道如何在 Jenkins 被指示中止后通过终端手动杀死葫芦及其实例,我也会对此感兴趣。

我试过了:

ps aux | grep -i instruments | awk {'print $2'} | xargs kill -9

不幸的是,这并没有奏效。可能有两个原因

  1. greping 仪器显示两个或多个进程

20272 ?? S 0:00.00 sh -c xcrun instruments -w "iPhone 5 (8.1 Simulator)...

20273 ?? S 0:00.45 /Applications/Xcode.app/Contents/Developer/usr/bin/instruments -w iPhone 5]...

我应该切换 awk 以打印第 1 列吗?

或原因二

  1. 我没有正确的过程?

这是我的一些版本信息:

葫芦-ios版本:0.11.4

葫芦::黄瓜::MIN_SERVER_VERSION: 0.11.4

Xcode 6.1

4

1 回答 1

1

您必须让 Jenkins 找到所有分叉的进程。根据作业类型,您必须将不同的环境条目传递到分叉进程中。这个问题是关于另一种方式的(所以如何让 Jenkins 不停止进程),但是可能的环境条目的名称在那里。只需将下面的这些环境条目传递给每个分叉的进程,然后进程树杀手就会找到它们:

  • BUILD_ID
  • HUDSON_SERVER_COOKIE
  • JENKINS_COOKIE
  • JENKINS_SERVER_COOKIE
  • HUDSON_COOKIE
于 2014-12-03T23:18:57.123 回答