【问题标题】:How to revert my codebase back to my most recent deploy?如何将我的代码库恢复到我最近的部署?
【发布时间】:2020-01-15 16:30:29
【问题描述】:

我有以下场景。

12 月 6 日,我和我的团队将我们的代码库部署到生产环境中。从那时起,我们进行了一些更改,这些更改以我们没有预见到的方式破坏了代码库。该代码库是一个旧的遗留代码库,几乎没有任何测试、覆盖、大量代码异味和非常紧密耦合的模型。尽管我们尽最大努力进行零碎的重构和测试,但应用还是崩溃了,现在我们很难确定如何修复应用。我们的开发实践不提倡持续部署,并且每月部署大量代码(我们正在努力)。我们没有压力,但我们很难找到一个像以前那样工作的提交。

我的问题是,是否有办法让当前正在生产的代码库保持原样,并将其作为我们的起点。例如,我们使用 capistrano 通过 git 将代码库部署到 EC2 上。 git、AWS EC2 或 Capistrano 是否可以让我们简单地从那里获取代码并简单地使用它来重置我们的 git 代码?

这听起来并不容易,但我认为也许有人知道如何做到这一点。有没有人知道a)的方法。获取生产代码 b)。使用该代码副本作为参考,将我们的开发代码返回到该点。

感谢您的帮助。

【问题讨论】:

  • 你看不到 HEAD 指向生产的哪个提交并返回那个提交吗?
  • 是的,就像 Corentin 暗示的那样,类似于 git branch recovery origin/HEAD 的东西将从这一点重新创建一个分支。
  • 这就是为什么你应该在实际发布时创建一个单独的分支(并在名称中使用版本号来调用它)。

标签: ruby-on-rails git amazon-web-services capistrano


【解决方案1】:

您至少有两个选择。首先是使用 capistrano。按照here的步骤,您可以设置以下capistrano脚本:

namespace :deploy do
  desc 'Show deployed revision'
  task :revision do
    on roles :app do |host|
      within current_path do
        info "#{host}: #{capture :cat, 'REVISION'}"
      end
    end
  end
end

这将允许您致电capistrano production deploy:revision。这将输出如下内容:

$ cap production deploy:revision
00:00 deploy:revision
      app01.example.com: cf8734ece3938fc67262ad5e0d4336f820689307
      app02.example.com: cf8734ece3938fc67262ad5e0d4336f820689307
      app03.example.com: cf8734ece3938fc67262ad5e0d4336f820689307

这是你的提交哈希,cf8734ece3938fc67262ad5e0d4336f820689307。然后,您只需 git checkout d231b7abd6e4183e037817780738c54f1fbaf1fa 即可将您带到您想要的确切提交。现在用

创建一个新分支
git checkout -b 'last_deployed_code'
git push origin last_deployed_code`

或者正如@RomainValeri 评论的那样:

git branch recovery origin/cf8734ece3938fc67262ad5e0d4336f820689307

您现在在 github 上有了一个新分支,其中包含您想要的确切代码。

您的第二个选项有点丑陋,但同样有效。假设您对 scp 感到满意(如果您不满意,请阅读 here - 这真的很简单),SSH 到您的服务器,导航到您的“应用程序”目录,然后将整个目录复制到您的本地计算机。

然后,您可以创建一个新分支或简单地强制推送到 master,嘿,您在 github 上有一个完全反映您部署的代码的分支。第一个选项绝对是首选,因为可能有一些您实际上不想从 prod 应用目录复制的配置文件

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-05-25
    • 1970-01-01
    • 2017-09-28
    • 1970-01-01
    • 1970-01-01
    • 2016-06-07
    • 1970-01-01
    相关资源
    最近更新 更多