Доступ к плагинам в классах общей библиотеки jenkins

Я хотел создать класс в /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 ответ

Решение

Попробуйте отправить по окружающему 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'])
Другие вопросы по тегам