Цветной вывод aws sam cli в консоли jenkins

Начиная с версии 0.33.1 aws-sam-cli поддерживает цветной вывод. Я пытаюсь запустить команду sam deploy из конвейера Jenkins, и вывод не отображается в цветном формате. Я установил плагин ANSIColor Jenkins и обернул команду sam deploy с помощью ansiColor('xterm') {}. Команда работает должным образом, и создается стек Cloudformation. Проблема заключается в том, что вывод не в цветном формате.

node {
stage('Example') {
    ansiColor('xterm') {
        sh "sam deploy --parameter-overrides ${someparameter} --template-file ${templatefile} --stack-name ${stackname} --capabilities CAPABILITY_NAMED_IAM  --no-fail-on-empty-changeset --no-execute-changeset"
   }
 }
}

Чтобы проверить свой Jenkins, я попробовал тестовый фрагмент в Jenkins, и он отобразил цветной вывод.

ansiColor('xterm') {
    stage "\u001B[31mI'm Red\u001B[0m Now not"
}

введите здесь описание изображения

Итак, Jenkins может отображать цвет ANSI, но вывод aws-sam-cli не в цветном формате.

Любые идеи или указатели будут полезны.


person Haran    schedule 19.02.2020    source источник


Ответы (1)


aws-sam-cli использует библиотеку click для форматирования вывода, включая обработку цвета.

документация для click объясняет, почему вы видите то, что вы видите:

Начиная с версии Click 2.0 функция echo() получила дополнительную функциональность для работы с цветами и стилями ANSI. [...]

В первую очередь это означает, что:

  • Функция echo() автоматически удаляет цветовые коды ANSI, если поток не подключен к терминалу.

Это типичное поведение большинства программ, однако некоторые программы позволяют переопределить это, обычно с помощью параметра --color.

В вашем случае я бы посоветовал попросить улучшить систему отслеживания ошибок от click.

Изменить: уже был один.

person MaratC    schedule 19.02.2020