2015-02-06 64 views
2

我不知道这是否适合问这个问题,但是当涉及到Grunt和部署时,我正在努力使用“最佳实践”。我的团队使用bitbucket将repos和rackspace作为服务器托管。使用Git进行Grunt部署

我使用grunt将我的网站构建成静态文件(将ejs/less编译为静态html/css)。我有手表任务,并督促咕噜咕噜开发其完成所有的优化/缩小等

目前部署过程是:

1)咕噜督促

2)git的承诺/ GIT中推

3)到位桶提交pull请求,合并的代码到主

4)ssh进入服务器和git拉力。

这可以确保我在服务器上拥有的任何东西都是git commit并且已经过审查。我遇到的其中一个问题是,有时我忘记在提交之前运行grunt prod,然后结束未优化的站点。

我已经研究过使用ssh deploy方法,基本上是在运行grunt prod之后通过FTP传输文件。这将消除必须SSH服务器和知道命令的步骤。我担心这种方法可能最终与git不同步,并避免代码审查/请求的步骤。

我认为我正处在正确处事的风口浪尖上,但我觉得我必须错过一些东西!

有什么建议吗?由于

+0

我坚信可分发文件应该远离版本控制。你有没有想过翻转事物并仅将* source *文件提交给Git,然后使用Grunt作为部署工具来检出,构建和部署文件?这样,整个部署管道就会自动完成,不可能错过一个步骤或提交错误的文件。 – 2015-02-06 18:25:13

+0

感谢@AntP的快速回复!我已经考虑过了,但是我一直无法围绕如何正确做到。你能详细说明你的建议吗? – raydeneg 2015-02-06 18:31:39

回答

0

对此

[能]消除其ssh到服务器的步骤,并且知道命令

位斗支持POST提交挂钩,这里更多的信息:

基本上会发生的是,当您提交到bitbucket repo时,bitbucket会向您选择的URL(包含有关您提交的信息的有效内容)发出HTTP请求。
您有脚本,例如PHP或任何你使用的服务器端lang,当URL被点击时触发,然后运行你的git pull或任何你想要的命令。

这里是一个深入指南的过程 http://jonathannicol.com/blog/2013/11/19/automated-git-deployments-from-bitbucket/

FTP传送文件的过程

这可能是非常困难和缓慢的,即你将如何跟踪哪些改变的文件?你将如何处理删除本地项目文件夹上的文件,然后用这些删除文件更新远程文件?

为此,我会使用rsync这是一个很好的同步工具。

我知道这不是一个完整的解决方案,并没有解决忘记运行的问题grunt prod但希望它可能对你有一些帮助。