问题标签 [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 投票
0 回答
1650 浏览

java - Jenkins 声明式管道中没有这样的 DSL 方法

我有以下管道文件,用于在 openstack 中创建实例。

dev-shared-lib@master上面使用的库中,我的openStackClient.groovy文件位于/vars/目录中,内容如下

共享库在 Jenkins 已正确配置,我刚刚返回Hi检查它是否正常工作。运行上述管道后,将引发以下错误,我在这里做错了什么?

0 投票
1 回答
460 浏览

jenkins - 在 Jenkins 共享库基础架构中,如何在另一个文件中导入类?

我正在使用Jenkins 共享库插件并具有以下结构

我有这个baseClass.groovy

我希望能够做到这一点subClass.groovy

这个想法是我想在我的 BaseClass 中定义公共属性并在我的 SubClass 中重用(例如port)或覆盖(例如)它们。name你知道-OOD。我可以有几个子类都继承自 BaseClass。

然后在我的 Jenkins 管道作业配置页面中,我这样做(我在我的系统配置中将“my-repo”设置为共享库)

当我运行这个管道时,我得到以下信息。共享库是否支持这种层次结构?

0 投票
0 回答
303 浏览

jenkins - 在同一共享库中的其他管道中“包含”共享库管道

我有几个微服务使用来自名为jenkins-shared-pipelines的共享库中的相同管道。微服务的Jenkinsfile如下:

在 jenkins-shared-pipelines/vars 中,gradleProjectPrPipeline 有以下几个阶段:

现在,除了上述管道之外,jenkins-shared-pipelines(在同一个 vars 目录下)中还会有几个管道,例如:awsPipeline、azurePipeline 等,它们也将包含部署阶段。这些额外的管道将需要上述 gradleProjectBranchWrapper 中的所有阶段,并且还将添加一些自己的阶段。目前,我们只需将这些阶段复制粘贴到这些额外的管道中,

无效调用(映射 pipelineProperties = [:]){ 。. .

然后,我们从微服务调用这些新管道,例如:

很明显,由于克隆到 sonarScan 阶段很常见,因此存在代码冗余,但没有“基本管道”或其他方式将这些通用阶段包含在所有管道中。我想知道是否有办法“包含” gradleProjectPrPipeline(可以用作“基础管道”)管道,如 awsPipeline、azurePipeline 等。 笔记:

  • awsPipeline 等将使用工作区(克隆 stag 签出代码和后续阶段操作的地方)。换句话说,来自 gradleProjectBranchWrapper 的变量和结果应该可供 awsPipeline 等访问。
  • gradleProjectBranchWrapper 中有一个 post 块,其他管道可能有自己的 post 块
0 投票
1 回答
3193 浏览

jenkins - Jenkins 共享库 - 从 /vars 中的 /src 文件夹导入类

我正在尝试为我的 CI 流程编写一个 Jenkins 共享库。我想引用\src文件夹中定义的全局函数内的\vars文件夹中的类,因为它允许我将大部分逻辑放在类中而不是全局函数中。我正在关注 Jenkins 官方文档中记录的存储库结构: Jenkins Shared Library structure

这是我所拥有的简化示例:


/src/com/example/SrcClass.groovy


/vars/classFromVars.groovy


詹金斯文件

我的目标是让文件夹中的全局类/vars充当一种公共外观,并在我Jenkinsfile的自定义步骤中使用它,而不必在script块中实例化一个类(使其与声明性管道兼容)。这对我来说似乎很简单,但是在运行classFromVars文件时出现此错误:

我尝试在本地和 Jenkins 服务器上classFromVars直接使用 CLI 运行该类,但在两种环境中都有相同的错误。groovy我还尝试在运行/vars脚本时指定类路径,得到相同的错误,使用以下命令:

我想要实现的目标是可能的吗?或者我应该简单地将我的所有逻辑放在/vars课堂上并避免使用该/src文件夹?

我在 GitHub 上发现了几个似乎表明这是可能的存储库,例如这个:https ://github.com/fabric8io/fabric8-pipeline-library ,它使用/src文件夹中的类在许多类中/vars文件夹。

0 投票
3 回答
7391 浏览

jenkins - 将映射变量导入 Jenkinsfile 环境阶段

我的项目有许多其他项目的公共变量,所以我使用 Jenkins 共享库并创建了一个vars/my_vars.groovy文件,在其中定义了我的变量并返回它们的 Map:

我在我的 Jenkinsfile 中加载共享库,并在环境项目符号中调用该函数,因为我希望这些变量作为 environment variables 。

詹金斯文件:

问题是环境项目符号KEY=VALUE成对,因此我common_vars的地图像字符串值一样加载(我可以在 上看到sh "env")。

将这些值声明为环境变量的正确方法是什么?我的目标是:

0 投票
0 回答
223 浏览

jenkins - 在 jenkins-shared-libraries 中的包内导入包

我的jenkins-shared-libraries结构是这样的:

实用程序.groovy:

数据.groovy:

mainPipeline.groovy: 数据.groovy:

导入效果很好,但是,当我导入它时utils出现异常:mainPipelinedata.groovy

utils里面怎么用data?谢谢。

0 投票
0 回答
885 浏览

jenkins - Jenkins 共享库 - 加载变量

我的项目有许多其他项目的公共变量,所以我使用 Jenkins 共享库并创建了一个vars/buildMeta.groovy文件,我在其中定义了我的变量(一些sh解析函数),并在环境阶段使用它们(var1,var2):

我决定将 , 导出varAvarB共享vars/my_vars.groovy并从那里使用它们(当我必须使用var1, var2vars 传输配置映射时)。

问题是,为了将这些变量声明为环境变量,我使用了这种方式:

但是这样buildMeta vars(var1,var2)还没有定义,所以我无法正确初始化my_vars.loadVars()调用。另一方面,我无法复制这些buildMeta.groovy功能,my_vars.loadVars()因为前者有sh用法,而对后者的调用未在阶段(脚本)下定义。

我可以通过将所有这些函数调用放在一个单独的阶段(比如说“加载变量”阶段)来解决所有这些问题,但我真的想避免那个虚拟阶段。最好的做法是什么?

谢谢!

0 投票
3 回答
868 浏览

jenkins - 如何在jenkins中实现共享库,而不在“管理Jenkins”中配置“全局管道库”?

由于我无权访问组织中的“管理 Jenkins”菜单,因此无法在“管理 Jenkins”的“全局管道库”中配置我的共享库。

有没有其他方法可以实现这一点,而无需在 Manage Jenkins 中进行配置?

(或者)

是否可以通过管道脚本配置“全局管道库”部分,而不管访问权限如何?

如果可能,请您在答案中分享一些代码片段。

0 投票
1 回答
381 浏览

jenkins - 隐式加载共享库

我想将全局库集成到我的构建流程中。我写了一个基本功能

srv/core/jenkins/Checks.groovy:

它被暴露为一个全局变量

变量/文件Exisits.groovy:

在 Jenkins 中配置全局共享库设置时,我有以下设置:

在此处输入图像描述

现在在我的 jenkinsfile 中,我正在做这样的事情:

这总是给出错误

为了让它工作,我必须将这些行添加到我的 Jenkinsfile 的顶部

有没有办法让我fileExists从库中调用函数而不必总是添加上述两行?

0 投票
1 回答
745 浏览

jenkins - 调用不带参数的共享库函数

我正在使用带有 jenkins 2 的共享库。意思是,我正在利用重用我在各个阶段编写的一些管道代码的能力。

这是模块vars/utils.groovy的示例

当尝试在管道脚本中执行它时,它会失败并出现以下错误:

我怀疑这是因为我没有将任何变量传递给这个函数,因此它没有正确实例化。

所以实际的问题可能是“如何调用不需要参数的共享库函数”?