Как вернуть мою кодовую базу обратно к моему последнему развертыванию? - PullRequest
0 голосов
/ 15 января 2020

У меня следующий сценарий.

6 декабря мы с моей командой развернули нашу кодовую базу в производство. С тех пор мы внесли несколько изменений, которые нарушили кодовую базу способами, которые мы не предвидели. Кодовая база - это старая унаследованная кодовая база, в которой практически нет тестов, охвата, большого количества запахов кода и очень тесно связанных моделей. Несмотря на все наши усилия по частичному рефакторингу и тестированию того, что мы могли, приложение сломалось, и теперь нам сложно определить, как исправить приложение. Наша практика разработки не поддерживает непрерывное развертывание, и огромное количество кода развертывается ежемесячно (мы работаем над этим). Мы не испытываем давления, но нам очень трудно найти коммит, который работает так, как раньше.

Мой вопрос: есть ли способ получить кодовую базу, которая в данный момент находится в производстве? как есть и вернуть это в качестве отправной точки. Например, мы используем capistrano для развертывания кодовой базы на EC2 с git. Могут ли git, AWS EC2 или Capistrano позволить нам просто взять оттуда код и просто использовать его для сброса нашего git кода?

Звучит нелегко, но я думаю, что может быть, кто-то знает способ сделать это. Кто-нибудь знает способ а). Возьмите код на производство б). Используйте эту копию кода в качестве справочной, чтобы вернуть наш код разработки к этому моменту.

Спасибо за помощь.

1 Ответ

0 голосов
/ 15 января 2020

У вас есть как минимум два варианта. Первый использует капистрано. Следуя шагам здесь , вы можете настроить следующий скрипт 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

Вот ваш коммит ha sh, cf8734ece3938fc67262ad5e0d4336f820689307. Затем вы можете просто git checkout d231b7abd6e4183e037817780738c54f1fbaf1fa, что приведет вас к тому, что вы хотите. Теперь создайте новую ветку с

git checkout -b 'last_deployed_code'
git push origin last_deployed_code`

или, как прокомментировал @RomainValeri:

git branch recovery origin/cf8734ece3938fc67262ad5e0d4336f820689307

Теперь у вас есть новая ветка на github с точным кодом, который вы хотите.

Ваш второй вариант немного страшнее, но не менее эффективен. Предполагая, что вы довольны scp (читайте здесь , если нет - это действительно просто), S SH на ваш сервер, перейдите в каталог «app», а затем скопируйте весь этот каталог на ваш локальный компьютер.

Затем вы можете создать новую ветвь или просто заставить pu sh освоить, и привет, у вас есть ветка на github, которая точно отражает ваш развернутый код. Первый вариант определенно предпочтителен, так как, возможно, есть некоторые файлы конфигурации, которые вы на самом деле не хотите копировать из каталога вашего приложения prod

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...