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