我想在/src
目录中创建一个可以访问docker和其他插件步骤的类。
所以我有一个看起来像这样的课程;
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等?
此外,在steps对象下可以使用哪些管道步骤?对于env来说是一样的吗?
答案 0 :(得分:2)
尝试沿着周围的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'])