yml travis generate deploy create cli bash continuous-integration yaml travis-ci

bash - generate - travis github



¿Cómo usar el comando multilínea en ''script:'' con YAML? (2)

Tengo un repositorio que utiliza Travis CI , y en el .travis.yml tengo esta línea:

script: - vim -Nu <(cat <<-EOF set nocompatible | filetype off EOF ) -c ''Script'' > /dev/null

Lamentablemente esto no funciona, ya que se transforma en una sola línea y se ejecuta así:

vim -Nu <(cat <<-EOF set no compatible | filetype off | EOF ) -c ''Script'' > /dev/null

Esto hace que la etiqueta EOF no funcione, ya que EOF debe estar en una sola línea. Una alternativa sería usar citas normales como esta:

script: - vim -Nu <(cat ''set nocompatible | filetype off ) -c ''Script'' > /dev/null

Lo cual funciona, y está bien, pero creo que debe haber una manera de insertar nuevas líneas en un .travis.yml . Tengo una alternativa ahora, pero puede que no en el futuro. Entonces, ¿cómo lo haces?


En YAML puede especificar nuevas líneas en un escalar usando "" citando y escapando de las nuevas líneas ( /n ), y, y eso es más natural para su caso, usando un escalar de bloque de estilo literal :

script: - | vim -Nu <(cat <<-EOF set nocompatible | filetype off EOF ) -c ''Script'' > /dev/null

Este es un escalar que comienza con una línea con un | (símbolo de canalización), seguido de varias líneas para las que se conservan los saltos de línea.

  • Las líneas están normalmente sangradas (excepción: un solo escalar de bloque de estilo literal de nivel superior).
  • Después de la | puede haber modificadores: 1 - 9 , que se utilizan cuando su primera línea comienza con espacios; + , - para influir en la eliminación de las nuevas líneas finales (normalmente colapsadas en una sola).

Utilizo dicho formato para lograr exactamente el efecto deseado.

script: - | valgrind / --read-var-info=yes / --error-exitcode=1 / --fullpath-after= / --track-origins=yes / --leak-check=full / --num-callers=20 / --suppressions=$(pwd)/tests/zephir_parser.3.7.0.sup / $(phpenv which php) / -d variables_order=EGPCS / run-tests.php / -p $(which php) / -d extension=$(pwd)/modules/zephir_parser.so / -d variables_order=EGPCS / -g "FAIL,XFAIL,BORK,WARN,LEAK,SKIP" / --offline / --show-diff / --set-timeout 120