在Drupal环境中:是否有比当前更好的git部署?

时间:2015-10-29 15:04:01

标签: git deployment

我们正在使用Drupal运行一个中大型网站并使用git维护代码。最近,我们也开始使用git部署live(之前我们只是使用git来更好地维护和备份代码)。

不幸的是我们的git文件夹结构如下:

  • all< 实际部署所需的文件夹
  • sql< 用于本地测试的sql转储,不需要部署
  • public< 放置所有网站图片的文件夹,不需要部署

不幸的是,因为这些文件夹不在实时环境的一个层上(而sql和public甚至不应该被推送到网上)。

所以我们做的是创建另一个名为workspace的文件夹,其中git在收到推送后检出并仅将相关的 all 文件夹复制到实时项目文件夹中hooks/post-receive

#!/bin/sh
GIT_WORK_TREE=~/workspace/live git checkout -f master

# remove the current all folder to actually delete deleted files
rm -rf ~/www.website.com/sites/all
cp -r ~/workspace/live/all ~/www.website.com/sites/.

我们只是想知道是否有任何缺点,或者是否有更好的方法呢?

效果很好,但你永远不会知道:)

1 个答案:

答案 0 :(得分:3)

一个可能的缺点是:

  • 转换(最好在转换网站时优雅地停止服务器,这是通过cp完成的)
  • 回滚:如果由于某些问题需要快速站点上一版本的网站,则需要再次推送,并等待新的cp完成。

最好是:

  • 像你一样结账,但是在你正在检查的修订版中命名的专用文件夹中
  • 正常停止网络服务器
  • 将链接从〜/ www.website.com / sites / all更改为该新文件夹
  • 重启服务器

链接部分是瞬时的。
回滚只是将符号链接更改回原始值。