流水线未自动触发

问题描述

在通过 UI 控制台使用“流水线(Pipeline)”功能创建了“流水线(Pipeline)”和“触发器(Trigger)”后,即使事件已发送(即代码已推送),“流水线(Pipeline)”也未被自动触发。

根本原因分析

导致此问题的几种可能原因如下:

  1. Webhook 配置未正确设置。
  2. EventListener 未被部署,或者未在目标命名空间监听 Triggers,或者可能过滤掉了该事件。
  3. EventListener 部署中使用的 ServiceAccount 权限不足。
  4. Trigger 配置不正确。

问题调查

根据上述可能的问题,请按照以下步骤查找问题的根本原因:

Webhook 配置未正确设置

  1. 使用具有适当权限的帐户访问您的 repository/settings。
  2. 检查所有 webhook 设置,并向平台管理员确认关于 webhook 目标地址的详细信息。
  3. 确保 webhook 启用了所需的事件。有关 Gitlab 事件,请参考 GitLab 事件触发

EventListener 未部署或设置不当

  1. 向平台管理员确认 EventListener 是否已部署,并且可以从事件源(即 Gitlab 实例)访问。
  2. 访问 EventListener 资源,检查其在目标命名空间中是否正在监听 Triggers,检查 EventListener 资源的 spec,应将 namespaceSelector 字段设置为 * 或列出目标命名空间。
  3. 确保 EventListener 资源中的 interceptors 未过滤掉该事件。
  4. 检查 EventListener 日志中是否有任何错误或警告。这可以通过 kubectl 命令实现:kubectl logs <eventlistener-pod-name> -n <namespace>
  5. 确保 EventListener 使用的 ServiceAccount 拥有适当的权限,包括对 PipelineRun 资源的 create 权限。

有关 EventListener 配置的详细文档,请参阅 EventListener

Trigger 配置不正确

  1. 验证 Trigger 是否已正确配置,确保 TriggerBindingClusterTriggerBinding 中的参数与 TriggerTemplate 中使用的参数匹配。

有关如何使用 Gitlab 事件作为示例来设置 Trigger 的详细文档,请参阅 Gitlab 事件