Как использовать общие/общие методы groovy в контексте Jenkins Job DSL Plugin

используя GroovyConsole, у меня есть файл main.groovy с:

new Helpers().test("test method called")

и в том же каталоге есть файл Helpers.groovy с содержимым

def test(String str) {
    println "test method called with: " + str
}

Запуск результатов в результатах:

groovy> new Helpers().test("test method called") 

test method called with: test method called

Однако в контексте использования Jenkins DSL у меня есть аналогичный код в файле generator.groovy:

new Helpers().test("test method called")

то в Helpers.groovy в том же каталоге у меня есть:

def test(String str) {
    println("test method called on: " + str)
}

Однако, когда я запускаю, я не получаю никакого вывода (от println) в журналах. Если вместо этого у меня есть def в том же файле main.groovy, он работает нормально.

Вероятно, упущено что-то фундаментальное. Он компилируется / зеленый в jenkins, поэтому не уверен, как это адаптировать, поэтому среда выполнения будет делать то, что я хочу.

В каких журналах вы ищете вывод, вывод консоли из задания или системный журнал jenkins? Дженкинс перехватывает println и отправляет его на задание «консольный вывод», однако System.out все равно будет писать в журнал сервера.

stringy05 23.04.2019 01:07

Я смотрел на вывод консоли, значит, он должен быть там, но его нет. Похоже, проблема в том, может ли выделенный код совместно использовать «контекст»?

JohnZaj 23.04.2019 18:29
"DevOps: Jenkins & AWS Series, часть 5: Установка Gradle на Ubuntu 22.04
"DevOps: Jenkins & AWS Series, часть 5: Установка Gradle на Ubuntu 22.04
В этой статье блога мы проведем вас через процесс установки Gradle на Ubuntu 22.04, интеграции его с Jenkins и создания задания Gradle. Мы...
5
2
502
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вам нужно импортировать класс при вызове метода из другие файлы

Make a directory at the same level as the DSL called utilities and create a file called MyUtilities.groovy in the utilities directory with the following contents:

package utilities

class MyUtilities {
    static void addMyFeature(def job) {
        job.with {
            description('Arbitrary feature')
        }
    }
}

Then from the DSL, add something like this:

import utilities.MyUtilities

Так показывает ли этот пример кода, что у вас может быть общий/общий код Jenkins DSL? Например scm, configure, logRotator?

JohnZaj 23.04.2019 18:40

Другие вопросы по теме