【发布时间】:2020-02-23 11:45:35
【问题描述】:
环境:
- 主 Linux Jenkins 服务器
- 两个 Windows 从节点
- Windows 从站作为服务运行
第一次测试
- 我创建了一个管道并在构建部分使用“执行 Windows 批处理命令”
- 在命令框中我输入了“C:\Jenkins\mytest.bat”
- 我选中了“限制此项目可以在哪里运行”框并记下 Windows 从站的名称
- 我构建了管道并且成功
第二次测试
-
我创建一个声明式管道如下:
pipeline { agent { label 'SiebelWindows' } stages { stage('Test Bat') { steps { bat 'C:\\Jenkins\\mytest.bat' //bat 'start cmd.exe /c C:\\Jenkins\\mytest.bat' //call C:\\Jenkins\\mytest.bat } } } } 在这种情况下,构建 FAIL 错误“cmd 未被识别为内部或外部命令”
那么,为什么我可以使用非声明性管道运行 .bat,但使用声明性管道会失败?
【问题讨论】:
-
mytest.bat可执行吗? -
如果你运行第二个命令会发生什么:
bat 'start cmd.exe /c C:\\Jenkins\\mytest.bat'? -
嗨,马特... mytest.bat 文件是一个 Windows 批处理文件
-
与第二条命令结果相同,“cmd is not a known internal o external command”
-
是的,在 %PATH% 变量中我们有 C:\Windows\system32。如果我作为“执行 Windows 批处理命令”运行,我不知道为什么可以正常工作,但是当我将管道创建为代码(声明性)时不起作用。相同的服务器,相同的命令
标签: batch-file jenkins jenkins-pipeline