Доступ к плагинам в классах общей библиотеки 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'])