You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Windows Kubernetes Pod的Jenkins流水线中正确执行批处理命令

Kubernetes Jenkins Windows容器执行批处理命令的正确方式

在Kubernetes环境的Jenkins中,使用Windows容器的Pod模板时,将流水线中的echo "hello-world"替换为dir等批处理命令时,出现Process exited immediately after creation错误,多种写法均无效。

正确写法示例

方式一:显式通过cmd /c执行内置命令

由于dir是cmd的内置命令(并非独立可执行文件),必须通过cmd.exe调用执行。修改后的流水线脚本如下:

podTemplate(yaml: '''
apiVersion: v1
kind: Pod
spec:
  containers:
  - name: jnlp
    image: jenkins/inbound-agent:nanoserver-1809
  - name: sidecar
    image: mcr.microsoft.com/dotnet/aspnet:6.0.15-windowsservercore-ltsc2019
  nodeSelector:
    kubernetes.io/os: windows
''') {
    node(POD_LABEL) {
        container(name: 'sidecar', shell: 'cmd.exe') {
            bat 'cmd /c dir'
        }
    }
}

方式二:调整容器shell参数为cmd.exe /s /c

提前指定容器的shell为带参数的cmd,后续bat步骤可直接编写命令:

podTemplate(yaml: '''
apiVersion: v1
kind: Pod
spec:
  containers:
  - name: jnlp
    image: jenkins/inbound-agent:nanoserver-1809
  - name: sidecar
    image: mcr.microsoft.com/dotnet/aspnet:6.0.15-windowsservercore-ltsc2019
  nodeSelector:
    kubernetes.io/os: windows
''') {
    node(POD_LABEL) {
        container(name: 'sidecar', shell: 'cmd.exe /s /c') {
            bat 'dir'
        }
    }
}

错误原因

之前直接使用bat 'dir'等写法失败,是因为Jenkins会尝试将dir作为独立进程启动,但dir是cmd的内置命令,无法单独运行,必须依托cmd.exe解析执行。

内容的提问来源于stack exchange,提问作者jrbe228

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 16:02:52