0

我对 Gauge 测试工具有点熟悉,现在正致力于通过 Jenkins 执行它。

首先:我gauge --version在“执行 Windows 批处理命令”字段中设置。这是输出:

Started by user anonymous
Building in workspace C:\jenkins\workspace\Run_Gauge_Test
[Run_Gauge_Test] $ cmd /c call C:\WINDOWS\TEMP\hudson8329964667758110371.bat

C:\jenkins\workspace\Run_Gauge_Test>gauge --version 
Gauge version: 0.6.2

Plugins
-------
No plugins found
Plugins can be installed with `gauge --install {plugin-name}`

C:\jenkins\workspace\Run_Gauge_Test>exit 0 
Finished: SUCCESS

将此与我直接在命令行中运行 Gauge 时得到的输出进行比较:

C:\jenkins\workspace\Run_Gauge_Test>gauge --version
Gauge version: 0.6.2

Plugins
-------
html-report (2.1.1)
java (0.5.1)
xml-report (0.1.3)

因此,我将相同的命令放在批处理文件中并运行它只是为了再次获得“未找到插件”消息。作为最后一个选项,我勾选Use custom workspace并将我的目录设置为我通常从命令行运行仪表测试的文件夹,但仍然是“未找到插件”

然后我尝试将它作为 shell 命令运行。输出:

Started by user anonymous
Building in workspace C:\jenkins\workspace\Run_Gauge_Test
[Run_Gauge_Test] $ sh -xe C:\WINDOWS\TEMP\hudson211231385407124893.sh
The system cannot find the file specified
FATAL: command execution failed
java.io.IOException: Cannot run program "sh" (in directory "C:\jenkins\workspace\Run_Gauge_Test"): CreateProcess error=2, The system cannot find the file specified
    at java.lang.ProcessBuilder.start(Unknown Source)
    (truncated)
    at hudson.model.Executor.run(Executor.java:404)
Caused by: java.io.IOException: CreateProcess error=2, The system cannot find the file specified
    at java.lang.ProcessImpl.create(Native Method)
    at java.lang.ProcessImpl.<init>(Unknown Source)
    at java.lang.ProcessImpl.start(Unknown Source)
    ... 16 more
Build step 'Execute shell' marked build as failure
Finished: FAILURE

当然,我将实际运行仪表测试(但它不起作用),而不仅仅是获取版本;但我认为解决为什么它没有正确获取插件详细信息会更简单。有什么线索吗?

4

2 回答 2

2

仪表插件应通过 Jenkins 代理执行命令的用户/管理员帐户安装。查看以下文档以了解有关与 GoCD 和其他一些 CI 工具集成的更多信息。 https://docs.gauge.org/latest/howto/index.html#tutorials

长答案:

目前,Gauge 可执行文件安装在系统级别。而 Gauge 插件(语言运行器、报告插件等)安装在用户级别。因此,如果您以一个用户的身份手动安装插件,并且如果任务针对不同的用户运行,则在 CI 上安装插件,gauge将无法找到插件。

要解决此问题,您应该从运行 CI 的帐户运行插件安装命令。或者正如 Srikanth 的评论所说,您可以gauge --install-all在管道中完成任务。这会即时安装所有必需的插件。

于 2017-01-20T01:00:41.900 回答
1

我怀疑您正在以不同的用户身份安装和使用 Gauge。与许多 CI 工具一样,这些任务通常在与登录代理不同的用户下执行。

目前 Gauge 的工作方式是:gauge.exe在系统级别可用。但是,插件是在用户级别安装的。

因此,如果您以 身份登录user1并执行gauge --install java,则仅当您以 身份登录时gauge --version才会java列为插件user1

如果您在本地系统帐户下运行 CI 代理,这也是如此。

您可以解决此问题的一种方法是,如果您将设置作为任务包含在您的管道中,即gauge --install-all在尝试运行您的规范之前从您的项目根目录中获取一个。

于 2017-01-17T12:27:23.177 回答