问一下关于Capistrano自动部署

2013-11-25 20:28:14 +08:00
 richiefans
目前想做一个自动部署的方案
目前代码托管在内部的git server,master分支作为发布分支的话

由于生产环境比较简单 基于php的applaction 就一台server 之前采用的都是采用sftp手动上传的方式来覆盖每次更新的文件

人为操作还是会出现一些问题,比如遗漏更新文件等~

了解了一下Capistrano 可以根据git repo来进行自动化部署

那么这类工具是增量么 [每次只更新create or change files] ?还是pull之后 完整repo的cp~?

还有更好的方案么?之前考虑过 基于gitlog生成一个updatefiles list 然后用脚本scp过去~
4619 次点击
所在节点    Ruby
4 条回复
levey
2013-11-25 20:59:55 +08:00
cap 每次部署是 clone 代码到新的目录。
kaichen
2013-11-25 22:47:30 +08:00
在Capistrano 2中的Git代码更新策略是可以配置的,到了Capistrano 3后只保留了一个大家用的最多的做法。那就是维护一份Git repo的Clone,每次发布一次release的时候从这份Clone里拷贝一份出来并以时间戳命名。

也就是说是你理解的第二种方式,通过这种方法只要你代码都提交上repo中那么就不会有遗漏,并且还能进行rollback。
richiefans
2013-11-26 11:22:31 +08:00
@levey @kaichen
谢谢,已发出感谢,可能Capistrano还不太适合目前的场景

目前想实现的是增量部署

考虑是这样

server上面保存一下当前的repo 版本号 比如repoversion.txt

然后在需要部署的时候

用最新的master分支 比较server上面的repoversion得到一个filelist(包含新增的文件、修改的文件、和删除的文件)

然后用脚本来对这个filelist 进行增量部署 该删的删、该覆盖的覆盖~

目前卡在了 如何获得两次repoversion之间的 文件差异list上~

求助啊
Lax
2013-12-06 08:43:27 +08:00
"用最新的master分支 比较server上面的repoversion得到一个filelist(包含新增的文件、修改的文件、和删除的文件)"

楼主可以试试 git format-patch && git apply

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/90574

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX