所以我试图通过将它们放在\vars
目录中的groovy文件中来定义文件夹级别变量。
G1
和G2
,这是我们在groovy文件中定义它们的方式吗?
#!Groovy
static string G1 = "G1"
static string G2 = "G2"
假设Groovy文件名为XYZ.Groovy
,我如何在文件夹中定义它以使其可用于文件夹的脚本?
假设我克服了这一点,并且LIBXYZ
是该文件夹与/vars
目录中的内容相关联的名称,假设我打电话时是正确的
@Library("LIBXYZ") _
它会使XYZ
可用吗?
在这种情况下,访问全局变量的方式是XYZ.G1
吗?
谢谢,a。
答案 0 :(得分:0)
我有一个工作示例here,因为我最近对此感到好奇。我同意文档很糟糕。
以下内容与README.md
中的信息类似。
准备:请注意,此处的文件夹是指CloudBees文件夹插件中的Jenkins文件夹。这是一种组织工作的方式。
代码布局
要注意的第一部分是src/net/codetojoy/shared/Bar.groovy
:
package net.codetojoy.shared
class Bar {
static def G1 = "G1"
static def G2 = "G2"
def id
def emitLog() {
println "TRACER hello from Bar. id: ${id}"
}
}
第二部分是vars/folderFoo.groovy
:
def emitLog(message) {
println "TRACER folderFoo. message: ${message}"
def bar = new net.codetojoy.shared.Bar(id: 5150)
bar.emitLog()
println "TRACER test : " + net.codetojoy.shared.Bar.G1
}
修改:使用静态/"全局" vars
文件夹中的变量,请考虑以下vars/Keys.groovy
:
class Keys {
static def MY_GLOBAL_VAR3 = "beethoven"
}
folderFoo.groovy
脚本可以使用Keys.MY_GLOBAL_VAR3
。
然后使用(在我的例子中:Basic.Folder.Jenkinsfile
):
@Library('folderFoo') _
stage "use shared library"
node {
script {
folderFoo.emitLog 'pipeline test!'
}
}
Jenkins设置:文件夹
folderFoo
master
Modern SCM
Jenkins设置:管道作业
Basic.Folder.Jenkinsfile