Автоматическое обновление сотни развертываний Windows при нажатии на главную ветвь Git

Я пытаюсь использовать Git для управления продуктом, установленным на многих серверах Windows. Вот текущий статус:

  • Каждый клиент вытащил репозиторий и находится на master ветке,
  • Серверы всегда включены и подключены к Интернету,
  • У меня есть полный доступ (администратор) к серверам, но некоторые другие ребята (из моей компании) тоже имеют доступ, поэтому я должен быть осторожным с учетными данными, такими как ключи SSH,
  • Исходный код продукта небольшой (не более 5 МБ).

И следующее, что я пытаюсь достичь, когда я (как разработчик) нажимает, чтобы master веткой на сервере Git:

  • Все серверы Windows автоматически извлекают новые коммиты и обновляют свою копию до последней версии,
  • Выполните некоторые скрипты (чтобы перезапустить некоторые службы, запустить тесты и т.д.),
  • Запишите весь процесс обновления,
  • Сервер сообщает о текущем статусе (Git commit, tag и branch) на удаленном сервере, чтобы я мог проверять состояние всех серверов после каждого нажатия.

Какие у меня варианты? Есть ли какое-либо программное обеспечение, или я должен сам построить свой собственный? Я проверил Git-крючки, но кажется, что они срабатывают после того, как я вручную вытащил код на каждом сервере.

Ответ 1

Это идея,

  1. Назначить один из серверов как сервер Jenkins
  2. Настройте остальные серверы как подчиненные/агенты

Обеспечивает рабочий процесс

  1. Вы выполняете исполняемый файл (.sh.bat.exe)
  2. Дженкинс замечает фиксацию и запускает файл на всех машинах
  3. Агент выполняет команды при регистрации терминала в Дженкинсе
  4. Дженкинс говорит вам, было ли ваше создание успешным или неудачным

Если вы хотите попробовать эту стратегию, я был бы рад помочь

Plus Jenkins - это веб-приложение, благодаря которому вы можете получить доступ к нему со многих устройств!

Ответ 2

Если вы не хотите использовать инструменты развертывания сторонних разработчиков, вы можете сделать это таким образом.

  1. Развертывание инициации

Когда ваш git-сервер получил мастер-версию, он должен запустить процесс развертывания. Это может быть достигнуто с помощью git-hook post-receive на сервере git.

  1. Развертывание процесса

Вы должны как-то обновить исходный код и запустить скрипты на серверах Windows. Это может быть достигнуто по-разному. Например, вы можете подключиться к ним с помощью ssh (вы должны настроить там ssh-сервер, например freesshd), вызвать git pull и запустить скрипты из исходного кода. Я предлагаю вам не использовать рабочий каталог репозитория в качестве производственного кода на сервере, потому что он будет находиться в противоречивом состоянии, пока git pull. Поэтому лучше иметь папку репозитория и скрипты, которые будут синхронизировать рабочий каталог с экземпляром.