Доступ к плагинам в классах общей библиотеки jenkins - PullRequest
0 голосов
/ 05 мая 2018

Я хотел создать класс в каталоге /src, который мог бы получить доступ к докеру и другим шагам плагина.

Итак, у меня есть класс, который выглядит так:

class someClassName implements Serializable {
    def env
    def steps
    def docker

    someclassName(env, steps, docker){
        this.step = step
        this.docker = docker
        this.env = env
    }

    def runCommands(String img, List commands){
       docker.image(img).inside {
           commands.each {
             steps.sh it
           }
       }
    }

Теперь в Jenkinsfile у меня будет

@Library('name@branch') _
def x = new com.JenkinsLibrary.someClassName(env, steps, docker)
x.runCommands('maven:latest', ['mvn clean', 'mvn test'])

Что мне не нравится, так это то, что у меня есть конструктор для каждого объекта, чтобы я мог вызывать методы, принадлежащие этому объекту. Есть ли лучший объект, который я могу использовать для моего конструктора вместо использования env, steps, docker и т. Д.?

Кроме того, какие шаги конвейера доступны для объекта шагов? то же самое для env?

1 Ответ

0 голосов
/ 05 мая 2018

Попробуйте отправить по окружающему CPSScript:

class someClassName implements Serializable {
    def script

    someclassName(script){
        this.script = script
    }

    def runCommands(String img, List commands){
        script.docker.image(img).inside {
            commands.each {
                script.sh it
           }
       }
    }
}

и вы предоставляете сценарий, используя this в сценарии конвейера:

@Library('name@branch') _
def x = new com.JenkinsLibrary.someClassName(this)
x.runCommands('maven:latest', ['mvn clean', 'mvn test'])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...