#jenkins #singleton #shared-libraries
Вопрос:
Я создаю общую библиотеку Дженкинса и хочу сохранить глобальное состояние. В папке /vars я создал сценарий регистратора, но когда я использую его в другом сценарии в /vars, у него, по-видимому, есть своя собственная копия, поскольку в документации говорится: «Внутренне сценарии в каталоге vars создаются по требованию как синглеты».
vars/log.groovy
@goovy.transform.Field
Level level = INFO
call( Level l, String message ) {
if (level >= l) {
echo message
}
}
и я использую его в другом сценарии:
vars/foo.groovy
call() {
log DEBUG, "hello world"
}
в основном сценарии:
log.level = DEBUG
// or log.setLevel(DEBUG) but Groovy will
// create a synthetic method
foo // or foo()
foo() вызовет log (), но уровень ведения журнала в foo всегда будет ИНФОРМАЦИЕЙ.
Поэтому мой вопрос заключается в том, как сценарии могут совместно использовать одноэлементное значение между ними.
Комментарии:
1. Я создал синглтон в каталоге /src. Я могу сохранить состояние, уровень журнала, во всех случаях использования log(). Но один лайнер превратился в запутанную ссылку на класс в другом месте.