groovy模块可以访问基于Jenkins文件的部署管道中的全局变量吗?这样做是一个好主意吗?

groovy模块可以访问基于Jenkins文件的部署管道中的全局变量吗?这样做是一个好主意吗?,jenkins,groovy,jenkins-pipeline,jenkins-groovy,Jenkins,Groovy,Jenkins Pipeline,Jenkins Groovy,我正在使用一组基于Jenkinsfile的部署管道,其中管道中的每个步骤都已分解到从主Jenkinsfile调用的通用groovy模块库中 我的任务是将JFrog集成到一些(但不是全部)开发管道中 我正在考虑在Jenkins文件中设置多个与JFrog相关的全局变量,这些变量(希望)可以从groovy模块中引用,以便我们可以有条件地在这些模块中为需要JFrog集成的管道实现备用路径 groovy模块能否引用主文件中定义的变量?(首先假设这是个好主意)是的,您可以使用在Jenkins文件中创建的变量

我正在使用一组基于Jenkinsfile的部署管道,其中管道中的每个步骤都已分解到从主Jenkinsfile调用的通用groovy模块库中

我的任务是将JFrog集成到一些(但不是全部)开发管道中

我正在考虑在Jenkins文件中设置多个与JFrog相关的全局变量,这些变量(希望)可以从groovy模块中引用,以便我们可以有条件地在这些模块中为需要JFrog集成的管道实现备用路径


groovy模块能否引用主文件中定义的变量?(首先假设这是个好主意)

是的,您可以使用在Jenkins文件中创建的变量。 您可以只使用
defmyvar
或使用
env.MYVAR
;这些将可以从您的其余脚本中访问

考虑到您的用例,这是一个坏主意-您有多个Jenkins文件,因此您将在多个地方维护与JFrog相关的配置


更好的替代方法是在库代码中为此配置创建一个对象-通过从Jenkins文件传递一个参数,您仍然可以有多个替代路径。

我认为这不是一个好主意。这将创建隐藏的依赖项,使代码更难理解,并可能在将来引入维护问题。我认为应该将JFrog变量作为参数传递给Groovy模块的函数,以明确依赖关系。