独立的Git钩子还是Jenkins?

8

我正在为一组约10名开发人员寻找最佳的CI解决方案,涉及测试Web界面。所有我需要的就是在任何开发人员推送代码时运行测试套件。我不需要担心构建/编译或部署,因为我们有其他团队来处理这些工作。我考虑过Jenkins,但已经了解到它可能很繁琐设置,需要维护并占用大量磁盘空间。在我的情况下,使用Jenkins似乎是不必要的工作量,只使用Git钩子可能更好,但我也读到仅使用Git钩子进行CI是不良实践。这两个方案中哪一个是最佳的解决方案,还是有其他方案我没有考虑到?


您的术语似乎有点混淆。我不确定“仅使用Git钩子”是什么意思,或者为什么使用Git钩子启动某个进程会被认为是一个坏主意(特别是与轮询更改相比)。如果您没有使用像Jenkins这样的系统,那么将会对传入的Webhooks做出反应呢?Jenkins最常见的用途是构建和测试软件,因此它似乎是一个合理的选择。不清楚为什么您希望将其与编译和部署分开(这也希望由Jenkins完成?),但Jenkins在这里应该很好地适合。 - Christopher Orr
1
@ChristopherOrr 抱歉如果我的解释有点混乱,我还没有使用过 git hooks 或 Jenkins。起初我认为可以使用 git hook 在每次开发人员 push 时触发整个测试套件在他们的机器上运行,但正如 Stony 在下面提到的那样,这可能不是理想的选择。你的评论让我意识到这种情况比我最初想象的简单哈哈。谢谢。 - Tom
注意:Git 2.36(2022年第一季度)将配备git hook run [--ignore-missing] <hook-name> [-- <hook-args>] - VonC
1个回答

2
Jenkins是一个部署系统,可以在您的代码上运行定义的任务和测试,并为您的生产系统构建该代码。如果某些测试失败,则停止构建。Jenkins的安装非常简单。
因此,在部署过程中,测试通常是一个步骤。您应该在更改上线之前运行测试以防止错误发生。
我不知道是否明智地在每次推送时运行完整的测试。如果您有一些长时间运行的测试,如果许多人推送您的更改,则可能会导致错误。
在您的情况下,我更喜欢像Gerrit或Github或Bitbucket内置系统这样的代码审查系统。然后,两个人必须检查代码并检查是否存在错误。

这个答案的第一部分很有道理,但是建议使用代码审查作为自动化测试的“替代方案”并不太合适。 - Christopher Orr
1
不必每次都运行测试,你可以让两个人检查你的代码,然后其中一个人运行测试来测试更改。这是一个变通方法... - René Höhle

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接