问题标签 [jenkins-workflow]

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 回答
1032 浏览

jenkins - Jenkins 插件看不到使用 withEnv 工作流程步骤设置的变量

我希望 gradle 插件能够获取在withEnv步骤(或其他包装类型)中设置的环境变量。当我使用sh步骤调用 gradle 时,找到了变量,但是当我使用 gradle 插件时,却没有。

gradle 插件执行与此等效的操作:

run.getEnvironment() 的 javadoc 指出:

返回包含用于启动此构建进程的环境变量的映射。调用外部进程的 BuildSteps 应该使用它。这允许 BuildWrappers 和其他项目配置(如 JDK 选择)生效。

与早期的 getEnvVars() 不同,此映射包含整个环境,而不仅仅是覆盖,因此可以内省值以更改其行为。

如果我调试插件,我发现环境中传递给 gradle 调用的变量少于十几个,这些变量withEnv都不是应该提供的。据我所知,该sh步骤使用了一个完全不同的扩展点,并且直接给出了一个EnvVars看起来更完整的实例。我相当确定问题不在withEnv,但我不知道如何修复 gradle 插件。

我打错电话了吗?或者可能是错误的扩展点?

0 投票
2 回答
27976 浏览

jenkins - 在詹金斯手动批准后开始工作

我需要在作业 A 成功执行后触发作业 B。作业 A 成功执行后,将向审批者发送电子邮件通知。审批者将收到一封电子邮件并单击邮件链接。他将被路由到 Jenkins 页面,在那里他将批准 Job B 的执行。

我不确定使用哪个插件可以提及批准者的姓名,批准者如何在登录 Jenkins 页面后单击链接并简单地说“批准”。

0 投票
1 回答
14572 浏览

jenkins-workflow - 如何使用 Jenkins Workflow 插件使 SCM 轮询工作

在一个普通的自由式项目中,我将 SCM 插件配置为指向我想要发布的 Git 存储库,并启用“Poll SCM”选项,它允许我配置一个 Stash webhook 以在发生更改时告诉 Jenkins到那个回购。这样,只要将更改推送到存储库,就可以触发作业。

但是当我使用工作流而不是自由式项目时,我需要构建的代码的 SCM 在 groovy 工作流脚本中以编程方式指定,这意味着它没有监听 Stash webhook。相反,直接在工作流中配置的 SCM 是 groovy 脚本本身的 SCM,它与我尝试构建/发布的代码库不同,因此我不希望触发器基于此。

关于在使用工作流插件时如何实现 SCM 轮询的任何想法?

0 投票
2 回答
1503 浏览

jenkins - 如何在 Windows 上支持 Jenkins 从站的断开连接或重启?

我有许多长期运行的工作几乎需要一天才能完成。分裂是不可能的。如果网络出现故障,则所有进度都将丢失。从站如何在断开连接中幸存下来?

编辑 1

我有大约 300 个在 Windows 中运行的奴隶,它们与一个 Jenkins 实例相关联。

从站使用手动方法连接java - jar slave.jar -jlnpUrl <serverUrl> <slaveName>。我无法将它们作为常规 Windows 服务运行,因为某些测试会操纵 GUI 元素并需要真正的交互式会话,否则测试会失败。

编辑 2

根据Jenkins Cookbook,我应该使用 Cygwin + OpenSSH 方法,而不是使用 JLNP 连接器的自定义脚本。这能提高稳定性吗?

0 投票
1 回答
165 浏览

jenkins - 为了与 Jenkins 工作流程并行运行,构建步骤必须是持久的吗?

我正在试验詹金斯工作流程中的并行步骤。目前我的流程看起来(基本上)是这样的:

两个输入都显示为在不同的执行器上运行,但是当我在两者上单击“继续”时,实际上只有第一个部署开始。部署作为自定义插件运行,该插件是为遗留作业编写的,并且很少转换为工作流。我没有看到任何关于等待执行者的明显消息,部署只是没有开始。第一个完成后,第二个将立即开始。

我必须在并行步骤允许两者运行之前实现 DurableTask (或其他东西吗?)?到目前为止,我的转换非常轻松,所以也许是时候尝试更真实的转换了。

0 投票
2 回答
856 浏览

jenkins - 工作流步骤能否访问 EnvironmentContributingAction 提供的环境变量?

我们为旧版本的 Jenkins 编写的自定义插件使用 EnvironmentContributingAction 为执行提供环境变量,以便它们可以在未来的构建步骤中使用并作为参数传递给下游作业。

在尝试将我们的构建转换为工作流时,我无法访问这些变量:

有没有办法访问注入的环境变量?我是否必须将此功能转换为构建包装器?

0 投票
2 回答
9085 浏览

git - 如何使 git 功能分支与 jenkins-workflow 一起工作?

我正在尝试设置 jenkins-workflow 来进行我们的集成测试。我们的集成测试是这样工作的:

LibraryA有人在 git 的功能分支中进行了更改。我们希望 jenkins 对功能分支中的代码运行单元测试,然后我们希望将此功能分支中的代码安装到client1client2(它们是 的用户LibraryA)并运行他们的测试。

除了正确提交LibraryA. 相反,我的设置只是从LibraryA.

我们有很多功能分支,因此在工作流设置中对特定分支进行硬编码并不合适。似乎应该有某种方法来获取触发工作流作业的提交的哈希(即使使用 SCM 轮询)。

我的设置如下所示:

所以,我目前的问题是如何设置 git repo/polling 以获得正确的提交以在第一个测试中运行,这将libraryA_version.txt在后续测试中使用?

或者,我应该以完全不同的方式进行此过程吗?

0 投票
1 回答
1068 浏览

jenkins - 在 Jenkins 工作流作业中使用锁

我想在工作流作业中使用锁定,以防止作业在同一节点上同时运行。

我想使用锁和闩锁插件的功能来控制作业的并行执行:当作业 A 开始在特定节点上构建时,作业 B 应该等到 A 完成,然后 B 才能运行。

我怎样才能做到这一点?还是有其他解决方案(以防工作流作业不支持锁定)?

谢谢你。

0 投票
1 回答
27043 浏览

jenkins - Jenkins - 在其他项目上触发参数化构建

仅当父级成功完成并且有更改(更改推送到 scm)时,我如何才能触发参数化构建?

这是一个场景:我有 3 个构建:A、B 和 C。如果 B 被 A 调用或它有更改,则将构建 B。只有当 B 成功完成并且 B 是因为 scm 更改而不是因为它是由 A 触发而构建时,才应该构建 C

谢谢

0 投票
1 回答
798 浏览

jenkins-workflow - 如何使用工作流插件在 Jenkins 中的 workflowLibs 中共享代码

在我的workflowLibs目录中,我有几个文件:

Build.groovy看起来像这样:

Test.groovy看起来像这样:

我希望我的构建做这样的事情:

但我不知道如何在自己的目录中制作 Pipeline.groovy 参考文件。我试过这样做:

但我总是得到:

在workflowLibs目录结构中的 groovy 文件之间共享代码的正确方法是什么?