访问 jenkins 共享库类中的插件

Z Y*_*Y . 4 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
           }
       }
    }
Run Code Online (Sandbox Code Playgroud)

现在在Jenkinsfile我将有

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

我不喜欢的是我如何为每个对象创建一个构造函数,以便我可以调用属于该对象的方法。有没有更好的对象可以用于我的构造函数,而不必使用 env、steps、docker 等?

此外,steps 对象下有哪些管道步骤可用?环境一样吗?

Jon*_*n S 5

尝试沿周围发送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
           }
       }
    }
}
Run Code Online (Sandbox Code Playgroud)

并且您通过this在管道脚本中使用来提供脚本:

@Library('name@branch') _
def x = new com.JenkinsLibrary.someClassName(this)
x.runCommands('maven:latest', ['mvn clean', 'mvn test'])
Run Code Online (Sandbox Code Playgroud)