Преобразование исходных кодов 1С:Предприятие в файлы поставки при использовании практики Непрерывной интеграции
- Прогон исходных кодов 1С: Предприятие по сборочной линии. Этапы сборочной линии:
- Создание ИБ из исходников конфигурации и расширений. В сборке может участвовать до трех расширений
- Статический анализ кода на соответствие стандартам
- Выполнение модульных тестов
- Формирование файлов поставки конфигурации и расширений
- По результатам проверок формируется журнал
- Этапы сборки выполняются для любого проекта и в любом окружении без изменения скриптов. Все настройки под конкретный проект и окружение выполняются в одном месте
Для настройки запуска скриптов под конкретный проект и окружение используются переменные среды. Все пути к файлам указываются относительно корня репозитория. Основные переменные перечислены в файле .env.cmd.example :
- _1CE_Version - версия платформы 1с, например 8.3.14.1993
- _1CE_TestUnitDir - относительный путь к каталогу с фичами модульных тестов. Он обычно создается плагином к EDT ru.capralow.dt.unit.launcher в каталоге проекта расширения с модульными тестами
- EDT_ProjectDir_Configuration - относительный путь к каталогу с проектом конфигурации
- EDT_ProjectDir_Extension1 - относительный путь к каталогу с проектом расширения 1
- Extension1 - имя расширения 1
- EDT_ProjectDir_Extension2 - относительный путь к каталогу с проектом расширения 2
- Extension2 - имя расширения 2
- EDT_ProjectDir_Extension3 - относительный путь к каталогу с проектом расширения 3
- Extension3 - имя расширения 3
Для выполнения скриптов вам понадобится EDT и конфигуратор 1С. На компьютере должна быть установлена одна версия EDT. Для подготовки модульных тестов к выполнению можно использовать плагин к EDT ru.capralow.dt.unit.launcher . Для статического анализа кода нужна конфигурация "Автоматизированная проверка конфигураций". Проверена работа на 1C 8.3.14, EDT 1.15, АПК 1.2.5.16 и VA 1.2.027
В репозитории пропущены файлы сторонних приложений :
- конфигурации "Автоматизированная проверка конфигураций"
- обработки Vanessa Automation
Чтобы полноценно использовать скрипты, эти файлы нужно добавить. Поэтому:
- Клонируете себе этот репозиторий
- Выгружаете файл конфигурации "Автоматизированная проверка конфигураций" в 3dparty\automation-configuration-check.cf, чтобы работал статический анализ кода
- Выгружаете файл обработки Vanessa Automation в 3dparty\vanessa-automation-single.epf, чтобы работали модульные тесты.
- 3dparty\init-1ce.cmd - каталог исполняемых файлов платформы 1С добавляет в переменну среды PATH
- build\create-db.cmd - из исходников создает ИБ 1С для строки соединения, указанной в переменной _1CE_TargetDBConnection. Если переменная пустая, то используется значение "File='.db'". Также в эту ИБ из исходников загружаются расширения с помощью вызова build\load-files-ext.cmd
- build\1ce-acc-check.cmd - создает из файла конфигурации automation-configuration-check.cf в каталоге .acc ИБ "Автоматизированная проверка конфигураций" и запускает эту ИБ в режиме предприятия для проверки нашей конфигурации из каталога .db . Параметры запуска для проверки генерируются скриптом lint\gen-params.cmd
- build\test.cmd - запускает модульные тесты для ИБ .db
- build\edt-validate.cmd - проверка конфигурации с помощью EDT
- build\check-modules.cmd - проверка синтаксиса кода с помощью конфигуратора
- build\1ce-check-config.cmd - проверка конфигурации с помощью конфигуратора
- build\dump-cfg.cmd - выгружает из ИБ .db конфигурацию в каталог, указанный в переменной DistributionDir, в файл 1cv8.cf. Если переменная пустая, то используется значение "dist". Также из ИБ выгружаются до трех расширений в файлы *.cfe с помощью вызова скрипта build\dump-ext.cmd. Расширения выгружатются, если заданы соответствующие переменные среды (Extension1 - Extension3)
- build\dump-distr.cmd - выгружает из ИБ 1С .db файл поставки в каталог, указанный в переменной DistributionDir, в файл 1cv8.cf. Если переменная пустая, то используется значение "dist". Также из ИБ выгружаются до трех расширений в файлы *.cfe с помощью вызова скрипта build\dump-ext.cmd. Расширения выгружатются, если заданы соответствующие переменные среды (Extension1 - Extension3)
- config\* - исключения из проверок. Из результатов проверок убираются строки в этих файлах
- tools\* - вспомогательные скрипты
Загрузка исходников конфигурации и расширений в ИБ происходит в два этапа:
- Конвертация исходников в формат понятный конфигуратору с помощью EDT
- Загрузка сконвертированных исходников в пустую ИБ с помощью конфигуратора.
Допустим есть вот такой репозиторий:
>dir /b
.env.cmd
.env.cmd.example
.gitattributes
.gitignore
3dparty
build
lint
README.md
test
TradeManagement
TradeManagement.FuncTests
TradeManagement.PatchCRM
TradeManagement.UnitTests
И при разработке используется платформа 1С версии 8.3.14.
Тогда настройки скриптов для использования будут выглядеть вот так:
>type .env.cmd
SET _1CE_Version=8.3.14.1993
SET _1CE_TestUnitDir=TradeManagement.UnitTests\features
SET EDT_ProjectDir_Configuration=TradeManagement
SET EDT_ProjectDir_Extension1=TradeManagement.FuncTest
SET Extension1=FuncTest
SET EDT_ProjectDir_Extension2=TradeManagement.PatchSSL
SET Extension2=PatchSSL
SET EDT_ProjectDir_Extension3=TradeManagement.UnitTests
SET Extension3=UnitTests
И инициализация версии 1С будет выполнятся вот так:
>3dparty/init-1ce.cmd
И сборка исходников в ИБ будет выполнятся вот так:
>build/create-db.cmd
И выполнение модульных тестов будет выполнятся вот так:
>build/test.cmd
И выполнение статического анализа кода с помощью АПК будет выполнятся вот так:
>build/1ce-acc-check.cmd
И выполнение платформенной проверки конфигурации будет выполнятся вот так:
>build/1ce-check-config.cmd
На компьютере разработчика можно использовать вспомогательные скрипты запуска частых операций, расположенные в корне репозитория:
- start-create-db
- start-lint
- start-test
- start-dump-distr
- start-check-config
Эти скрипты ожидают, что настройки запуска задаются в переменных среды с помощью скрипта .env.cmd
Приведены примеры описания сборочных линий для Azure Pipelines. Линии используются в рамках процесса разработки по GitFlow:
- azure-pipelines-release.yml - выполняет модульные тесты и формирует файлы поставки. Применяется для кода из веток master, release/* , hotfix/*.
- azure-pipelines-pr.yml - выполняет статический анализ кода, синтаксический контроль кода и модульные тесты. Применяется при code review перед слиянием в ветки development и master.
- azure-pipelines-development.yml - выполняет модульные тесты и выгружает конфигурацию и расширения в файлы. Применяется для кода из веток development.