微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用以下方法删除YAML文件中的属性

如何解决如何使用以下方法删除YAML文件中的属性

由于ubuntu-latest image的最新更改引入了错误的docker-compose版本,我不得不在管道上锁定docker-compose的版本。

但是,有一个我用来帮助清理部署脚本的任务DockerCompose@0。我正在尝试实现的等同于

- task: DockerCompose@0
  displayName: 'Remove build options'
    inputs:
      action: 'Combine configuration'
      removeBuildOptions: true

因此,基本上我在考虑使用yq来解析YAML文件删除不适用于堆栈部署的构建选项。但是,我不确定该怎么做。因为我需要从可能包含它的每个服务中删除它。

因此请输入以下内容

services:
  def:
    build: ./def
    image: trajano/def
  ghi:
    image: trajano/ghi
version: '3.7'

我想得到

services:
  def:
    image: trajano/def
  ghi:
    image: trajano/ghi
version: '3.7'

解决方法

对于较新的 yq 版本 (see Docs):

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

要在Azure管道中执行此操作

steps:
- bash: |
    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-compose
    sudo snap install yq
  displayName: Install additional software
- bash: |
    docker-compose config | yq d - 'services.*.build' > $(Build.ArtifactStagingDirectory)/docker-compose.yml
  displayName: Clean up docker-compose.yml

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。