У меня есть сервер Jenkins (v 2.138), работающий на Windows 7. У меня также установлен Cygwin. Путь cygwin находится в пути windows, поэтому задания Jenkins могут вызывать исполняемый файл cygwin.
Мой вопрос: почему в действии Build, когда я устанавливаю действие «Выполнить оболочку», результирующий вызов (подтвержденный выводом консоли сборки) выглядит примерно так:
sh -xe C:\Windows\TEMP\jenkins8280072687577604153.sh
Я понимаю, что временный скрипт генерируется из того, что я ввожу в конфигурацию заданий. Что я не понимаю, так это аргументы "-xe", передаваемые sh.
Из того, что я вижу, кажется, что эти параметры выводят внутренние команды. Похоже на эхо ВКЛ в Windows? Однако это отрицательно сказывается на загрязнении наших журналов сборки.
Например:
Конфигурация задания:
echo X > a.txt
echo X > b.txt
echo X > c.txt
grep X $( find -name "*.txt" )
Результирующий журнал:
+ echo X
+ echo X
+ echo X
++ find -name '*.txt'
+ grep X ./a.txt ./b.txt ./c.txt
./a.txt:X
./b.txt:X
./c.txt:X
Если возможно, я бы хотел получить:
./a.txt:X
./b.txt:X
./c.txt:X
На моей машине я получаю:
$ sh --version
GNU bash, version 4.4.12(3)-release (x86_64-unknown-cygwin)
Copyright (C) 2016 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Поэтому я посмотрел справочную страницу bash, но не могу найти ссылки на опции -x или -e.
Есть ли у вас какие-либо предложения о том, как я мог бы попросить Дженкинса вызвать скрипт напрямую, что-то вроде:
sh C:\Windows\TEMP\jenkins8280072687577604153.sh
Или, если это невозможно, как я мог в своей работе, переписать эти настройки, чтобы печатать только соответствующий вывод консоли, а не что-либо промежуточное.
Спасибо!