Docker compose 如何使用删除YAML文件中的属性

Docker compose 如何使用删除YAML文件中的属性,docker-compose,yaml,azure-pipelines,yq,Docker Compose,Yaml,Azure Pipelines,Yq,由于最近ubuntu最新版本的一次改动,引入了一个有缺陷的docker compose版本,我不得不在我的管道上锁定docker compose版本 然而,有一项任务我用来帮助清理部署脚本,即DockerCompose@0。我正在尝试实现的功能相当于 - task: DockerCompose@0 displayName: 'Remove build options' inputs: action: 'Combine configuration' remove

由于最近ubuntu最新版本的一次改动,引入了一个有缺陷的docker compose版本,我不得不在我的管道上锁定docker compose版本

然而,有一项任务我用来帮助清理部署脚本,即
DockerCompose@0
。我正在尝试实现的功能相当于

- task: DockerCompose@0
  displayName: 'Remove build options'
    inputs:
      action: 'Combine configuration'
      removeBuildOptions: true
因此,基本上我考虑使用
yq
,它将解析YAML文件并删除不适用于堆栈部署的构建选项。然而,我并不完全确定如何做到这一点。因为我需要从每个可能包含它的服务中删除它

因此,给定以下输入

服务:
定义:
构建:./def
图片:特拉亚诺/def
ghi:
图片:特拉亚诺/ghi
版本:“3.7”
我想去

服务:
定义:
图片:特拉亚诺/def
ghi:
图片:特拉亚诺/ghi
版本:“3.7”
在Azure管道中执行此操作

步骤:
-狂欢节:|
URL=”https://github.com/docker/compose/releases/download/1.26.2/docker-compose-Linux-x86_64"
sudo curl-sL$URL-o/usr/local/bin/docker组合
sudo快速安装yq
displayName:安装其他软件
-狂欢节:|
docker compose配置| yq d-'services.*.build'>$(build.ArtifactStagingDirectory)/docker-compose.yml
displayName:Clean up docker-compose.yml
对于较新的yq版本():

yq d foo.yml 'services.*.build'
yq eval 'del(services.[].build)' foo.yml