Programming
yaml circleci
Updated Mon, 29 Aug 2022 08:54:01 GMT

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


I have a CircleCI configuration file that looks like so:

# 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

How can I break up the docker run command into multiple lines like:

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

I've tried using the | operator for yaml, but CircleCI was unable to parse because it expects override to be a list.

# 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



Solution

Using this answer which details the various ways to break up a string over multiple lines in yaml, I was able to deduce a solution which works nicely.

Note the use of the >- operator in the override section.

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

This generates a nice single-line command of:

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






Linked Articles

Local articles referenced by this article: