Jenkins -无法识别cmd

brccelvz  于 2023-01-08  发布在  Jenkins
关注(0)|答案(2)|浏览(217)

环境:

  • 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,而使用声明性管道却失败了呢?

utugiqy6

utugiqy61#

当我显示“Path”和“PATH”变量时,结果如下
Original_Path
解决方案是重新定义PATH环境变量,如下所示

environment {

    PATH = "C:\\WINDOWS\\SYSTEM32"

}

@JustAProgrammer问我C:\WINDOWS\SYSTEM32是否在我的Windows机器的路径中,这是正确的,但似乎Jenkins主程序不知道从程序的Windows路径。
我解决了我的问题,但我仍在寻找完整的解决方案,我需要将PATH环境变量设置为所有路径,而不仅仅是C:\WINDOWS\SYSTEM32

evrscar2

evrscar22#

如果有人也遇到了问题,尽管路径变量看起来是正确的,检查PATH变量的长度(echo %PATH%)。Windows对环境变量的长度有一些限制(参见Microsoft DevBlog)。
删除一些条目或像前面提到的那样显式设置PATH
另请检查Environment Injector Plugin的配置,该配置可以覆盖默认用户和系统变量PATH

相关问题