linux - 在 Git post-receive hook 中杀死 Grunt 进程

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

S/O,

我一直在尝试解决我正在开发的网络应用程序的自动部署问题,我已经设置了一个 git post-receive Hook 来处理 artisan 迁移、composer 更新、npm 更新,然后运行 ​​Grunt 以复制、丑化等我所有必要的 Assets 。

为了本地开发,我的 Grunt 任务在一切完成后执行 grunt-contrib-watch。现在,我不想经历为开发和暂存设置单独的 Gruntfile 的麻烦,所以在我的后接收中,我正在执行 Gruntfile.js 然后尝试终止进程(所以 watch 不会保持在登台服务器上运行)。

我的 post-receive 的最后两行看起来像这样:

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

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

如有任何想法,我们将不胜感激。

谢谢!

最佳答案

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

第一种方法是在 grunt 调用的末尾附加一个 &,将 CLI 的控制权交还给我的接收后脚本。这行得通,但它要求我在 pkill 之前在那里睡一觉,以确保 grunt 任务在它终止进程之前完成。这不是我想要的那种模棱两可的控制。

因此,我继续研究如何在我的 Gruntfile 中设置一个单独的任务用于暂存。这比我最初预期的更容易、更实用。

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

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

其中staging是我在grunt中注册的任务名称。请注意,在没有这个额外参数的情况下运行时,Grunt 只会执行 default 任务,因此它仍然完全按照我希望的方式在本地运行,而无需对我的工作流程进行任何更改:)

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

关于linux - 在 Git post-receive hook 中杀死 Grunt 进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33789358/

相关文章:

python - 在 python 中运行 xmlrunner 时没有打印到标准输出

c++ - 程序在图形 shell 中的运行速度比在命令 shell 中快

java - 更改项目名称未反射(reflect)在 GitHub 上

git - 为什么 git ://works but git@ does not

javascript - Grunt 连接不同域或不同服务器上的文件

node.js - 阻止服务文件,直到 grunt 完成

javascript - 如何使用 gruntjs 缩小 css

c++ - 如何强制已安装的 gcc-ar 使用特定的 binutils 版本?

linux - 为什么受密码保护的根账户是 Amazon EC2 中的安全问题?

linux - 查找特定提交中具有特定短语的所有行