V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
richiefans
V2EX  ›  Ruby

问一下关于Capistrano自动部署

  •  
  •   richiefans · 2013-11-25 20:28:14 +08:00 · 4745 次点击
    这是一个创建于 4014 天前的主题,其中的信息可能已经有所发展或是发生改变。
    目前想做一个自动部署的方案
    目前代码托管在内部的git server,master分支作为发布分支的话

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

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

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

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

    还有更好的方案么?之前考虑过 基于gitlog生成一个updatefiles list 然后用脚本scp过去~
    第 1 条附言  ·  2013-11-26 11:23:04 +08:00
    是这样,目前想实现的是增量部署
    考虑是这样
    server上面保存一下当前的repo 版本号 比如repoversion.txt
    然后在需要部署的时候
    用最新的master分支 比较server上面的repoversion得到一个filelist(包含新增的文件、修改的文件、和删除的文件)
    然后用脚本来对这个filelist 进行增量部署 该删的删、该覆盖的覆盖~
    目前卡在了 如何获得两次repoversion之间的 文件差异list上~
    求助啊
    4 条回复    1970-01-01 08:00:00 +08:00
    levey
        1
    levey  
       2013-11-25 20:59:55 +08:00   ❤️ 1
    cap 每次部署是 clone 代码到新的目录。
    kaichen
        2
    kaichen  
       2013-11-25 22:47:30 +08:00   ❤️ 1
    在Capistrano 2中的Git代码更新策略是可以配置的,到了Capistrano 3后只保留了一个大家用的最多的做法。那就是维护一份Git repo的Clone,每次发布一次release的时候从这份Clone里拷贝一份出来并以时间戳命名。

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

    目前想实现的是增量部署

    考虑是这样

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

    然后在需要部署的时候

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

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

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

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

    楼主可以试试 git format-patch && git apply
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5306 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 09:00 · PVG 17:00 · LAX 01:00 · JFK 04:00
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.