在Git post-receive hook

时间:2015-11-18 20:06:08

标签: linux git gruntjs grunt-contrib-watch git-post-receive

S / O,

我一直试图为我正在开发的网络应用程序进行自动部署,并且我已经设置了一个git post-receive hook来处理工匠迁移,作曲家更新,npm更新,然后运行Grunt复制,uglify等所有必要的资产。

我的Grunt任务在一切完成后执行grunt-contrib-watch,以便进行本地开发。现在,我不想经历为开发人员设置单独的Gruntfiles的麻烦。暂存,所以在我收到后,我执行Gruntfile.js然后尝试终止进程(所以看不会继续在登台服务器上运行)。

我收到后的最后两行是这样的:

grunt --gruntfile /dir/dir/Gruntfile.js >> log.txt
pkill grunt -e >> log.txt

但是,由于ps aux | grep grunt仍然返回一个活动进程,并且没有相关输出附加到我的log.txt文件,因此这似乎没有终止该进程。

这里的任何想法都将不胜感激。

谢谢!

1 个答案:

答案 0 :(得分:0)

好的,我用两种方式解决了这个问题:

第一种方法是附加一个&在grunt调用结束时,将CLI的控制权交还给我的post-receive脚本。这很有效,但它要求我在pkill之前在那里睡一觉,以确保在杀死进程之前完成了grunt任务。不是那种我想要完成这项任务的模糊控制。

所以,我继续弄清楚如何在我的Gruntfile中设置一个单独的任务进行暂存。这比我最初预期的更容易,更实用。

注册了一个单独的任务,最后没有执行手表,我所要做的就是像这样执行grunt:

grunt --gruntfile /dir/dir/Gruntfile.js staging >> log.txt

其中staging是我在grunt中注册的任务的名称。作为一个注释,Grunt只会在没有这个额外参数的情况下执行default任务,所以它仍然可以正常工作,无需更改我的工作流程就可以在本地运行:)

谢谢,无论如何。希望有人觉得这个答案很有用!