2

我已经为 3 个 jenkins 作业设置了 Gitlab Jenkins 与 3 个 webhook 的集成,并在构建后操作中设置了“将构建状态发布到 Gitlab”。面临的问题如下所述。

设置:

Jenkins 版本 V2.152,Gitlab 版本 11.7.0-ee,3 个 Webhooks 用于 3 个 jenkins 作业

詹金斯自由泳项目

Jenkins Git:分支说明符是 origin/${gitlabSourceBranch}

Jenkins 触发器:选择“将更改推送到 GitLab 时构建”,其中包含推送事件、打开的合并请求事件、在推送到源分支和评论时重建打开的合并请求

问题:

管道永远处于挂起状态:如果没有 jenkins 作业正在运行并且更新了一个分支,则创建一个提交的管道来跟踪所有 3 个 jenkins 作业。但是,如果任何 jenkins 作业正在运行并且分支已更新,则会为相同的提交 ID 创建三个单独的管道,一个用于一个 jenkins 作业。在这种情况下,一旦任何树 jenkins 项目开始运行,只有最新的管道将其状态更改为正在运行,现在开始跟踪所有 3 个 jenkins 作业,而其他 2 个管道永远处于挂起状态,它们永远不会运行也不会被取消. 我还选择了自动取消冗余、待处理的管道功能,但它正在工作。

预期的:

在 Gitlab 中,它应该始终为每个作业创建一个单独的管道并跟踪它们,或者应该为每个提交创建一个管道并跟踪所有作业。

如何避免挂起的管道永远不会改变其状态?或者如何使自动取消冗余、待处理的管道功能运行?

4

1 回答 1

0

检查GitLab 14.6(2021 年 12 月)是否可以改进您的 webhook/作业管理:

为挂起的作业触发了 Webhook

以前,使用作业事件 Webhook 进行 CI/CD 监控具有挑战性,因为很难跟踪pending项目中可能存在的作业数量。

现在,当作业状态更改为 时,webhook 会触发一个事件pending,因此您不再需要实施变通办法或自定义集成来跟踪所有作业状态。

请参阅文档问题

于 2021-12-22T22:18:48.220 回答