当前位置: 首页 > 知识库问答 >
问题:

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

赵献
2023-03-14

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

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

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

groovy模块可以引用主jenkinsfile中定义的变量吗?(假设这是个好主意)

共有1个答案

司空鸣
2023-03-14

是的,您可以使用Jenkinsfile中创建的变量。你可以只使用def MYVAR或使用env。MYVAR;这些可以从脚本的其余部分访问。

考虑到你的用例,这是一个坏主意——你有多个Jenkinsfile,因此你最终会在多个地方维护你的JFrog相关配置。

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

 类似资料:
  • 问题内容: 使用Jenkins 2.x中 的Pipeline插件,如何从一个步骤中访问在阶段或节点级别某个位置定义的Groovy变量? 简单的例子: 在Jenkins输出页面上给出以下内容: 可以看到,在该步骤中将打印一个空字符串。 解决方法是通过以下方式在环境范围内定义变量 并通过打印 但是,这种滥用会破坏此任务的环境范围。 问题答案: 要使用可模板化的字符串(将变量替换为字符串),请使用双引号

  • 我可以将类实例声明为全局实例,如下所示: 但是如果管道调用“vars”目录中定义为groovy脚本的函数,不再可见 我也尝试使用@Field,但它并没有改变什么。请注意,所有管道都是在共享库中定义的(jenkinsfile项目只调用此共享库中的一个函数)。 在本例中,如何从/vars中的groovy脚本访问gitUtils? 我知道我们可以将该实例作为/vars中声明的函数的参数传递,但使用实用类

  • 问题内容: 是否有可能在另一个文件内部使用一个文件中的变量? 包含一个名为的变量。 问题答案: 正如Fermin所说,声明后,所有加载的脚本都应可以访问全局范围内的变量。您也可以使用或的属性(在全局范围内)获得相同的效果。 …在另一个文件中… …在您的html文件中…

  • 问题内容: 我最近发现了如何通过此方法在python中动态创建变量: 从而创建变量。 我的问题是,这是个好主意吗?还是应该总是提前声明变量? 问题答案: 我认为最好使用字典: 我认为这更像Python。

  • 我正在使用共享库在Jenkins中构建CI/CD管道。在我的例子中,一些阶段需要通过网络应用编程接口发送执行信息。在这种情况下,我们需要将当前阶段的阶段id添加到api调用中。 如何访问与${stage_NAME}类似的stage id?

  • 问题内容: 如何设置变量,并使其在所有路由中都可用,至少在路由中的文件中可用。使用快速框架和 问题答案: 要创建全局变量,只需声明不带关键字的变量即可。(通常来说,这不是最佳做法,但在某些情况下可能会有用-请小心,因为它将使变量随处可见。) 这是visionmedia / screenshot-app的示例 文件 app.js : 文件 路由/ main.js