pipelines Jenkins, sh, citações e espaços

2

Estou tentando configurar o comando sh como parte do meu pipeline Jenkins. Este comando tem um parâmetro onde a lista de valores é fornecida. Esses valores têm espaços neles.

Eu tentei tantas coisas, matrizes, fugindo etc etc nenhum funcionou.

Aqui está um exemplo:

# In Jenkins task I configure env variable:
VALUE_LIST=("Value One" "Value Two" "Value Three")

# In pipeline:
...
sh "command --param ${env.VALUE_LIST[@]}"
...

Por favor, entenda que esta é apenas uma das maneiras que tentei fazer isso funcionar.

Eu preciso do comando resultado para se parecer com:

command --param "Value One" "Value Two" "Value Three"

O melhor que consegui foi

command --param Value One Value Two Value Three

O que obviamente não funciona

    
por Tom 02.02.2017 / 12:58

1 resposta

2

Isso deve funcionar.

printf "%s
printf "%s%pre%" "${VALUE_LIST[@]}" | xargs -0  sh -c 'command --param "$@"' command_name
" "${VALUE_LIST[@]}" | xargs -0 sh -c 'command --param "$@"' command_name

Imprima os valores para xargs e use null como delimitador. Então xargs chama sh e sh executa o comando com os valores como argumentos. A última parte, command_name , representará o comando pelo nome que você fornece. É obrigatório nesta construção, caso contrário o comando não receberá o primeiro valor da lista "$@" .

    
por 03.02.2017 / 20:13