问题标签 [jenkins-groovy]

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 投票
2 回答
3215 浏览

jenkins - Jenkins:通过 Groovy 读取现有作业的插件配置

我们正处于使用 Jenkins DSL 的早期阶段。我们遇到的一个挑战是能够读取现有的作业插件设置,以便我们在运行 DSL 之前保留它。这使我们能够让 Jenkins 用户选择保留他们的一些设置。我们已经成功地为我们的工作保留了计划设置,但最新的挑战是能够保留插件设置。特别是“ExtendedEmailPublisher”插件中的设置。我们希望保留该值:

在此处输入图像描述

在 ExtendedEmailPublisher 标记中此作业的 config.xml 文件中,我们看到以下内容:

我们希望从此 XML 中提取/保留的值是:

我们尝试使用 groovy 获取现有值,但似乎找不到正确的代码。我们的第一个想法是尝试使用 XmlSlurper 从 config.xml 中读取值。我们从 Jenkins 脚本控制台运行它:

不幸的是,虽然这确实返回了一些配置信息,但它并没有返回插件信息。

然后,我们还尝试运行以下命令来读取/替换现有设置:

虽然如果从 Jenkins 脚本控制台执行此操作,但当我们尝试在 DSL 作业中使用它时,我们会收到以下消息:

解决方案更新:

使用 url @aflat 的 URL 建议来获取原始 XML 配置信息,我能够使用 XML Slurper,然后使用该getProperty方法将我想要的属性分配给一个变量。

0 投票
3 回答
2416 浏览

jenkins - How to enabe SCM polling with the Jenkins DSL plugin

I'd like to enable SCM polling in Jenkins by DSL code. As it's easily possible manually ( without DSL ) and works perfectly, but I'm looking for DSL code to Make it enable -- check attached image for reference.

I already checked below link, but no any solution here. https://jenkinsci.github.io/job-dsl-plugin/#method/javaposse.jobdsl.dsl.helpers.triggers.TriggerContext.scm

GitHub hook trigger for GITScm polling and Poll SCM

click here to check image

I'm not using Jenkins pipeline

0 投票
1 回答
781 浏览

jenkins - Jenkins 将电子邮件通知与所有上游作业状态合并到一封邮件中

有没有办法在最后一个作业中获取构建管道的所有上游作业的构建号、构建状态和构建 url 信息。我有许多相互关联的工作。A 触发 B,B 触发 C。我不想为每个项目发送成功电子邮件,但想在最后一次下游构建时发送电子邮件。但是电子邮件应该包含所有上游构建的日志链接。

0 投票
1 回答
738 浏览

jenkins - Access classes in implicitly loaded Jenkins global library

I have a global library configured in Jenkins. It works. But when my Pipeline is stored in SCM, it tells me that it cannot find it when I tried to load it. A workaround is to load it implicitly.

But how can I access the classes in the library then? I can not do

Because that triggers the error.

0 投票
1 回答
7618 浏览

jenkins - Jenkins参数列表根据用户选择下拉

是否有我可以用于以下的插件/ groovy 脚本?

我有一个需要开始测试的客户端列表我可以访问我的主控中每个客户端的测试列表/硬件列表(在平面文件中)

当我使用参数化构建选择客户端时,我需要更新与所选客户端相关的文件内容

我试着环顾四周,但找不到解决问题的方法。感谢您的帮助。

另外,有没有办法可以将字符串的选择转换为数字键值映射?

示例:主服务器具有以下目录结构:

当我尝试开始工作并从参数化插件中选择 Client1 时,我应该能够在设备下列出 HW_1 和 HW_2,并在测试列表中列出 test1、test2。

选择测试后,我应该能够将此信息传递给从节点。

0 投票
1 回答
979 浏览

jenkins - 种子作业环境变量 ${WORKSPACE} 分配给子作业

使用将创建 5 个子作业的 DSL 创建一个种子作业。作为构建步骤的一部分,我必须使用 ${WORKSPACE} 环境变量,它应该从运行子作业的从机读取值。但是,当创建子作业时,工作空间值将替换为来自主服务器的 SeedJobs 工作空间位置。

我将如何限制种子作业不注入其 ${WORKSPACE} 值。

有人可以帮我解决这个问题吗?

谢谢马诺

0 投票
1 回答
2554 浏览

jenkins - Jenkins 管道脚本中的节流并行步骤

我正在使用这样的东西来并行运行测试:

主要目标是限制这些关闭 - 我不希望所有六个同时运行 - 一次只运行 3 个。而且我希望能够运行另一个构建,它也将运行所有这些闭包,但只能同时运行 3 个。

我正在考虑为此使用节点 - 即将每个闭包包装在 node{} 块中:

只要我使用主节点并将执行程序限制为 4 个(主作业 1 个,节点{} 并发步骤 3 个),就可以正常工作。

不幸的是,我需要主节点执行器可用于其他作业(以及相关作业的其他构建),因此我无法限制它们。

我能想到的唯一解决方案是以下列方式使用可锁定资源:

  1. LockableResourcesManager::createResourceWithLabel()使用 build-unique 标签动态创建 3 个可锁定资源

  2. 在所有封盖中按标签锁定它们

  3. 关闭将等待对方完成,当时只有 3 个正在运行。

  4. ...现在我被困住了。我找不到任何删除资源的方法。我只发现了一个非常相似的问题的开放错误。编辑:我为它创建了改进请求

即使有删除资源的方法,这个解决方案看起来很脏,并且添加了不必要的资源,如果出现故障,这些资源可能无法清理。

那么 - 我如何实现我的目标?有没有办法限制并行步骤?

0 投票
1 回答
2181 浏览

jenkins - Jenkinsfile 访问现有环境变量

如何访问块SOME_VAR内的现有环境变量environment

我想用新名称重新定义它NEW_VAR

到目前为止我尝试了什么:

0 投票
1 回答
2845 浏览

jenkins - shell中的Jenkins管道常规测试

groovysh可以在不使用 Jenkins UI 的情况下使用或groovy scriptname运行验证测试来测试 jenkins 管道脚本吗

例如对于一个简单的脚本

运行这样的测试,取决于脚本的子集给出:

No signature of method: * is applicable for argument types

或用于舞台('test'){ sh ''' env ''' }

报告:

或者干脆

报告:

问题可能是需要哪些导入以及如何在 jenkins 安装之外安装它们?

为什么会有人想要这样做?

简化和缩短测试用例的迭代、库版本的验证,而无需修改 jenkins 安装以及其他单元和功能测试场景。

0 投票
1 回答
906 浏览

groovy - 调用 Python 和批处理文件的 Groovy 脚本

我希望发送包含所有子作业的构建状态的电子邮件。因此,我使用批处理和 python 脚本来准备 html 文件,我将在 Editable Email Notification 插件中导入该文件。

但是,在 Pre Send script 选项卡中,我们只能编写 groovy 脚本。所以我想调用我的 python 文件,其中包含我来自 groovy 的逻辑