Автоматическое обновление сотни развертываний Windows при нажатии на главную ветвь Git
Я пытаюсь использовать Git для управления продуктом, установленным на многих серверах Windows. Вот текущий статус:
- Каждый клиент вытащил репозиторий и находится на
master
ветке, - Серверы всегда включены и подключены к Интернету,
- У меня есть полный доступ (администратор) к серверам, но некоторые другие ребята (из моей компании) тоже имеют доступ, поэтому я должен быть осторожным с учетными данными, такими как ключи SSH,
- Исходный код продукта небольшой (не более 5 МБ).
И следующее, что я пытаюсь достичь, когда я (как разработчик) нажимает, чтобы master
веткой на сервере Git:
- Все серверы Windows автоматически извлекают новые коммиты и обновляют свою копию до последней версии,
- Выполните некоторые скрипты (чтобы перезапустить некоторые службы, запустить тесты и т.д.),
- Запишите весь процесс обновления,
- Сервер сообщает о текущем статусе (Git commit, tag и branch) на удаленном сервере, чтобы я мог проверять состояние всех серверов после каждого нажатия.
Какие у меня варианты? Есть ли какое-либо программное обеспечение, или я должен сам построить свой собственный? Я проверил Git-крючки, но кажется, что они срабатывают после того, как я вручную вытащил код на каждом сервере.
Ответы
Ответ 1
Это идея,
- Назначить один из серверов как сервер Jenkins
- Настройте остальные серверы как подчиненные/агенты
Обеспечивает рабочий процесс
- Вы выполняете исполняемый файл (.sh.bat.exe)
- Дженкинс замечает фиксацию и запускает файл на всех машинах
- Агент выполняет команды при регистрации терминала в Дженкинсе
- Дженкинс говорит вам, было ли ваше создание успешным или неудачным
Если вы хотите попробовать эту стратегию, я был бы рад помочь
Plus Jenkins - это веб-приложение, благодаря которому вы можете получить доступ к нему со многих устройств!
Ответ 2
Если вы не хотите использовать инструменты развертывания сторонних разработчиков, вы можете сделать это таким образом.
- Развертывание инициации
Когда ваш git-сервер получил мастер-версию, он должен запустить процесс развертывания. Это может быть достигнуто с помощью git-hook post-receive
на сервере git.
- Развертывание процесса
Вы должны как-то обновить исходный код и запустить скрипты на серверах Windows. Это может быть достигнуто по-разному. Например, вы можете подключиться к ним с помощью ssh (вы должны настроить там ssh-сервер, например freesshd), вызвать git pull
и запустить скрипты из исходного кода. Я предлагаю вам не использовать рабочий каталог репозитория в качестве производственного кода на сервере, потому что он будет находиться в противоречивом состоянии, пока git pull. Поэтому лучше иметь папку репозитория и скрипты, которые будут синхронизировать рабочий каталог с экземпляром.