【问题标题】:Jenkins - cmd is not recognized詹金斯 - cmd无法识别
【发布时间】: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


【解决方案1】:

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

Original_Path

解决方案是重新定义 PATH 环境变量,像这样

environment {

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

}

@JustAProgrammer 询问我 C:\WINDOWS\SYSTEM32 是否在我的 Windows 机器的 PATH 中,这是正确的,但似乎 Jenkins master 不知道 slave 的 Windows 路径。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-08
    • 2014-09-09
    相关资源
    最近更新 更多