Pipeline 未自动触发

问题描述

通过 UI 控制台使用 Pipelines 功能创建 Pipeline 和 Trigger 后,即使事件已发送(即代码已推送),Pipeline 也不会自动触发。

根因分析

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

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

问题排查

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

webhook 配置未正确设置

  1. 使用具有适当权限的账号访问你的仓库/设置。
  2. 检查所有 webhook 设置,并与平台管理员确认 webhook 的目标地址详细信息。
  3. 确保 webhook 已启用所需事件。有关 Gitlab 事件,请参阅 GitLab Event Triggers

EventLister 未部署或配置不正确

  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 是否配置正确,确保来自 TriggerBinding 或 ClusterTriggerBinding 的参数与 TriggerTemplate 中使用的参数一致。

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