问题标签 [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.
java - Jenkins 声明式管道中没有这样的 DSL 方法
我有以下管道文件,用于在 openstack 中创建实例。
在dev-shared-lib@master
上面使用的库中,我的openStackClient.groovy
文件位于/vars/
目录中,内容如下
共享库在 Jenkins 已正确配置,我刚刚返回Hi
检查它是否正常工作。运行上述管道后,将引发以下错误,我在这里做错了什么?
jenkins - 在 Jenkins 共享库基础架构中,如何在另一个文件中导入类?
我正在使用Jenkins 共享库插件并具有以下结构
我有这个baseClass.groovy
我希望能够做到这一点subClass.groovy
这个想法是我想在我的 BaseClass 中定义公共属性并在我的 SubClass 中重用(例如port
)或覆盖(例如)它们。name
你知道-OOD。我可以有几个子类都继承自 BaseClass。
然后在我的 Jenkins 管道作业配置页面中,我这样做(我在我的系统配置中将“my-repo”设置为共享库)
当我运行这个管道时,我得到以下信息。共享库是否支持这种层次结构?
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 块
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
文件夹。
jenkins - 将映射变量导入 Jenkinsfile 环境阶段
我的项目有许多其他项目的公共变量,所以我使用 Jenkins 共享库并创建了一个vars/my_vars.groovy
文件,在其中定义了我的变量并返回它们的 Map:
我在我的 Jenkinsfile 中加载共享库,并在环境项目符号中调用该函数,因为我希望这些变量作为 environment variables 。
詹金斯文件:
问题是环境项目符号KEY=VALUE
成对,因此我common_vars
的地图像字符串值一样加载(我可以在 上看到sh "env"
)。
将这些值声明为环境变量的正确方法是什么?我的目标是:
jenkins - 在 jenkins-shared-libraries 中的包内导入包
我的jenkins-shared-libraries
结构是这样的:
实用程序.groovy:
数据.groovy:
mainPipeline.groovy: 数据.groovy:
导入效果很好,但是,当我导入它时utils
出现异常:mainPipeline
data.groovy
utils
里面怎么用data
?谢谢。
jenkins - Jenkins 共享库 - 加载变量
我的项目有许多其他项目的公共变量,所以我使用 Jenkins 共享库并创建了一个vars/buildMeta.groovy
文件,我在其中定义了我的变量(一些sh
解析函数),并在环境阶段使用它们(var1,var2):
我决定将 , 导出varA
到varB
共享vars/my_vars.groovy
并从那里使用它们(当我必须使用var1
, var2
vars 传输配置映射时)。
问题是,为了将这些变量声明为环境变量,我使用了这种方式:
但是这样buildMeta vars(var1,var2)还没有定义,所以我无法正确初始化my_vars.loadVars()
调用。另一方面,我无法复制这些buildMeta.groovy
功能,my_vars.loadVars()
因为前者有sh
用法,而对后者的调用未在阶段(脚本)下定义。
我可以通过将所有这些函数调用放在一个单独的阶段(比如说“加载变量”阶段)来解决所有这些问题,但我真的想避免那个虚拟阶段。最好的做法是什么?
谢谢!
jenkins - 如何在jenkins中实现共享库,而不在“管理Jenkins”中配置“全局管道库”?
由于我无权访问组织中的“管理 Jenkins”菜单,因此无法在“管理 Jenkins”的“全局管道库”中配置我的共享库。
有没有其他方法可以实现这一点,而无需在 Manage Jenkins 中进行配置?
(或者)
是否可以通过管道脚本配置“全局管道库”部分,而不管访问权限如何?
如果可能,请您在答案中分享一些代码片段。
jenkins - 调用不带参数的共享库函数
我正在使用带有 jenkins 2 的共享库。意思是,我正在利用重用我在各个阶段编写的一些管道代码的能力。
这是模块vars/utils.groovy的示例
当尝试在管道脚本中执行它时,它会失败并出现以下错误:
我怀疑这是因为我没有将任何变量传递给这个函数,因此它没有正确实例化。
所以实际的问题可能是“如何调用不需要参数的共享库函数”?