首页 > 解决方案 > Github 设置和 Jenkins 缺少预提交检查或远程运行

问题描述

仅举一个例子,可以使用诸如 TeamCity(类似于 Jenkins)之类的工具提交远程运行,它将在用户尝试提交的内容上应用 delta/patch 并产生结果,无论更改是否从一组配置的检查中都是好的对于那个项目。

使用 Github 和 Jenkins,是否可以使用任何插件来实现此类验证?这将避免破坏构建?

我知道通过拉取请求和状态检查可以实现类似的最终结果。但是如果没有提交/推送到 Git 的远程仓库 - Jenkins 有没有办法处理这个验证并产生初始结果?

标签: jenkinsgithubteamcitypre-commit-hookpre-commit

解决方案


不可能让 GitHub 对它没有的数据执行检查,所以如果你不将数据推送到远程服务器,GitHub 将不会知道任何关于它的信息,因此什么也不做。

Jenkins 确实有一个 REST API,您可以使用它来执行此操作,前提是您为每个开发人员配备了适当的凭据。但是,这不是常见的情况,也不是推荐的配置。

您最好使用存储库中的脚本,用户可以将其安装为挂钩或从挂钩中调用,以执行您想要的测试。如果您的 CI 作业在您的存储库中运行脚本,那么在它们之间共享代码应该很容易。

请注意,您不应该强制执行预提交挂钩,因为它们会干扰高级用户(他们可能会故意做出不完整的临时提交)并且它们可能会被用户禁用。任何类型的必要检查都应该作为 CI 的一部分进行,这样可以适当地执行策略。


推荐阅读