关于yaml:如何将CircleCI yml中的命令分解为多行?

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

本问题已经有最佳答案,请猛点这里访问。

我有一个Circleci配置文件,看起来是这样的:

1
2
3
4
# 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命令分解为多行,如:

1
2
3
4
5
6
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是一个列表。

1
2
3
4
5
6
7
8
9
# 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

使用这个详细描述了在yaml中用多行分解字符串的各种方法的答案,我可以推断出一个很好的解决方案。

注意在override部分使用>-操作符。

1
2
3
4
5
6
7
8
9
test:
  override
:
   - >-
      docker run
      -e VAR1=$VAR!
      -e VAR2=$VAR2
      -e $VAR3-$VAR3
      --entrypoint python my_image:latest
      -m unittest discover -v -s test

这将生成一个很好的单行命令:

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