- 向分支推送时出现两个流水线
- 推送无效的 CI/CD 配置文件时出现两个流水线
- 合并请求的流水线标记为失败,但最新的流水线成功
尝试为此合并请求运行新的流水线时发生错误。
合并被阻止:流水线必须成功。推送新的提交以修复失败
消息
{{< details >}}
- Tier: 基础版, 专业版, 旗舰版
- Offering: JihuLab.com, 私有化部署
{{< /details >}}
在处理合并请求流水线时,您可能会遇到以下问题。
向分支推送时出现两个流水线
如果您在合并请求中获得重复的流水线,您的流水线可能配置为同时运行分支和合并请求。调整您的流水线配置以避免重复的流水线。
您可以添加 workflow:rules
来从分支流水线切换到合并请求流水线。在分支上打开合并请求后,流水线会切换到合并请求流水线。
推送无效的 CI/CD 配置文件时出现两个流水线
如果您将无效的 CI/CD 配置推送到合并请求的分支中,在流水线标签中会出现两个失败的流水线。一个流水线是失败的分支流水线,另一个是失败的合并请求流水线。
当配置语法修复后,不会出现进一步的失败流水线。要查找和修复配置问题,您可以使用:
合并请求的流水线标记为失败,但最新的流水线成功
在单个合并请求的流水线标签中可能同时存在分支流水线和合并请求流水线。这可能是由配置导致的,或是意外。
当项目启用了流水线必须成功功能,并且两种流水线类型都存在时,会检查合并请求流水线,而不是分支流水线。
因此,如果合并请求流水线失败,合并请求流水线结果将标记为不成功,与分支流水线结果无关。
但是:
- 这些条件没有得到强制执行。
- 竞争条件决定了哪个流水线的结果将用于阻止或通过合并请求。
尝试为此合并请求运行新的流水线时发生错误。
当您在合并请求中选择运行流水线时,但项目不再启用合并请求流水线时,可能会发生此错误。
此错误消息的一些可能原因:
- 项目没有启用合并请求流水线,在流水线标签中没有列出任何流水线,并且您选择运行流水线。
-
项目以前启用了合并请求流水线,但配置被移除。例如:
- 项目在创建合并请求时在
.gitlab-ci.yml
配置文件中启用了合并请求流水线。 - 运行流水线选项在合并请求的流水线标签中可用,此时选择运行流水线可能不会导致任何错误。
- 项目的
.gitlab-ci.yml
文件被更改以移除合并请求流水线配置。 - 分支被重基以将更新的配置带入合并请求。
- 现在流水线配置不再支持合并请求流水线,但您选择运行流水线以运行合并请求流水线。
- 项目在创建合并请求时在
如果运行流水线可用,但项目没有启用合并请求流水线,请不要使用此选项。您可以推送提交或重基分支以触发新的分支流水线。
合并被阻止:流水线必须成功。推送新的提交以修复失败
消息
如果合并请求流水线、合并结果流水线或合并列车流水线失败或被取消,则会显示此消息。当分支流水线失败时,不会发生这种情况。
如果合并请求流水线或合并结果流水线被取消或失败,您可以:
- 通过在合并请求的流水线标签中选择运行流水线重新运行整个流水线。
- 仅重试失败的作业。如果您重新运行整个流水线,则不需要这样做。
- 推送新的提交以修复失败。
如果合并列车流水线失败,您可以:
- 检查失败并确定是否可以使用
/merge
快捷操作立即将合并请求重新添加到列车中。 - 通过在合并请求的流水线标签中选择运行流水线重新运行整个流水线,然后再次将合并请求添加到列车中。
- 推送提交以修复失败,然后再次将合并请求添加到列车中。
如果合并请求在合并之前合并列车流水线被取消,而没有失败,您可以:
- 再次将其添加到列车中。