如何将 Gauge 与 Jenkins 集成

How to integrate Gauge with Jenkins

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

首先:我在 "Execute Windows Batch Command" 字段中设置了 gauge --version。这是输出:

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

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

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)

所以我将相同的命令放在批处理文件中 运行 只是为了再次获得 "no plugins found" 消息。 作为最后一个选项,我勾选了 Use custom workspace 并将我的目录设置为我通常 运行 从命令行进行测试的文件夹,但它仍然是 "no plugins found"

然后我尝试 运行将它作为 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

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

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

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

因此,如果您以 user1 身份登录并执行 gauge --install javagauge --version 将仅在您以 user1 身份登录时将 java 列为插件.

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

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

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

长答案:

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

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