В статье описан пример сборки .cf файла при помощи штатных средств EDT, Конфигуратор.
Сборку будем производить на Windows машине с установленным GitLab-Runner, настроенным на выполнение команд CMD, а также установленной EDT.
Для начала нужно добавить строку в файл config.toml
shell = "cmd"
Сам файл .gitlab-ci.yml имеет следующее содержание
variables: # CI_DEBUG_TRACE: "true" # Для целей отладки PLATFORM_1C: 'C:/Program Files (x86)1cv88.3.10.2699in1cv8.exe' # Используемая платформа для получения .CF файла. Обратите внимание на одинарные кавычки, в двойных кавычках переменная определяется неверно. BASE_1C: 'testbase' # пустая база 1С для целей загрузки/выгрузки нашего cf файла ConvertEDT_XML: # Конвертация проекта из формата EDT в формат XML stage: build script: - md config - ring edt workspace export --project %CI_PROJECT_DIR%/ --configuration-files %CI_PROJECT_DIR%/config --workspace-location %CI_PROJECT_DIR%/workspace # Используем штатные средства утилиты ring идущей в составе поставки EDT only: - master CreateBase: # Создаем пустую базу stage: build variables: GIT_STRATEGY: none script: - start "" /wait "%PLATFORM_1C%" CREATEINFOBASE File="%CI_PROJECT_DIR%/%BASE_1C%" only: - master LoadConfig: # Загружаем в пустую базу конфигурацию из файлов stage: build variables: GIT_STRATEGY: none script: - start "" /wait "%PLATFORM_1C%" DESIGNER /F %CI_PROJECT_DIR%/%BASE_1C% /LoadConfigFromFiles %CI_PROJECT_DIR%/config /UpdateDBCfg only: - master DumpConfig: stage: build variables: GIT_STRATEGY: none script: - md build # Создаем пустую папку для выгрузки в нее конфигурации - start "" /wait "%PLATFORM_1C%" DESIGNER /F %CI_PROJECT_DIR%/%BASE_1C% /DumpCfg %CI_PROJECT_DIR%/build/%CI_PIPELINE_ID%.cf # Выгружаем конфигурацию в файл с именем номера запущенного конвеера. artifacts: name: "%CI_COMMIT_REF_NAME%" paths: - build/*.cf # Отправляем файл конфигурации архивированный .zip в наш проект на Gitlab expire_in: 7 day # Указываем срок жизни нашего архива only: - master
В итоге у нас получилась автоматическая сборка проекта в виде .cf файла с конфигурацией
К статье приложен файл настройки без комментариев.
зачем?
(1) Чтобы руками не делать. Очевидно же..
Молодец!
(4) Спасибо, приятно слышать.
Да, 1С делает маленькие шажки в сторону нормального программирования. Спасибо за статью!
а как запускать этот скрипт?
Можно подробно со скриншотами написать?
где вы взяли файл config.toml?
Вы о чем? Вы точно не перепутали статью по 1C Enterprise Development Tools?
(8) Инструкции по настройке GitLab-Runner вы может получить по ссылкеустановка настройка
Для запуска скрипта вам потребуется связать проект EDT c проектом на gitlab.com, создать там конвейер, связать в вашим рунером.
Тема настройки Gitlab довольно обширная, лучше с ней ознакомится в сети интернет.
а если у меня проект связан с гитхабом?
может обычный Powershell скрипт написать, который будет дергать локальный кэш git, брать оттуда xml и через ring edt export выгружать в 1с?
зачем так сложно все?
где плюшки:?
всё круто — кроме одного
PLATFORM_1C: ‘C:/Program Files (x86)1cv88.3.10.2699in1cv8.exe’ # Используемая платформа для получения .CF файла.
может все таки через oscript.io ?
vrunner help unload
vanessa-runner v1.3.0
unload — Выгружает файл конфигурации из ИБ
Параметры:
<cfpath> — Путь к результату — выгружаемому файлу конфигурации (*.cf)
—ibconnection — Строка подключения к БД (/FfilePath или /SserverPath)
Например, для файловых баз —ibconnection /FC:ase1 или —ibconnection /F./base1 или —ibconnection /Fbase1
Или для серверных баз —ibconnection /Sservernameasename
—db-user — Пользователь БД
—db-pwd — Пароль БД
—v8version — Версия платформы
Показать
Установить на машине:
*http://oscript.io/
* поставить пакет opm install vanessa-runner
* и дальше уже работать 😉
(10) Почитайте внимательно заголовок статьи, в нем описаны инструменты используемые для сборки .cf
Увы, github и powershell туда не входят.
Не спорю, что для кого то локальный скрипт на powershell будет проще. Буду рад увидеть в каталоге инфостата и такое решение. Уверен, что оно также будет полезно.
PS. Я не заставляю искать вас плюшки два вашего стека инструментов.
(14) Я думал о переменной platform_1c но решил оставить ее именно в таком виде для статьи. Тогда мне хотелось услышать дискуссию о правильности применения именно такого параметра 😀
Против onescript не имею ничего плохого, но я описал именно связку типового функционала edt и типового функционала gitlab. Сборка .cf происходит на удаленной машине, туда нужно как то доставить файлы конфигурации.
Да и Ванесса как я помню не умеет работать с типом хранения файлов конфигурации edt. Возможно ошибаюсь? 😉
В общем недоработка получается самого EDT, все плюшки работы с внешними обработками, а именно: быстрая правка кода и ее последующий запуск,
сходят на минус. Пока отправится обработка в облако, пока придет оттуда скомпилированная, а потом еще нужно конфигуратор 1с-кий запустить, в нем отладку и саму 1ску.
быстрее все сделать в конфигураторе, в ставить в конфигурацию тестовой базы и оттуда слить на гитхаб.
(16)
Кое-что vanessa-runner уже умеет с EDThttps://github.com/silverbulleters/vanessa-runner/blob/develop/src/Классы/КомандаПроверкаПроектаEDT.os
Годно. Но я все через vanessa-runner сделал. Удобнее. Плюс тестовую базу чтобы обновлять, надо сессии убивать.
(11) это и есть обычные скрипты которые все это делают. Только запускаются они не руками, а по событиям.
(21) Хороший комментарий спустя год
и так все шаги, с чем это связано? куда копать?
Андрей, здравствуйте! Подскажите, пожалуйста при регистрации GitLab-runner что указывали в «Enter the Runner executor:»
Я указал docker, но по всей видимости это не то что нужно, т.к.
Бегунок вроде как зарегистрировался в гитлабе, но исполнять команды он не хочет, с гитлаба приходят уведомления с ошибкой:
ERROR: Preparation failed: error during connect: Get http://%2F%2F.%2Fpipe%2Fdocker_engine/v1.25/info: open //./pipe/docker_engine: The system cannot find the file specified. In the default daemon configuration on Windows, the docker client must be run elevated to connect. This error may also indicate that the docker daemon is not running. (executor_docker.go:980:0s)
(24) указывайте просто shell. Не указывайте что исполнять будет cmd. Это уже устаревший метод выполнения сценариев. Используйте powershell. Он намного веселее и на нем проще писать команды для выполнения запуска 1с
(25) Андрей, спасибо огромное, поставил в executor = «shell», а shell = «cmd» убрал совсем. процесс пошёл.