Jenkins Pipeline Jenkinsfile 加载外部 groovy 类

nin*_*nja 7 groovy jenkins jenkins-pipeline

有人可以建议如何将外部 groovy 类加载到 Jenkinsfile 中吗?一般来说,我想通过构造函数传递参数来构建实例。下面的示例代码。

詹金斯文件

stage('Demo stage') {
   //missing part  
  
}
Run Code Online (Sandbox Code Playgroud)

工具.groovy

public class Demo {
     String message;
     
     Demo(String message) {
        this.message=message;
     }
     

    public void print(def script) {
        script.sh "echo " + message
    }
}
Run Code Online (Sandbox Code Playgroud)

f-s*_*ety 0

如果您的外部 groovy 文件位于 JenkinsFile 所在的同一存储库中,您可以简单地使用“load”,如下所示

mytools = load 'Tools.groovy'
Run Code Online (Sandbox Code Playgroud)

如果它在另一个仓库中,则需要在加载 groovy 文件之前签出 scm,如下所示

checkout changelog: false, poll: false, scm: [$class: 'GitSCM', branches: [[name: '*/master']], doGenerateSubmoduleConfigurations: false, extensions: [[$class: 'RelativeTargetDirectory', relativeTargetDir: 'jenkins-scripts']], submoduleCfg: [], userRemoteConfigs: [[credentialsId: '******', url: 'https://github.com/jenkins_scripts.git']]]
Run Code Online (Sandbox Code Playgroud)

  • “load”对于函数来说效果很好,但似乎无法处理类(根据问题)。 (4认同)