首页 > 解决方案 > GitLab 自定义 CI 配置路径和合并请求

问题描述

对于我们的一个存储库,我们将 GitLab 中的“自定义 CI 配置路径”设置为远程 gitlab-ci.yml。我们希望这样做以防止开发人员更改 gitlab-ci.yml 文件(因为受保护的文件在 EE Premium 及更高版本中可用)。但除此目的外,自定义 CI 配置路径功能无论如何都应该适用于合并请求。

在 repo group1/repo1

我们设置 .gitlab-ci.yml@group1/repo1-ci

repo1-ci 存储库存在并且当我们推送到配置的分支等时 ci 可以正常工作。

对于合并请求功能,GitLab 告诉我们:

分离的合并请求管道 #123 失败...

未找到项目group1/repo1-ci或访问被拒绝!

我们将开发人员添加到 repo1-ci repo 作为开发人员,以便能够读取文件。它没有帮助。无论如何,期望是,它不是以用户权限运行的,所以它应该简单地找到 gitlab-ci.yml 文件。

对此有什么想法吗?

标签: continuous-integrationgitlab

解决方案


所以我们的期望是正确的,似乎我们必须在考虑中添加一件重要的事情:

如果用户在 GitLab UI 中使用合并请求功能进行交互,并且您正在为 gitlab-ci.yml 文件使用“自定义 CI 配置路径”,请确保

  • 该用户至少需要对该远程文件的读取权限,即使您故意将其移至另一个存储库(例如,在 PREMIUM/ULTIMATE 中使用增强的文件保护或推送/合并保护开发人员角色的分支)
  • 用户在正在运行的会话中应用了此权限更改

最后一部分对我们的用户来说失败了,因为它在一天后工作。似乎他们只是从他们打开的合并请求页面继续工作,GitLab 检查此会话的可访问性(使用 cookie、令牌或未通过访问远程 repo/文件而更新的东西)

有用!


推荐阅读