故障排除
触发作业失败并且不创建多项目流水线
对于多项目流水线,如果出现以下情况,触发器作业将失败并且不会创建下游流水线:
- 未找到下游项目。
- 创建上游流水线的用户没有在下游项目中创建流水线的权限。
- 下游流水线以受保护分支为目标,并且用户无权针对受保护分支运行流水线。有关更多信息,请参阅受保护分支的流水线安全性。
如要识别是下游项目中的哪个用户有权限问题,您可以通过在 Rails 控制台中使用以下命令检查触发器作业,并查看 user_id
属性。
Ci::Bridge.find(<job_id>)
流水线运行时不创建子流水线中的作业
如果父流水线是合并请求流水线,则子流水线必须使用 workflow:rules
或 rules
以确保作业运行。
如果由于 rules
配置缺失或不正确,子流水线中的作业无法运行:
- 子流水线无法启动。
- 父流水线的触发器作业失败并显示
downstream pipeline can not be created, Pipeline will not run for the selected trigger. The rules configuration prevented any jobs from being added to the pipeline.
。
带有 $
符号的变量不能够被正确的传递给下游流水线
当给下游流水线传递 CI/CD 变量时,您可以使用 $$
在 CI/CD 变量中对 $
进行转义。下游流水线依旧会将 $
视为变量引用的开始。
相反地,您可以在父流水线中使用 variables:expand: false
来设置变量值,使其不会被扩展。然后,您可以将此变量传递给下游流水线,而无需 $
被解释为变量引用。
Ref is ambiguous
当存在同名分支时,您无法使用标签触发多项目流水线。下游流水线无法创建,并出现错误 downstream pipeline can not be created, Ref is ambiguous
。
仅触发标签名称与分支名称不匹配的多项目流水线。
从上游流水线下载作业产物时出现 403 Forbidden
错误
在 15.9 及更高版本中,CI/CD 作业令牌的范围仅限于执行流水线的项目。因此,下游流水线中的作业令牌默认无法访问上游项目。
要解决此问题,将下游项目添加到作业令牌范围许可列表。