Я хотел бы использовать Jenkins для развертывания / обновления программ на удаленном сервере Windows (не всегда одной и той же версии). Под «программами» я подразумеваю java, tomcat, ActiveMQ и некоторые исполняемые файлы сервера (.exe).
Чтобы обновить некоторые из них, мне нужно будет остановить связанную службу, развернуть обновленный исполняемый файл и перезапустить службу (например, tomcat). Некоторые другие просто нужно будет установить на удаленном компьютере без запроса (например, обновление java с версии 8 до 9).
Проблема в том, что я не уверен, как настроить Jenkins для выполнения этих заданий в удаленной среде Windows, и я не уверен, как лучше всего это сделать.
Jenkins имеет возможность запускать Powershell - это один из самых простых способов внести изменения в Windows. Вы можете использовать Командлеты Start-Service или Stop-Service для управления услугами.
Для установки на основе сценария я предпочитаю Шоколадный, который позволяет установить практически все, что угодно.
Например, после установки вы можете использовать эту простую команду для установки Java:
choco install jdk8
Как сказал @sharpslinger, Powershell - это правильный инструмент для этой работы. Я бы выбрал Powershell DSC. Полезные ресурсы DSC в вашем случае:
Для запуска / остановки службы используйте Сервисный ресурс:
Service ServicesStop
{
Name = "TheTestService"
State = "Stopped"
}
Чтобы развернуть исполняемый файл, вы можете использовать Файловый ресурс:
File CopyMyExe
{
Ensure = "Present"
Type = "File"
SourcePath = "MySource.jar"
DestinationPath = "MyDestination.jar"
}
Для автоматической установки Java вы можете использовать Ресурс скрипта. Источник примера ниже: ссылка.
# This allows the reboot
LocalConfigurationManager
{
RebootNodeIfNeeded = $true
}
Script Java
{
GetScript = { return @{} }
TestScript = { return Test-Path 'HKLM:\SOFTWARE\JavaSoft\Java Runtime Environment' }
SetScript = {
$installer = "jre-8u144-windows-x64.exe"
Start-Process $installer -ArgumentList '/s' -Wait
# signal reboot
$global:DSCMachineStatus = 1
}
}
Задача Дженкинса будет заключаться в том, чтобы просто вызвать скрипт Powershell, который развертывает ваше приложение.