1

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

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

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

所以基本上我在考虑使用yqwhich 将解析 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'
4

2 回答 2

2

对于较新的 yq 版本(请参阅文档):

yq eval 'del(services.[].build)' foo.yml
于 2021-04-28T08:38:31.620 回答
0
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
于 2020-09-11T22:10:32.947 回答