Добрый день.
На сегодняшний день разработка в 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>
Вот пример вызова операции перегенерации:
Terrasoft.Tools.SolutionConsole.exe "-user=Supervisor" "-password= Supervisor " -solution=TSBpm -destinationPath=C:\Temp\SR -Operation=ReGenerateSchemaSources -contentTypes=Localization -logPath=C:\Temp\Log -ignoreLocking=true
Предварительно обязательно указать корректную строку подключения к БД в конфиге приложения (Terrasoft.Tools.WorkspaceConsole.exe.config)
И скопировать из Terrasoft.WebApp\bin\ все файлы в папку с SolutionConsole
Вот пример вызова операции перегенерации:
Terrasoft.Tools.SolutionConsole.exe "-user=Supervisor" "-password= Supervisor " -solution=TSBpm -destinationPath=C:\Temp\SR -Operation=ReGenerateSchemaSources -contentTypes=Localization -logPath=C:\Temp\Log -ignoreLocking=true
Предварительно обязательно указать корректную строку подключения к БД в конфиге приложения (Terrasoft.Tools.WorkspaceConsole.exe.config)
И скопировать из Terrasoft.WebApp\bin\ все файлы в папку с SolutionConsole
Исходные коды удалось получить.
А как можно загрузить из консоли изменения, т.е. например .md файл?
Антон, операция LoadSolutionData + опция includedSchemas
Опции операций: -destinationPath=<Путь к папке> Описание: Путь к папке, в которую будет осуществляться выгрузка или из которой будет происходить загрузка файлов данных. Допустимые значения: <Путь к папке> - путь к папке хранения файлов данных используемых утилитой Обязательность: да -includedSchemas=<Имя схемы,Имя схемы,Имя схемы,…> Описание: Список схем, для которых необходимо выполнить операцию. В случае отсутствия параметра операция выполняется для всех схем Допустимые значения: <Имя схемы> - имя схемы <Имя схемы,Имя схемы,Имя схемы,…> - список схем через запятую Обязательность: нет
Дмитрий,
Не удалось загрузить схему. Указал путь к папке, там один файл .cs.
Ошибка:
ERROR: Идентификатор GUID должен содержать 32 цифры и 4 дефиса (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx).
Попытался сделать ExtractSolutionData:
Сформировались файлы:
SolutionResources.xml
SysSchemaFolder.dat
SysSchemaInSolution.dat
и папки повторяющие элементы конфигурации в веб-интерфейсе. Но сами папки не содержат файлов.
Как я понимаю должны быть и файлы?
Проверил у себя - всё отлично, внутри папок (структура конфигурации) есть схемы.
Вот команда:
Terrasoft.Tools.SolutionConsole.exe -solution=TSBpm -user=supervisor -password=Supervisor -operation=ExtractSolutionData -destinationPath=C:\Temp\SR -logPath=C:\Temp\SR\Log
Что то на нашей конфигурации не работает.
Делаю такую же команду
Terrasoft.Tools.SolutionConsole.exe "-user=Supervisor" "-password=*****" -solution=TSBpm -destinationPath=C:\BPMSrcAuto -Operation=ExtractSolutionData -logPath=C:\BPMSrcAuto\log
Версия 5.4.0.2028
Лог ошибки:
=== 09:09:12.4443 === Start info: Operation: ExtractSolutionData Solution: TSBpm User: Supervisor UserPassword: ** DestinationPath: C:\BPMSrcAuto ERROR: Не удалось найти часть пути "C:\BPMSrcAuto\BPMonline CRM\Конфигурационные элементы\Контакты\Продукты\BaseOfferingInterest.cs".
Здравствуйте.
Ошибка или в доступа к папке (не может создать под каталоги) или в русских символах. Локализация Windows у Вас какая? Какой язык для non-unicode?
До этого у меня каталоги создавались, но были пустые.
Windows русская, язык non-unicode - русский.
Антон, не готов Вам указать точную причину возникновения данной проблемы. Если есть возможность - предоставьте бекап Вашей БД на support@terrasoft.ru, либо обратитесь на этот же имейл с уточнением даты и времени, когда к Вам можно будет удаленно подключится для анализа причин проблемы.
Вот здесь пытаюсь решить тоже самое
http://www.community.terrasoft.ru/forum/topic/10139
"Олейник Дмитрий" написал:Антон, не готов Вам указать точную причину возникновения данной проблемы. Если есть возможность - предоставьте бекап Вашей БД на support@terrasoft.ru, либо обратитесь на этот же имейл с уточнением даты и времени, когда к Вам можно будет удаленно подключится для анализа причин проблемы.
С уважением,
Олейник Дмитрий
Эксперт 3-й линии поддержки
Дмитрий, как называется утилита через которую вы подключаетесь удаленно?
Антон, Team Viewer.
Кстати, по ссылке выше, решена проблема загрузки схем.
С выгрузкой проблем не возникало.
Добрый день
Прислали новую версию ядра и 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 файлы.
Возникло много изменений в одних и тех же схемах разной версии ядра вида:
было:
method.ZipBody = new byte[] { 31,139,8,0,0,0,0,0,4,0,173,143,77,11
стало:
method.Body = @"base.SetCustomFilterDetails(); List<string> filteredColumn = new List<string>(); filteredColumn.Add(""StartDate""); filteredColumn.Add(""DueDate"");
Можете подсказать с чет это связано? Возможно это какая то настройка в конфиге?
Еще один вопрос созрел: а возможно генерировать .cs файлы без учета группы, т.е. также как и .md файлы в одной папке?
Здравствуйте, Антон!
По первому Вашему вопросу. Тут дело в том, что по-разному генерируются храняться метаданные методов. Ничего страшного в этих изменениях нет.
По второму вопросу. Файлы .cs можно также выгружать, настроив должным образом Web.config приложения. Тогда все файлы выгружаются в одну папку, и можно отлаживаться, если требуется.
По второму хотел уточнить:
Я полагал, что может есть параметр у Terrasoft.Tools.SolutionConsole.exe.
В предложенном варианте много "ручных действий", например опубликовать схему. Цель не отладка, а хранение исходных кодов в git, для этого уже есть bat файл.
Но проблема с папками, т.к. иногда получается, что схемы импортируются в другую группу, а не где ранее был объект.
Здравствуйте, Антон!
К сожалению, такого параметра нет.
Но, возможно, Вам будет полезна следующая информация. В БД хранятся все версии элементов конфигурации в таблице [SysSchemaInSolution]. Актуальной считается та запись, у которой значение поля [Version] максимальное.
В этой же таблице есть привязка схемы к группе (поле [SysFolderId]). Можно для всех схем прописать одну и ту же группу, что решит Вашу задачу.
Добрый день,
А есть подобная утилита для версии 7.2?
Похоже это "\Terrasoft.WebApp\DesktopBin\WorkspaceConsole\Terrasoft.Tools.WorkspaceConsole.exe" ?
Но выдает что не знает ExtractSolutionData.
Добрый день.
Описание утилиты WorkspaceConsole можно найти в документации BPMonline
http://www.training.terrasoft.ru/sites/default/files/BPMonline_Setup_Guide_MSSQL_7.3.0.pdf
Начиная со страницы 20.
Спасибо.
Как я понял теперь нет операции 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 исходники не появляются в указанной папке. Сравнивал доступ к папке, дал всем полный доступ, не помогло.
Можете подсказать куда еще капать?
в web.config добавил:
<add key="IncludeDebugInformation" value="true" /> <add key="IncludeXmlDocumentation" value="false" /> <add key="CompilerSourcesTempFolderPath" value="D:\Terrasoft\WebApp\Debug\" />
"Резниченко Сергей" написал:Здравствуйте, Антон!
Компилировали конфигурацию? Вы вносили изменения в web.config, который лежит в папке Terrasoft.WebApp?
Спасибо, упустил этот момент. Внес изменения в Terrasoft.WebApp и заработало.