VSTS / TFS中的命令嵌套

时间:2017-01-31 12:13:28

标签: docker tfs azure-devops

我正在尝试使用linux shell和Docker在VSTS上运行以下嵌套命令,因此我可以停止并删除所有基于“jspsample”图像的容器:

docker rm $(docker stop $(docker ps -a -q --filter ancestor=jspsample --format="{{.ID}}"))

enter image description here

不幸的是,代理总是返回以下错误代码:

2017-01-31T12:06:22.0585100Z unknown shorthand flag: 'a' in -a

2017-01-31T12:06:22.0636870Z See 'docker stop --help'.

2017-01-31T12:06:22.0827520Z ##[error]/usr/bin/docker failed with return code: 125

2017-01-31T12:06:22.0850140Z ##[error]/usr/bin/docker failed with error: /usr/bin/docker failed with return code: 125

有没有办法运行这个嵌套命令,还是需要运行shell脚本?

2 个答案:

答案 0 :(得分:1)

"命令行"任务不支持命令嵌套。将命令保存为shell脚本并上传到代码存储库,然后使用" Shell脚本"运行脚本的任务。

答案 1 :(得分:1)

当我试图在每晚构建中清理图像时,我遇到了同样的问题。基本上这个命令:

docker rmi $(docker images -aq)

因此,我为Docker VSTS任务创建了一个pull请求,以包含一个输出变量来存储Docker命令的输出:https://github.com/Microsoft/vsts-docker/pull/44

有关我对此问题的调查的详细信息,请参阅我的StackOverflow帖子:Removing unused docker images on a remote Linux Azure hosted docker instance gives 'unknown shorthand flag: 'a' in -aq' error