Почти автоматическая сборка поставок 1С


Имея некоторое отношение к разработке типовых отраслевых решений, вынужден констатировать, что процесс финальной сборки дистрибутива требует достаточно много времени и внимания. Очень хотелось его автоматизировать, в результате возник скрипт, который и предлагаю вашему вниманию.

Уверен, что у подавляющего числа разработчиков, выпускающих тиражные решения, есть свои инструменты ускорения этого процесса, однако надеюсь, что и мой найдет своего пользователя, к тому же в свободном доступе подобных решений не нашел.

Какой процесс заложен в предлагаемом решении:

Существует "база разработки" - база, в которой создается CF и CFU файлы и впоследствии осуществяляется сборка дистрибутива.  База может как быть подключена к хранилищу, так и нет, для себя я создал отдельную базу, которая используется только для сборки.

Далее существуют две базы, входящие в поставку "Новая" и "Демо" - они автоматически обновляются CFU-шником, и выгружаются, после чего создается полный дистрибутив поставки и поставка обновления.

Дистрибутив обновления можно создать, не обновляя демо и новую базу.

Умеет автоматически создавать файлы readme, updinfo и прочее, в том числе по шаблону.

Чего не умеет предлагаемое решение:

Изменять расположение манифеста в edf-файле, его перед сборкой необходимо править руками.

Не умеет обновлять более двух баз (это не ограничение в принципе, просто мне больше не надо)

Написано не на 1С, а на perl, просто так сложилось исторически.

Для начала работы с инструментом необходимо разархивировать, например в "D:\Build" если путь отличается от этого, то поменять пути в переменной "$WorkDir" и в edf-файле, установить настройки настройки в файле build.pl.

 

Далее приведу заголовок файла, содержащий настройки:

 

# Номер релиза
$NumBuild = "2.0.22.1\\1.2.4.5";
# Поддерживается обновление с
@UpdateFromList = qw(2.0.22.1\1.2.4.4);
# Дата сборки
$BuildDate = "28.04.2011";

# Параметры сборки

# Создавать файлы readme, updinfo, etc.
# файлы создаются на основании шаблонов, размещенных в ..\template
# производится замена по тегам:
#    
          номер версии вида x.x\y.y
#    
          номер версии вида x.x.x\y.y.y
#    
          номер версии вида x.x.x.x\y.y.y.y
#    
               номер релиза нашего продукта y.y
#    
               размещение файла манифеста, например 1C\HRM\x_x_x_x
#    
    список конфигураций, с которых поддерживается обновление через запятую, например 2.0.21.1, 2.0.22.1
$CreateTxtFile = 1;
# Создавать CF и CFU файлы
$CreateCF_CFUFile = 0;

# Обновлять демонстрационную базу
$UpdateDemoBase = 1;
# Запускать обновленную базу в режиме предприятие перед выгрузкой (требуется присутствие пользователя)
$UpdateDemoIB   = 1;
# Обновлять новую базу
$UpdateNewBase = 1;
# Запускать обновленную базу в режиме предприятие перед выгрузкой (требуется присутствие пользователя)
$UpdateNewIB   = 1;

# Создавать комплект обновления
$CreateUpdatePack   = 1;
# Создавать комплект поставки
$CreateSetupPack   = 1;

 

# Параметры подключения к базе разработки
# Адрес базы

$WorkBaseDir = "D:\\Build\\Base";
# Пользователь
$WorkBaseUsr = "Любимов (администратор)";
# Пароль
$WorkBasePwd = "";
# признак использования хранилища
$UseRep = 1;
# Адрес хранилища
$ConfigurationRepositoryF = "Y:\\1С\\Хранилище_БП20";
# Пользователь хранилища
$ConfigurationRepositoryN = "build";
# Пароль
$ConfigurationRepositoryP = "";
# Получать текущую конфигурацию хранилища перед созданием CF и CFU
$ConfigurationRepositoryUpdateCfg = 1;

# Параметры подключения к демо базе
# Адрес базы

$DemoBaseDir = "C:\\\\Разработка_8_2\\Demo";
# Пользователь
$DemoBaseUsr = "Любимов (администратор)";
# Пароль
$DemoBasePwd = "";
# Имя файла выгрузки
$DemoFileName = "1Cv8_demo.dt";

# Параметры подключения к новой базе
# Адрес базы

$NewBaseDir = "C:\\\\Разработка_8_2\\New";
# Пользователь
$NewBaseUsr = "";
# Пароль
$NewBasePwd = "";
# Имя файла выгрузки
$NewFileName = "1Cv8_new.dt";

# расположение пакета обновления
$UPD_DIR = "C:\\\\Distr\\2_0\\Distr\\UPD_SETUP82";

# расположение пакета установки
$SETUP_DIR = "C:\\\\Distr\\2_0\\Distr\\SETUP CD\\Configs\\Setup";


# Расположение актуальной версии платформы 1С
$OneCBitDir = "C:\\Program Files\\1cv82\\8.2.13.219\\bin\\1cv8.exe";

# Размещение манифеста устанавливаемого шаблона
$OneCTemplateDir = "\\bt\\Renta";

# базовый каталог сборок, каталог, где содаржатся CF и CFU вайлы предыдущих версий
$RevDir  = "C:\\\\Поставка_8_2\\Поставка";
# Рабочий каталог сборщика
$WorkDir  = "D:\\Build";
# EDF файл, должен располагаться в $WorkDir
$EDFFile  = "Комплект 2_0.edf";

# список файлов, формируемых по шаблону
@CreateFileList = qw(1cv8upd.htm ReadMe.txt VerInfo.txt);

Файлы обработки:

-