jenkins - 如何在没有调用方法的情况下访问 vars/*.groovy Jenkins 库中的全局变量/函数?
问题描述
共享库中的菜鸟,我对Jenkins 文档部分“动态加载库”感到困惑。
遵循Stackoverflow_answer,但我有一些不同的需求,只是想用一个参数从库调用一个函数到管道。
注意: Jenkins 库配置是正确的,并且已经使用另一个示例call
方法检查了库访问权限
vars/foo.groovy 包含函数
//{Root}/vars/foo.groovy
def Foo_Func(Body){
Body= Body + "This is a Message from Shared Lib."
return Body
}
Body
变量已经定义到主管道中'bar.jenkinsfile'
我真正的问题是如何在foo.groovy
不使用调用方法的情况下调用函数,我尝试了以下 -
//somefolder_in_scm/bar.jenkinsfile
@Library('jenkins-shared-libs') _
def Body_Main=""
deg SUBJECT="Title 1"
def NativeReceivers = "abc@xyz.com"
pipeline{
node any
stage{
script {
/*Some script*/
}
}
post {
always {
script {
foo.Foo_Func(Body_Main)
// send email
emailext attachLog: true,
mimeType: 'text/html',
subject: SUBJECT,
body: Body_Main,
to: NativeReceivers
}
}
}
}
由于我使用过_
,我希望不需要导入。触发管道后发生的错误,
groovy.lang.MissingMethodException: No signature of method: java.lang.Class.Foo_Func() is applicable for argument types:
在错误中,为什么函数Foo_Func
被视为一个类?可能需要以不同的方式给出论点。任何帮助表示赞赏。
解决方案
我也在写一个共享库。我认为问题出在:
def Foo_Func(Body)
对我有用的是:
def Foo_Func(Map Body)
所以如果你尝试:
def Foo_Func(String Body)
它应该工作。我认为它找不到具有正确签名的功能。
推荐阅读
- javascript - 如何在不影响样式的情况下阻止页面滚动?
- branch.io - Branch.io 深度链接在 iOS 13+ 上不起作用。它不显示打开应用程序的弹出窗口(Ionic 5,电容器)
- react-native - 如何在 React Native 的函数中调用类?
- java - 在java中将水平星号直方图翻转为垂直直方图
- python - 试图从职业足球参考资料中抓取数据
- python - 对齐两列中的键值对
- php - 用 HTML 包含 php 数据库数据的最佳方法是什么
- maven - 是否可以在相同的执行后生成多个具有不同配置的 HTML 报告?jmeter-maven-插件
- regex - 如何使用 Google Sheet REGEXEXTRACT 公式提取完全用大写字母(变音符号)书写的单词?
- zap - -ZAP 上的密码加密