4.41
Grade
142.25
Rating
EPAM
Компания для карьерного и профессионального роста

Continuous Deployment to Windows Instance

EPAM corporate blog
Tutorial
Что такое 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» будет разворачивать приложение.

Спасибо за внимание! Удачных деплоев!
Tags:jenkinsfreesshdcontinuous deploymentwindows
Hubs: EPAM corporate blog
+3
4.9k 11
Comments 3

Information

Founded
1993
Location
США
Website
www.epam.com
Employees
over 10,000 employees
Registered