访问jenkins共享库类中的插件

时间:2018-05-05 19:22:17

标签: jenkins jenkins-pipeline jenkins-shared-libraries

我想在/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来说是一样的吗?

1 个答案:

答案 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'])