如何在git push之前强制运行grunt?

3
我使用grunt从我的开发文件生成生产就绪文件,并使用git进行源代码控制和推送到生产服务器。如果推送文件的人正确使用它(运行grunt然后git push),它就可以很好地工作。
问题在于有时候人们会忘记执行这些步骤,直接推送。虽然这不会导致应用程序出现错误,但也不会为项目添加新功能(这会导致混乱)。我正在尝试找到一种方法来强制在 git push 前运行 grunt。因此,当我只运行 git push 时,它会告诉我:嘿,你忘记运行 grunt 了!
目前我想到的唯一理论方法是在生产构建文件中增加增量,并运行 git pre-commit hook 来比较这些数字,并丢弃具有相同数字的提交。这个想法有什么问题吗?有更好的想法吗?

1
生产服务器不能运行带钩子的Grunt吗? - Idan Arye
@IdanArye 这当然是可能的。但我宁愿保持我的生产服务器安装最少所需的内容。 - Salvador Dali
还有一种服务器端钩子,但可能需要更少的工具:您可以拒绝不包含已编译资产(或任何您生成的内容)的推送。 - Lajos Veres
1
根据您已经建议的做法:如果您可以知道grunt尚未被执行,则git pre-push钩子可能会有用。如果grunt尚未被执行,则可以中止推送并输出消息。该钩子接收提交的SHA,因此您可以检查更改和内容。 - ssedano
我不确定这是否回答了您的问题,但Travis CI可能有所帮助:http://travis-ci.org。grunt-githooks也可能很有用:http://npmjs.com/package/grunt-githooks。 - Sam Dutton
1个回答

1
我们可以想象实施代码审查(例如使用Gerrit):如果提交者忘记了,审核者可能会注意到。
然而,使用另一个工具推送到生产环境怎么办?拥有一个部署工具负责从仓库推送到生产服务器肯定比Git更灵活。
例如,使用Jenkins服务器如何?它可以每小时运行一次(或按需),获取Git仓库,运行Grunt,并在生产服务器上进行推送。

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