问题标签 [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 回答
248 浏览

jenkins - 有没有办法跟踪 Jenkins 中全局共享库的使用情况?

语境:

  • 在我的工作中,大多数开发人员都可以自由地为自己团队的项目编写自己的 Jenkinsfile。
  • 作为 Jenkins 管理员,我为开发人员提供了一个全局共享库。
  • 大多数项目都使用 v1 或 v2 或 v3 或此库的另一个版本,使用 idiom library("theSharedLib@v#")

问题:有没有办法让我找出哪个 Jenkinsfile 正在使用哪个版本的共享库,而无需实际查找所有这些 Jenkinsfile 文件(在尽可能多的 git repos 中的 50 多个文件)?

我会看到最好的是一些机制,它在加载库时写入(写入 Jenkins 主机或数据库中的文件)哪个项目/Jenkinsfile 正在使用哪个版本。

一种可能的解决方案是向库中的每个函数添加一些代码,这些函数实际上会执行此报告。然后我可以看到谁使用了哪个功能。有更好的解决方案吗?

0 投票
1 回答
922 浏览

jenkins - 从工作管道内的詹金斯图书馆调用闭包

我有处理结帐的带有 handleCheckout.groovy 的 jenkins_library:

在导入 jenkins-library 之后,我试图从管道中调用它:

它以错误结束:

在管道内声明和调用方法时效果很好。

0 投票
1 回答
708 浏览

jenkins - Jenkins 共享管道库 - 获取构建状态

我正在尝试为 Jenkins 管道项目构建一个可重用的库,但我似乎无法弄清楚如何获取构建状态以及设置它。如果我使用 Jenkinsfile 或 vars 脚本,它可以工作,但我感兴趣的是使用 src/ 库结构。

我已经设法通过使用接口使其他东西正常工作,例如常规 git、sh、node、stage 步骤,但我无法让“currentBuild”包装器工作。我尝试了很多东西,我认为我需要使用 RunWrapper 但我无法弄清楚。

我以前可以直接在我的管道脚本中使用以下块,现在我想将它移动到我的库中: currentBuild.result = "UNSTABLE"

0 投票
1 回答
297 浏览

jenkins - 如何在 Jenkins 共享变量中使用 Closure 创建包装 Jenkins withCredentials 的 withXCredentials?

我想在我的管道脚本中使用这种语法的代码:

请注意,您可以将任何代码放入其中withXCredenitals以执行。withXCredentials.groovy驻留在vars文件夹下的我的 Jenkins 共享库中,它将使用 Jenkins 原始文件withCredentials

我仍在学习高级的 groovy 东西,但我不知道如何做到这一点。

请注意

我的问题更多是关于 groovy 和 using 的语法,而这里Closure的答案不是我所追求的。使用该解决方案,我需要先实例化该类,然后再调用该方法。所以我试图避免做这样的事情:

在 Jenkins 文档中,它有一个使用闭包的示例:

但它没有解释如何传递这样的参数

这里

0 投票
1 回答
2008 浏览

jenkins - 从 Jenkinsfile 中的共享库导入类

我有一个具有这种结构的共享库存储库:

该库通过 Jenkinsfile 导入作业,如下所示:

src/com/company/DeploySteps.groovy 中的 repo 中的类有一个我想包含在 Jenkinsfile 中的方法(例如 CheckoutSCM)。

部署步骤.groovy:

是否有可能在 Jenkinsfile 中包含此特定方法,例如

然后像这样使用它:

稍后在 Jenkinsfile 中?我多次阅读文档src但没有找到答案是否有可能从文件夹中导入某些内容,而不仅仅是从vars.

为什么我要问,因为现在导入时:import com.company.DeployUtils然后尝试调用方法CheckoutSCM()在 Jenkins 控制台输出中看到错误:

java.lang.NoSuchMethodError:在步骤中找不到这样的 DSL 方法“CheckoutSCM”

下面列出了可用的方法,CheckoutSCM肯定没有我的)

那么,是否有可能从src文件夹导入类到 Jenkinsfile?

PS我可以在Jenkinsfile MainDeploySteps中访问

但是没有问题。

0 投票
2 回答
1371 浏览

jenkins - 如何从 src 目录中的类中访问共享库资源文件夹中的静态文件

我有具有以下结构的 Jenkins 共享库:

在 src/com/rathath/jenkins/Configuration.groovy 中,我想读取资源目录中的 YAML 文件。

我试过了 :

不幸的是,我得到hudson.model.Executor.currentExecutor()的是空的。

我尝试了另一种方法:

我遇到了更大的问题,.. Jenkins 无法加载文件:

0 投票
2 回答
248 浏览

jenkins - 通过 Grab 添加的外部库的可选依赖项不可用

无法在 Jenkins 的共享库中正确使用具有可选依赖项的外部第三方库。

我有一个共享库,它使用Commons Configurations 2来读取各种配置文件,主要是作为 YAML 文档编写的。

Commons 配置使用 SnakeYAML 读取 YAML 文档,并且对 SnakeYAML 的依赖定义为可选,如下所示:

根据Maven 的文档,可选依赖项如何工作,默认情况下不会将可选依赖项添加到类路径中。如果一个人想要依赖于可选依赖的库的一部分,它必须将此依赖添加到他自己的 POM 中。

由于我打算将 Commons Configuration 2 与 SnakeYAML 结合使用,因此我定义了以下变量,vars/readConfig.groovy如下所示:

readConfig()从共享库调用会产生java.lang.ClassNotFoundException以下消息

我还检查了目录~/.groovy/grapes中是否存在所有需要的 jar,它们都在那里。

为了进行交叉检查,我编写了以下 Groovy 脚本,并且能够在我的计算机上成功执行它。

所以,我无法猜测这个问题的原因,因为我对 Jenkins 的内部结构不太熟悉。但是很高兴知道是否有办法让它按预期工作。

0 投票
0 回答
61 浏览

jenkins - 从文件夹共享库调用时,Jenkins groovy 代码失败

我有一个 groovy 类,我试图从文件夹级共享库中导入它。

这是 groovy 类 -

我尝试使用此管道代码创建此类的实例:

从 Jenkins Global 共享库调用时可以正常工作,但从文件夹级共享库调用时则不行。全局共享库和文件夹级共享库指向同一个代码。从文件夹级共享库调用时,我收到此错误:

有谁知道为什么会这样?

0 投票
1 回答
192 浏览

jenkins - 如何在 Jenkins 文件(管道)中使用 Shared Libray 中的 groovy 常量?

我想在我的 Jenkins 管道中使用 Shared Libray 中的 grrovy 常量。我试试这个,但我有这个错误:

org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed: WorkflowScript: 27: Not a valid stage section definition: "def paramChecker = ParameterChecker.new(this)". Some extra configuration is required. @ line 27, column 9. stage('Checkout') {

0 投票
1 回答
119 浏览

jenkins - 是否可以将 Jenkins 共享库转换为 Jenkins 插件?

我有一个 Jenkins 共享库,它支持结帐、构建等功能。是否可以将整个库转换为插件,使其更便携并保护代码?

或者我可能不会公开代码但让用户能够通过调用函数来访问所有功能的任何其他方式?