Простейший Jenkins Pipeline для 1C
В прошлой заметке был установлен Jenkins и настроен простейший конвейер сборки. Рассмотрим другой вид задач Jenkins - Pipeline. Данный вид задач дает красивое представление выполнения шагов задачи сборки. В интернете большое количество полноценных инструкций настройки этого вида задач. Рассмотрим простейший вариант, без использования параметров и GIT.
Чтобы использовать Pipeline нужно установить плагин Pipeline и плагины, с ним связанные.
Cоздаем новую задачу Создать Item -> Pipeline и вводим название. Важно чтобы в названии НЕ БЫЛО РУССКИХ БУКВ. Иначе не будет выполнятся команда bat скрипта.
В разделе Pipeline выбираем вариант Pipeline script и в текстовое поле Script вводим код:
node { stage('Обновление базы из хранилища') { bat '''chcp 65001 "C:\\Program Files\\1cv8\\8.3.17.1989\\bin\\1cv8.exe" DESIGNER /ConfigurationRepositoryUpdateCfg -revised -force /DepotUpdateCfg /UpdateDBCfg /S"СерверПриложений/База" /N"Пользователь" /ConfigurationRepositoryF"ПутьКХранилищу" /ConfigurationRepositoryN"Пользователь" ''' } }
Этот скрипт получает изменения из хранилища конфигурации и обновляет конфигурацию базы данных.
В секции stage описывается отдельный шаг задачи. Сколько будет таких секций столько шагов.
Символ '\' экранируется вторым символом '\', либо заменяется на обратный '/'.
Многострочная команда заключается в тройные кавычки - одинарные или двойные.
Чтобы правильно составить командную строку есть помощник, который расположен на отдельной странице Pipeline Syntax. В поле Sample steps нужно выбрать из списка bat: Windows Batch Script. В текстовом поле Batch Script ввести команду и нажать кнопку Generate Pipeline Script. Полученный текст из нижнего поля можно скопировать и вставить в секцию stage скрипта.
Запуск по расписанию настраивается аналогично. В разделе Триггеры сборки нужно установить Запускать периодически и появится поле для ввода расписания.
Cохраняем заполненное задание, а дальше Jenkins сам начнет выполнять заданные действия.
Для запуска сценариев нужен особый режим выполнения команд, поэтому необходимо добавить узел, который будет выполнять команды в интерактивном режиме. Агент узла нужно запускать через командный файл.
Ну и конечно же не забываем про кириллицу, которая точно где-нибудь да встретится. Нужно добавить параметр запуска java "-Dfile.encoding=UTF-8" в строку запуска агента.