【发布时间】:2010-12-05 16:17:08
【问题描述】:
使用 Capistrano,如何回滚到特定版本?
我的服务器文件夹有一个 /release 文件夹,我怎样才能回滚到一个特定的文件夹?
我是否可以在本地获取计算机上的版本列表?
我正在使用 GIT,但这不起作用:
cap deploy -s revision:HASH
【问题讨论】:
标签: capistrano
使用 Capistrano,如何回滚到特定版本?
我的服务器文件夹有一个 /release 文件夹,我怎样才能回滚到一个特定的文件夹?
我是否可以在本地获取计算机上的版本列表?
我正在使用 GIT,但这不起作用:
cap deploy -s revision:HASH
【问题讨论】:
标签: capistrano
更新 答案写在 capistrano 版本 2 的时代。使用当前的 capistrano 版本 3,您可以通过使用实现相同的目的
cap production deploy:rollback ROLLBACK_RELEASE=2010123
详情请咨询Capistrano documentation。
感谢@codenoob 指出这一点!
旧版本
以下应该有效:
cap deploy:rollback -s previous_release=/path/to/release/on/server
例子:
假设您已将应用部署到/srv/some_app,并且您具有以下版本/目录结构:
|- srv
|- some_app
|- shared
|- current -> /srv/some_app/releases/2012123
|- releases
|- 2010123
|- 2011123
|- 2012123
如果您现在想从当前 (2012123) 版本返回到 2010123 版本,您可以使用
cap deploy:rollback -s previous_release=/srv/some_app/releases/2010123
【讨论】:
另一种选择是
$ cap deploy:rollback ROLLBACK_RELEASE=20160614133327
来自http://capistranorb.com/documentation/getting-started/rollbacks/#
【讨论】:
Capistrano 按日期/时间命名发布目录。
从 capistrano shell,您可以连接到您正在部署的所有机器,并从那里检查它们:
$ cap shell
# Show them - it might be a long list
cap> ls /mnt/html/deployed/releases/
** [out :: hostname.example.com] 20110521130031
# how many releases on each machine?
cap> ls /mnt/html/deployed/releases/ |wc -l
【讨论】: