2017-02-09 3 views
2

При создании конвейеров Jenkins или библиотек, которые должны использоваться в конвейере, часто бывает сложно отлаживать код с предоставленными параметрами ведения журнала. На данный момент я лесозаготовка с этим:Запись журнала Jenkinsfile

node { 
    ... 
    sh "echo ${thingtoshow}" 
} 

Недостатком является то, что это не очень мощным, когда речь идет о Groovy/Java конкретных деталей - например он не позволил бы мне сбросить содержимое объектов сразу

Это создает беспорядок в реальных журналах:

[Pipeline] sh 
[workspace] Running shell script 
+ echo 'things' 
things 

Так как я мог писать логи, чтобы просто получить одну строку вывода журнала в пределах консоль Jenkins?


Edit: Даже если пример кода не отображается, но это особенно полезно при разработке совместно Groovy libraries для Jenkins трубопроводов

ответ

5

Вы можете использовать echo этап:

node { 
    echo "qwerty" 
} 

Это приводит к двум линиям:

[Pipeline] echo 
qwerty 

Unfortuna он генерирует две строки, но насколько я знаю, это кратчайшая форма.

+0

Спасибо (я слепой) - Это решает, по крайней мере одна из двух проблем - меньше беспорядка, но до сих пор не равный правильному регистратору. – pagid

+0

Что вы ищете в правильном журнале? Например. что отсутствует с шагом «echo»? –

+0

Ну, я бы ожидал выбросить какой-либо объект в журнал, и он должен напечатать что-то полезное, в то время как 'echo currentBuild' оставит меня со стеком strace – pagid

1

Вы также можете вызвать ядро ​​Java Logger.

import java.util.logging.Logger 

Logger logger = Logger.getLogger('org.example.jobdsl') 
logger.info('Hello from a Job DSL script!') 

выше даст вам такую ​​запись в http://yourjenkinsurl/log/all:

Jan 22, 2018 3:27:58 PM INFO org.codehaus.groovy.reflection.CachedMethod invoke 
Hello from a Job DSL script!