Всем доброго времени суток.
Не так давно встала задача автоматизация некоторых рабочих процессов, времени на это я потратил довольно много, поэтому решил поделиться с ваши, надеюсь данная статья сэкономит хотя бы ваше время.
1. Автоматизация обновлений WPF (и других клиентских приложений) + API + WEB.
Данные скрипты вы можете переделать под свои задачи, но сейчас покажу как я это сделал.
Представьте у вас есть API + WEB (админка) + WPF(различные клиентские приложения). И разработчикам или администраторам приходится каждый раз в ручную останавливать различные службы и проводить бессонные ночи чтобы поставить обновления, пока пользователь спит.
Так вот я постарался максимально автоматизировать данный процесс.
Во-первых, написал скрипт, который расположен на сервере IIS(можно установить другой любой сервер или машину), работает он следующим образом:
- Переходит в локальную директорию репозитория.
- Создаем в гите контроль проверки обновлений. То проверяем изменился ли хэш последнего комментария, если изменился - получаем обновления и обновляем, после обновления хэш последнего коммита записываем в файл.
- В самой функции обновления указываем путь до MSBuilt и вызываем билд нужных нам проектов с последующим пушем с заранее настроенным конфигом публикации(создать его вы можете открыв проект в VS, правой кнопкой мыши по нужному проекту, после нажать кнопку опубликовать и там можете настроить профили, там же можете посмотреть где они лежат физически).
- После того как мы собрали нужные проекты и запушили сборки, нам нужно добавить их в архив и отправить на сетевой диск(или FTP-сервер, кому как удобнее).
- После этого правим файл хэш.
Во-вторых, нам нужно создать скрипт, который будет проверять наличие обновления на конечном получателе и обновлять его. Немного расскажу как он работает:
Для начала мы проверяем дату изменения предыдущего обновления, скрипт смотрит по прошлому архиву из папки(если архива нет, скрипт сработает) и дату создания архива в нашей сетевой папки.
Если даты не совпадают мы останавливаем нужные нам службы или процессы, переносим архив с сервера, заменяя предыдущий и распаковываем в нужной нам директории. После этого нужно запустить службы(в моем случае за это у меня отвечает другой скрипт).
В дальнейшем при обновления API и Web-servera буду доделывать проксирование в данный скрипт, что бы можно было бесшовно обновляться, переклаясь на резервные сервера.
Надеюсь мои труды кому-нибудь помогут.