忽略某些文件和capistrano当前目录中的更改以用于开发环境

时间:2012-10-13 15:45:22

标签: git deployment capistrano development-environment environment

我们的部署策略:我们有环境范围的数据库配置和.htaccess文件(想想prod.htaccessdev.htaccesslocal.htaccess)。使用capistrano完成部署,首先检查要部署的分支,然后删除Capfile和超出范围的.htaccess文件,并从[env].htaccess重命名范围内的htaccess到.htaccess。这个完整的repository/public_html目录通过非删除rsync传输到apache webroot。

  

背景:我工作的公司是在线出版物   自1998年以来一直存在,因为部署策略令人费解   文件夹结构很乱:版本控制的文件就在旁边   生成的文件和用户上传的文件。既然如此,我们做不到   只需将整个apache webroot文件夹符号链接到相应的   /current中的文件夹。生成的文件每次都会被删除   一个新的部署,用户上传散落的文件   目录必须与其他地方等符号链接。因此   非删除rsync操作。

上面提到的目前的精神错乱是另一天的问题。

我想要的是一个解决方案,它不需要在部署时在repo中删除和重命名htaccess和db配置文件。原因是我们可以在/deploy/current中工作并从中提交,而不必与部署中的本地更改纠缠在一起。

像这样部署环境范围文件的典型解决方案是什么?我应该将它们移动到/config以上的/public_html文件夹和apache webroot的符号链接到/config中的相关文件,具体取决于环境吗?

1 个答案:

答案 0 :(得分:2)

我建议你通过以下方式解决这个问题:

  • 仍将所有[env].htaccess个文件保留在存储库中。
  • deploy:update将所有[env].htaccess个文件符号链接到.htaccess后 符号链接(ln --symbolic [env].htaccess .htaccess
  • 请勿删除*.htaccess个文件。
  • 让开发人员/系统管理员编辑*.htaccess个文件(他们可以通过.htaccess符号链接访问范围内文件,并访问所有超出范围的[env] .htaccess文件。
  • 让开发人员/ sysops直接从deploy/current文件夹提交(但请确保它是您可以提交的有效存储库。)。
  • 将此过程用于您使用的其他类型的文件。

我认为这可能会解决您所描述的问题,或者至少可以解决它。我会亲自开始这样做,看看它会如何发挥作用。

BTW为什么要删除Capfile之后的deploy:update