June 8, 2021

Простейший 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" в строку запуска агента.