Azure DevOps Pipeline能否通过SSH启动VM脚本后执行后续任务?
解决Azure DevOps Pipeline SSH任务不等待BAT脚本执行完成的问题
要实现Pipeline无需等待远程BAT脚本执行完成就进入下一个任务,核心是让远程机器后台异步执行BAT脚本,而非让SSH任务等待脚本执行结束。你之前用timeoutInMinutes和continueOnError的方式会直接终止远程进程,这是错误的处理方式。
具体解决方案
修改SSH任务的commands配置,通过start /b命令让BAT脚本在远程机器后台运行,这样SSH任务会立即返回,Pipeline可继续执行后续任务:
- task: SSH@0 inputs: sshEndpoint: 'qam2' runOptions: 'commands' commands: 'start /b cmd /c "path-to-bat-file"' readyTimeout: '20000'
参数说明
start /b:在后台启动进程,不弹出新命令行窗口,且不会阻塞当前SSH会话cmd /c "path-to-bat-file":启动新CMD进程执行指定BAT脚本,执行完成后自动关闭CMD进程
若BAT文件路径包含空格,必须用双引号包裹路径,示例:
commands: 'start /b cmd /c "C:\My Scripts\test.bat"'
注意事项
这种方式下,你的BAT脚本会在远程机器上持续执行至完成,不会被Pipeline终止。脚本内的start /wait等逻辑不受影响,依然会按原设计运行。
内容的提问来源于stack exchange,提问作者Linux Dev
相关产品推荐
相关产品推荐

