我想将Global库集成到我的构建流程中。我已经写了一个基本功能
srv / core / jenkins / Checks.groovy:
package core.jenkins
class Checks implements Serializable {
def script
Checks(script) {
this.script = script
}
def fileExists(){
script.echo "File exists in the repo."
}
}
它作为全局变量公开
vars / fileExisits.groovy:
def call() {
new core.jenkins.Checks(this).fileExists()
}
在Jenkins中配置全局共享库设置时,我具有以下设置:
现在在我的jenkinsfile中,我正在做类似这样的事情:
pipeline {
agent { label 'master' }
stages {
stage('Check for md files'){
steps {
sh 'echo hello'
script {
checks.fileExists()
}
}
}
}
}
这总是会出现错误
groovy.lang.MissingPropertyException: No such property: checks for class: groovy.lang.Binding
at groovy.lang.Binding.getVariable(Binding.java:63)
at
要使其正常工作,我必须将行添加到Jenkinsfile的顶部
import core.jenkins.Checks
def checks = new Checks(this)
我是否可以通过一种方法从库中调用函数fileExists
而不必总是添加上述两行?
答案 0 :(得分:2)
只需替换:
checks.fileExists()
具有:
fileExists()
所有实现def call()
方法并存储在vars/
文件夹中的Groovy脚本都可以通过其脚本文件名来触发。另外,如果您想保留checks.fileExists()
语法,则需要创建vars/checks.groovy
脚本文件并在其中执行def fileExists()
方法。