问题标签 [jenkins-shared-libraries]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
629 浏览

jenkins-pipeline - 在 groovy 中创建自定义步骤

我正在使用 jenkins 管道并拥有一个共享的全局库。我创建了几个用户可以使用的函数,但是我面临的主要问题是在控制台输出和蓝海中有更好的输出:有没有办法在 groovy 中创建一个命名块(例如在调用 sh 函数时输出包含在里面)?我试着玩这样的阶段:

然而这种方法并没有奏效。我知道您可以通过为 Jenkins 编写插件然后在您的 groovy 脚本中调用该函数来创建自定义步骤,我只是在徘徊,如果有一种方法可以直接在 groovy 中编写这样的东西,比如在我的库中。

还有没有办法让输出静音?

提前感谢大家

0 投票
2 回答
4157 浏览

jenkins-pipeline - 如何从 Jenkins 共享库运行 vars/script.groovy

我正在尝试从位于从共享库 Jenkins 类调用的 vars 下的 groovy 脚本获取信息,但出现错误。一些信息:

  • 需要- 全局配置文件。类似于管理 Jenkins -> 配置系统 -> 环境变量

  • 目标- 能够在共享库中获取全局值,而无需从 Jenkinsfile 发送参数。

  • 我的解决方案- 我尝试使用适用于 Jenkinsfile 但不适用于共享库的“vars/script.groovy”。

文件结构

变量/globals.groovy

shared_library 类

詹金斯文件

所以,我可以看到管道中第一个打印的值,但第二个我得到:

没有这样的属性:类的全局变量:src.org.jenkins.shared_library

0 投票
0 回答
622 浏览

jenkins - 如何在 Jenkins 共享库中导入外部类

我试图将非共享库类导入共享库类并收到错误:

文件结构

not_shared_library 类

shared_library 类

詹金斯文件

/jenkins_data/jobs/main_DEV/builds/51/libs/global_utils/src/org/jenkins/shared_library.groovy:8:无法解析类 src.org.jenkins.not_shared_library @ 第 8 行,第 1 列。导入 src.org。 jenkins.not_shared_library @ 第 116 行,第 21 列。 not_shared_lib = new not_shared_library("not_shared_lib") ^

0 投票
1 回答
414 浏览

groovy - 无法解析静态方法中的类

我有一个 groovy 类“Utils.groovy”,其中包含方法“makeHttpCall()”。这是该方法的总结版本:

编译器抱怨:

Groovy:在静态范围内找到了明显的变量“javax”,但不引用局部变量、静态字段或类。

但是,如果我使该方法成为非静态方法,它将停止抱怨;

这样它就不会抱怨。为什么编译器会抱怨这个?

请注意,该方法运行没有问题;它作为 Jenkins 共享库的一部分运行。

谢谢!

编辑:使用 import javax.ws.rs.core.HttpHeaders

Groovy:无法解析类 javax.ws.rs.core.HttpHeaders

所以编译器无法解析该类,但它是在 Jenkins 中运行时。

0 投票
1 回答
3493 浏览

jenkins-shared-libraries - 如何从 Jenkinsfile 管道调用带有参数和闭包的 Jenkins 2 共享库?

我想从管道中调用下一个共享库:

[链接] https://github.com/docker/jenkins-pipeline-scripts/blob/master/vars/wrappedNode.groovy

我不知道如何从 Jenkins 2 管道调用和填充 vars 映射和主体闭合。

我的共享库名称是“vars/my_shared_library.groovy”,它们的内容是

Jenkinsfile 内容为:

0 投票
1 回答
378 浏览

jenkins - Jenkins 共享库 - 为选项部分创建一个通用函数

我想扩展我们的共享库使用 - 想添加一个包含管道所有选项的函数:

所以在我的管道中,我会有类似的东西

尝试了类似的东西,但它没有用

找不到怎么做...,有可能吗?

0 投票
0 回答
426 浏览

jenkins - 在共享库中重构 jenkins post 块

我正在拼命地尝试为我的所有管道重构一个 post 块。我想在每次管道执行后推送一个松弛通知。一个管道的代码如下所示:

我可以轻松地创建要调用的自定义函数或要在 step 块中执行的自定义块,但似乎不可能在 customPost 函数中重构整个 post 块 => 我的自定义块不被接受为管道子项。

有人知道这是否可行吗?

谢谢

0 投票
1 回答
1730 浏览

jenkins - 如何在从管道共享库继承的 jenkinsfile 中定义其他参数?

我想增加一种扩展 Jenkins 管道中定义的全局参数的可能性。每个调用默认管道的 JenkinsFile 都有默认参数,他可以自己定义参数,如下所示:

我的 generic_pipeline 是在共享库 generic_pipeline.groovy 中定义的,它们已经具有如下默认参数:

我怎样才能做到这一点 ?如何为继承定义附加参数?

谢谢

0 投票
2 回答
22644 浏览

jenkins - Jenkins groovy MissingMethodException 没有方法的签名

我面对

getThingsDone() 适用于参数类型:() 值:[]

代码错误如下,

我尝试定义 getThingsDone(...)

  • 没有任何论据
  • 带字符串参数
  • 使用地图参数

没有任何效果。所以我想要一个不接受任何参数的函数启动并运行。但它分解了整个堆栈跟踪,如下所示,

0 投票
0 回答
130 浏览

jenkins - 触发一次特定的下游作业

我有一个构建一个或多个下游作业的管道,但我只想构建一次下游作业。

主要原因是一些job是基于多个条件触发的,如果其中一个条件匹配,我会触发几次那个job。我们可以为每个下游作业设置限制吗?或者至少设置一个我可以在触发另一个重复作业之前检查的标志?

我使用的当前工作构建如下: build(job: job, parameters: jobparams, wait: false)

是否有任何变量可以访问以了解当前作业触发的下游作业?