如何将 CircleCI yml 中的命令分解为多行?

How to break up command in CircleCI yml to multiple lines?

我有一个 CircleCI 配置文件,如下所示:

# Customize test commands
test:
  override:
    - docker run -e VAR1=$VAR! -e VAR2=$VAR2 -e $VAR3-$VAR3 --entrypoint python my_image:latest -m unittest discover -v -s test

如何将 docker run 命令拆分为多行,例如:

docker run \
-e VAR1=$VAR! \
-e VAR2=$VAR2 \
-e $VAR3-$VAR3 \
--entrypoint python my_image:latest \
-m unittest discover -v -s test

我试过对 yaml 使用 | 运算符,但 CircleCI 无法解析,因为它期望 override 是一个列表。

# Customize test commands
test:
  override: |
    docker run \
      -e VAR1=$VAR! \
      -e VAR2=$VAR2 \
      -e $VAR3-$VAR3 \
      --entrypoint python my_image:latest \
      -m unittest discover -v -s test

使用这个 answer 详细介绍了在 yaml 中将字符串拆分为多行的各种方法,我能够推断出一个效果很好的解决方案。

请注意 override 部分中 >- 运算符的使用。

test:
  override:
    - >-
      docker run
      -e VAR1=$VAR!
      -e VAR2=$VAR2
      -e $VAR3-$VAR3
      --entrypoint python my_image:latest
      -m unittest discover -v -s test

这会生成一个不错的单行命令:

docker run -e VAR1=$VAR! -e VAR2=$VAR2 -e $VAR3-$VAR3 --entrypoint python my_image:latest -m unittest discover -v -s test