Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/jenkins/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file Jenkins-cmd未被识别_Batch File_Jenkins_Jenkins Pipeline - Fatal编程技术网

Batch file Jenkins-cmd未被识别

Batch file Jenkins-cmd未被识别,batch-file,jenkins,jenkins-pipeline,Batch File,Jenkins,Jenkins Pipeline,环境: 主Linux Jenkins服务器 两个Windows从节点 windows从属服务器作为服务运行 第一次测试 我创建了一个管道,并在构建部分使用“执行Windows批处理命令” 在命令框中,我输入了“C:\Jenkins\mytest.bat” 我选中了“限制此项目可以运行的位置”复选框,并写下Windows从属服务器的名称 我建造了管道,并且成功 第二次测试 我创建了一个声明性管道,如下所示: pipeline { agent { label 'SiebelWi

环境:

  • 主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
                            }
                    }
        }
       }
    
  • 在这种情况下,生成失败,错误为“cmd未被识别为内部或外部命令”

那么,为什么我可以用非声明性管道运行.bat,但用声明性管道却失败了呢?

当我显示“Path”和“Path”变量时,结果就是这样

解决方案是重新定义PATH环境变量,如下所示

environment {

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

}
@JustapProgrammer问我C:\WINDOWS\SYSTEM32是否在我的WINDOWS机器的路径中,这是正确的,但Jenkins master似乎不知道从机的WINDOWS路径


我解决了我的问题,但我仍在寻找一个完整的解决方案,我需要用所有路径设置PATH环境变量,不仅C:\WINDOWS\SYSTEM32

mytest.bat
可执行文件?如果运行第二个命令会发生什么:
bat'start cmd.exe/C:\\Jenkins\\mytest.bat'
?您好。。。文件mytest.bat是一个windows批处理文件,第二个命令的结果相同,“cmd不是一个可识别的内部或外部命令”是的,在%PATH%变量中有C:\windows\system32。如果我以“执行Windows批处理命令”的方式运行,我不知道为什么可以正常工作,但当我创建一个管道时,代码(声明性)就不起作用了。它是相同的服务器,相同的命令