Как стать автором
Обновить
EPAM
Компания для карьерного и профессионального роста

Continuous Deployment to Windows Instance

Время на прочтение 2 мин
Количество просмотров 5.4K
Что такое Continuous Delivery многие уже, наверное, слышали неоднократно. Одним из ключевых моментов этого процесса является постороение Build Pipeline («трубопровод» от исполнителя к заказчику). А для этого нужно автоматизировать такие процессы как сборка проекта, его разворачивание на инфраструктуре, тестирование и т.д. Отличным инструментом для таких задач является Jenkins.

Для автоматизации разворачивания приложения простейшим вариантом может быть запуск скриптов Jenkins-ом на хостах инфраструктуры по ssh. А что, если в парк из Linux-инстансов затесался один (или несколько) с Windows? Как деплоить на «вражеский» хост — смотри под катом.


Чтобы деплоить на Windows так же, как и на Linux (ну почти), нужно установить FreeSSHd и запустить его как сервис. Далее его нужно настроить через «freeSSHd settings» окно (вызвается из системного трея). Все настройки/фичи описывать не буду, только основные, те, что нам понадобятся для удалённого выполнения команд. На вкладке «Users» добавляем пользователя «jenkins» и выставляем следующие настройки:


На вкладке «SSH»:


А на вкладке «Authentication» нужно указать путь, где будут храниться публичные ключи:


Хост для деплоя готов!

Теперь нужно на Jenkins-хосте сгенерировать пару ключей и публичную часть ключа положить в директорию на Windows инстансе, указанную в настройках freeSSHd.
Проверим, все ли мы правильно настроили (на Jenkins):
# su jenkins -
$ ssh jenkins@10.1.1.160 'cmd /c dir'

Если получили список файлов, значит все ОК.

Переходим непосредственно к деплою. Создадим новый job в Jenkins (кликнуть на «New Job»). Затем зададим имя и выберем «Build a free-style software project». В открывшейся странице редактирования в секции «Build» кликаем на «Add build step» и выбираем «Execute shell».
Сюда мы напишем bash-скрипт, который будет забирать артефакты (в нашем случае из git-репозитория), копировать их с Jenkins-хоста на Windows-инстанс и запускать cmd-скрипты на нём:

#!/bin/bash -x

REPO=/path/to/local/repo/

cd $REPO

git checkout
git pull origin master

#copy files:
lftp -u jenkins,pl sftp://10.1.1.160 <<EOF
mirror -R ./
bye
EOF

#start daemons:
ssh jenkins@10.1.1.160 'cmd /c cd \DIRECTORY && script.cmd'


Тут все просто: скрипт скачивает артефакты, копирует их на Windows-инстанс, запускает необходимые cmd-скрипты.

После всех этих действий у нас есть job, который при нажатии на «Build Now» будет разворачивать приложение.

Спасибо за внимание! Удачных деплоев!
Теги:
Хабы:
+3
Комментарии 3
Комментарии Комментарии 3

Публикации

Информация

Сайт
www.epam.com
Дата регистрации
Дата основания
1993
Численность
свыше 10 000 человек
Местоположение
США
Представитель
vesyolkinaolga

Истории