2015-06-18 2 views
1

Привет, все, что у меня есть, и я не могу понять это.Использование классов в jenkins job dsl

Так что я создаю некоторые вспомогательные классы для моего dsl для использования, но он просто не выполняет какой-либо метод в этих классах.

Я создал работу со следующим DSL в нем:

class TestIt { 
    def static helloStatic() { 
    println "[STATIC] - Hello" 
    } 

    def hello() { 
    println "[NORMAL] - Hello" 
    } 
} 

def runIt() { 
    println "Starting test" 
    println "-------------" 
    TestIt _test = new TestIt() 
    _test.hello(); 
    TestIt.helloStatic(); 
    println "-------------" 
    println "Done" 
} 

runIt(); 
TestIt.helloStatic(); 

Когда я запускаю эту работу с Дженкинс он не отображает/EXECUTE либо статический или обычный метод. Нужно ли мне каким-то образом вводить класс в текущий текущий контекст или делать что-то еще?

Также обратите внимание, что если я запустил этот точный сценарий из командной строки, используя версию github для плагина ddl job и gradle, тогда скрипт вызывает методы.

ответ

5

При использовании Println в сценариях (в вашем примере, в функции runIt), Groovy посылает вызов на out переменной, определенной в сценарии, обязательными или System.out.println, если переменная не установлена. Плагин Job DSL устанавливает эту переменную таким образом, что вывод идет в журнал построения.

При использовании println в классах (в вашем примере будет указан класс TestIt), System.out.println. Таким образом, вывод отправляется на stdout. И в зависимости от того, как вы начали Jenkins, stdout - это, например, запустили консоль или /var/log/jenkins/jenkins.log.

Чтобы отправить выход из классов в журнал сборки, вам нужно передать переменную out к классу:

class TestIt { 
    def out 

    def static helloStatic(def out) { 
    out.println "[STATIC] - Hello" 
    } 

    def hello() { 
    out.println "[NORMAL] - Hello" 
    } 
} 

def runIt() { 
    println "Starting test" 
    println "-------------" 
    TestIt _test = new TestIt(out: out) 
    _test.hello(); 
    TestIt.helloStatic(out); 
    println "-------------" 
    println "Done" 
} 

runIt(); 
TestIt.helloStatic(out); 
+0

Спасибо, вот что мне нужно, чтобы начать работать снова. Документации не хватает для кого-то, у кого нет знания groovy (я в первую очередь на C++). Я посмотрю, могу ли я добавить это в wiki для github для других пользователей. –

+0

В следующей версии выпуска DSL будет представлен раздел о регистрации в документах, см. Https://github.com/jenkinsci/job-dsl-plugin/pull/512 – daspilker

Смежные вопросы