Добрый день. На сегодняшний день разработка в BPMOnline ведется "на коленке". Разработчик вручную кладет исходники в нужное место, вручную обновляет конфигурацию в системе...А если есть тестовый сервер, количество операций увеличивается.
Возникло желание сделать процесс разработки цивилизованным, внедрить систему контроля версий, настроить автоматическую сборку, тестовый сервер.
Вопрос: как можно организовать автоматическую сборку? Приветствуются любые идеи и предложения.
Не совсем понятен вопрос. Чтоб дать рекомендации по поводу организации автоматической сборки – нужно понимать, какие есть исходные данные. По идее, у Вас есть только собранные бинарники и БД (которые готовит наша автосборка). Автоматизировать сборку автоматически собранной сборки не имеет практического смысла, разве что, если имелось в виду что-то другое.
Прошу уточнить вопрос: как минимум описать подробно шаги, которые сейчас выполняются вручную
Самый простой вариант:
1) Разработчик изменяет код
2) Заходит в Инструменты -> Конфигурация
3) Исходный код -> Сгенерировать для выбранных элементов
То есть хотелось бы автоматизировать запуск автоматической сборки, чтобы она запускалась по расписанию без участия живых людей.
Можно сгенерировать исходные коды конфигурации с помощью SolutionConsole, см. команду RegenerateSchemaSources:
Предназначение и миссия
Данная утилита предназначена для автоматической (скажем запуск по расписанию) и в основном массовой работы со схемами и данными. Позволяет осуществлять перегенерацию исходников, метаданных и структуры базы данных, выгружать и загружать данные, структуру схем и метаданные. Так же используется для переноса изменений с одной базы на другую, включая разные СУБД.
Описание и назначение параметров
1. Основные обязательные параметры
На основании этих параметров происходит соединение с базой и конфигурацией.
-solution=<Название конфигурации>
Допустимые значения:<Название конфигурации>- конфигурация над которой будет выполнятся операция
<*>- имя конфигурации не указано. Логин будет осуществляться на прямую в базу без привязки к конфигурации. Доступны будут только системные схемы.
Обязательность: нет
-user=<Имя пользователя>
Допустимые значения:<Имя пользователя>- имя пользователя системы имеющего права доступа к конфигурации
<Имя пользователя>- имя пользователя базы данных в случае когда -solution=*
Обязательность: да
-password=<Пароль пользователя>
Допустимые значения:<Пароль пользователя>- пароль пользователя системы имеющего права доступа к конфигурации
<Пароль пользователя>- пароль пользователя базы данных в случае когда -solution=*
Обязательность: да
2. Параметр операции
-operation=<Название операции>
Описание:
Параметр, определяющий операцию, которую будет осуществлять утилита.
Допустимые значения:<ExtractSolutionData>- выгрузка конфигурации
<LoadSolutionData>- загрузка выгруженной ранее конфигурации
<LoadSystemDBData>- загрузка выгруженных ранее данных только для системных схем
<UpdateConfigurationDBStructureAndData>- обновляет структуру таблиц и данные в текущей базе данных для конфигурационных схем выгруженными ранее данными
<UpdateSystemDBStructureAndData>- обновляет структуру таблиц и данные в текущей базе данных для системных схем выгруженными ранее данными
<UpdateConfigurationRightsDBStructure>- обновляет структуру таблиц прав для конфигурационных схем
<ReGenerateSchemaSources><GenerateUpdateSystemDBStructureSqlText>- генерирует Sql скрипт обновления структуры системных таблиц на основании выгруженных ранее данных о схемах
<GenerateUpdateSystemDBDataSqlText>- генерирует Sql скрипт обновления данных системных таблиц на основании выгруженных ранее данных
<ReGenerateSchemaMetaData>
Антон, операция LoadSolutionData + опция includedSchemas
Опции операций:-destinationPath=<Путь к папке>
Описание:
Путь к папке, в которую будет осуществляться выгрузка или из которой будет происходить загрузка файлов данных.
Допустимые значения:<Путь к папке>- путь к папке хранения файлов данных используемых утилитой
Обязательность: да
-includedSchemas=<Имя схемы,Имя схемы,Имя схемы,…>
Описание:
Список схем, для которых необходимо выполнить операцию. В случае отсутствия параметра операция выполняется для всех схем
Допустимые значения:<Имя схемы>- имя схемы
<Имя схемы,Имя схемы,Имя схемы,…>- список схем через запятую
Обязательность: нет
Не удалось загрузить схему. Указал путь к папке, там один файл .cs.
Ошибка:
ERROR: Идентификатор GUID должен содержать 32 цифры и 4 дефиса (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx).
Попытался сделать ExtractSolutionData:
Сформировались файлы:
SolutionResources.xml
SysSchemaFolder.dat
SysSchemaInSolution.dat
и папки повторяющие элементы конфигурации в веб-интерфейсе. Но сами папки не содержат файлов.
Как я понимаю должны быть и файлы?
===09:09:12.4443===
Start info:
Operation: ExtractSolutionData
Solution: TSBpm
User: Supervisor
UserPassword:**
DestinationPath: C:\BPMSrcAuto
ERROR: Не удалось найти часть пути "C:\BPMSrcAuto\BPMonline CRM\Конфигурационные элементы\Контакты\Продукты\BaseOfferingInterest.cs".
Антон, не готов Вам указать точную причину возникновения данной проблемы. Если есть возможность - предоставьте бекап Вашей БД на support@terrasoft.ru, либо обратитесь на этот же имейл с уточнением даты и времени, когда к Вам можно будет удаленно подключится для анализа причин проблемы.
Антон, не готов Вам указать точную причину возникновения данной проблемы. Если есть возможность - предоставьте бекап Вашей БД на support@terrasoft.ru, либо обратитесь на этот же имейл с уточнением даты и времени, когда к Вам можно будет удаленно подключится для анализа причин проблемы.
С уважением,
Олейник Дмитрий
Эксперт 3-й линии поддержки
Дмитрий, как называется утилита через которую вы подключаетесь удаленно?
Добрый день
Прислали новую версию ядра и ExtractSolutionData заработало.
Возник вопрос:
1.Что за файлы json генерируются, как их применять?
2.можно ли определить, чтобы генерировались только cs или только md например?
Здравствуйте, Антон!
1. Эти файлы практически бесполезны, функционал добавлялся для каких-то "узких" задач, вероятно связанных с интеграцией. Ценность имеют *.md файлы, так как в них содержатся все метаданные схем.
2. Для этого существует параметр "contentTypes":
-contentTypes=<Тип данных для операции>|<Тип данных для операции>|…
Описание:
Определяет тип данных, которые необходимо выгрузить или загрузить. Можно указать несколько типов через знак «|».
Допустимые значения:<Source>- исходники схем. Расширение файлов “*.cs”
<MetaData>- метаданные схем. Расширение файлов “*.json”
<Data>- данные хранящиеся в базе для данных схем. Расширение файлов “*.dat”
<Localization>- ресурсы схем. Расширение файлов “*.tsresx”
<CodeReviewData>- данные для CodeReview. Расширение файлов “*. mdcs”
<LocalizableData>- данные схем для локализации. Выгружается или в файл "SolutionLocalizableData.xml" или в файл указанный в параметре –fileName
<ExportData>- метаданные схемы с дополнительной информацией о схеме (состояние, название, имя менеджера). Выгрузка идет напрямую из базы. Расширение файлов “*.md”
<All>- все перечисленные выше типы
Здравствуйте, Антон!
По первому Вашему вопросу. Тут дело в том, что по-разному генерируются храняться метаданные методов. Ничего страшного в этих изменениях нет.
По второму вопросу. Файлы .cs можно также выгружать, настроив должным образом Web.config приложения. Тогда все файлы выгружаются в одну папку, и можно отлаживаться, если требуется.
По второму хотел уточнить:
Я полагал, что может есть параметр у Terrasoft.Tools.SolutionConsole.exe.
В предложенном варианте много "ручных действий", например опубликовать схему. Цель не отладка, а хранение исходных кодов в git, для этого уже есть bat файл.
Но проблема с папками, т.к. иногда получается, что схемы импортируются в другую группу, а не где ранее был объект.
Здравствуйте, Антон!
К сожалению, такого параметра нет.
Но, возможно, Вам будет полезна следующая информация. В БД хранятся все версии элементов конфигурации в таблице [SysSchemaInSolution]. Актуальной считается та запись, у которой значение поля [Version] максимальное.
В этой же таблице есть привязка схемы к группе (поле [SysFolderId]). Можно для всех схем прописать одну и ту же группу, что решит Вашу задачу.
Добрый день,
А есть подобная утилита для версии 7.2?
Похоже это "\Terrasoft.WebApp\DesktopBin\WorkspaceConsole\Terrasoft.Tools.WorkspaceConsole.exe" ?
Но выдает что не знает ExtractSolutionData.
Спасибо.
Как я понял теперь нет операции ExtractSolutionData для экспорта всего кода конфигурации в .cs файлы. Ругается что операция не известная. ContentType = Source - тоже нету.
Есть какой то способ получить .cs код всей конфигурации?
Добрый день, Антон!
Действительно, WorkspaceConsole не позволяет выгружать cs-файлы. Если есть необходимость, можно в Web.config приложения (по пути %SitePath%\Terrasoft.WebApp\) указать для параметра "IncludeDebugInformation" значение "true", а в параметре "CompilerSourcesTempFolderPath" - путь к папке, куда будут выгружены cs-файлы.
Файлы будут выгружены при компиляции конфигурации.
Но если Вы хотите просто хранить конфигурацию где-либо на стороне, подобный подход не приемлен для 7.х. Лучше либо выгружать свои пакеты, либо настроить SVN.
Добрый день,
В 7.2.0.1331 предложенный метод CompilerSourcesTempFolderPath заработал, спасибо.
Пробую сделать тоже самое в версии 7.2.2.342 исходники не появляются в указанной папке. Сравнивал доступ к папке, дал всем полный доступ, не помогло.
Можете подсказать куда еще капать?