如何将 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 java
,gauge --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
任务。这会即时安装所有必需的插件。
我对 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 java
,gauge --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
任务。这会即时安装所有必需的插件。