如何实现 GitLab 存储库的门控签入?

How to achieve gated check-in for GitLab Repository?

我的要求是每当开发人员尝试签入现有的 GitLab 存储库然后在签入存储库之前,构建应该触发(Jenkins 构建)并且 Junit 测试用例应该 运行 在新的签入如果通过,那么它应该继续进行,并允许开发人员在主存储库中进行签入。

我不确定,但是pre-hook commit是否可以达到这个要求?

虽然您可以使用预提交挂钩实现此目的,但更常见的做法是在服务器端使用 post-提交挂钩。

您可以通过操作基于分支的工作流来实现这一点,有多种可供选择 - 我建议通读这篇 guidance by Atlassian

开发人员将从 'main' 分支创建分支(通常是 master,但也可以是 'dev' 分支,例如致力于发布),然后在该分支上开发代码。然后他们将推送他们的分支并提交到远程存储库 (GitLab)。当准备合并到主分支时,您的开发人员可以在主分支上打开合并请求。

在 GitLab 上,您可以设置一个 webhook 以在发生推送事件时触发 Jenkins 构建。我会推荐 this guide to guide you through it

在 GitLab 项目设置中,您可以在允许合并请求合并之前要求通过构建。


此外,您对 Git 的理解似乎不正确 - 签到不是 Git 中使用的术语。请查看 Git 文档。在 Git 中,开发人员针对存储库的本地副本创建提交,然后将它们推送到远程存储库(GitLab/GitHub 等)。没有直接等同于各种集中式版本控制系统中使用的 'check in',例如SVN.