环境:
- Linux Jenkins主服务器
- 两个Windows从节点
- Windows从属服务器作为服务运行
首次试验
- 我创建了一个管道,并在构建部分使用了"ExecuteWindowsbatchcommand
- 在命令框中输入"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
}
}
}
}
- 在这种情况下,构建失败,错误为"cmd未被识别为内部或外部命令"
那么,为什么我可以使用非声明性管道运行. bat,而使用声明性管道却失败了呢?
2条答案
按热度按时间utugiqy61#
当我显示“Path”和“PATH”变量时,结果如下
Original_Path
解决方案是重新定义PATH环境变量,如下所示
@JustAProgrammer问我C:\WINDOWS\SYSTEM32是否在我的Windows机器的路径中,这是正确的,但似乎Jenkins主程序不知道从程序的Windows路径。
我解决了我的问题,但我仍在寻找完整的解决方案,我需要将PATH环境变量设置为所有路径,而不仅仅是C:\WINDOWS\SYSTEM32
evrscar22#
如果有人也遇到了问题,尽管路径变量看起来是正确的,检查
PATH
变量的长度(echo %PATH%
)。Windows对环境变量的长度有一些限制(参见Microsoft DevBlog)。删除一些条目或像前面提到的那样显式设置
PATH
。另请检查Environment Injector Plugin的配置,该配置可以覆盖默认用户和系统变量
PATH
。