Azure DevOps管道报错:Cmd.exe退出代码1,求YAML脚本问题排查
问题根源
你的YAML脚本用了Linux/bash风格的命令,但如果Azure DevOps管道跑在Windows代理上,script任务默认会用Cmd.exe执行——Cmd根本不认识mkdir -p、copy -R这类Linux语法,这就是报错的原因。
两种解决办法
办法1:强制用Bash执行
给script任务加上shell: bash配置,这样不管代理是Windows还是Linux,都会用Bash解析命令,同时注意把Linux里的复制命令从copy改成正确的cp:
- script: | # Build your HTML and CSS files (No actual compilation, just copying) mkdir -p $(Build.BinariesDirectory)/website cp -R * $(Build.BinariesDirectory)/website/ displayName: 'Copy Website Files' shell: bash
办法2:改用Windows Cmd兼容语法
如果必须用Cmd执行,把命令换成Cmd支持的写法:
- script: | # Build your HTML and CSS files (No actual compilation, just copying) mkdir "$(Build.BinariesDirectory)\website" xcopy /E /Y * "$(Build.BinariesDirectory)\website\" displayName: 'Copy Website Files'
mkdir不需要-p参数,Cmd的mkdir会自动创建多级目录xcopy /E用来递归复制所有文件和子目录,/Y表示覆盖文件时不弹出确认提示
内容的提问来源于stack exchange,提问作者Dion
相关产品推荐
相关产品推荐

