Pipeline 未自动触发

问题描述

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

根本原因分析

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

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

问题排查

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

Webhook 配置未正确设置

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

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 Events