Сборка приложения, разработанного на EDT, с помощью gitlab-ci

В статье описан пример сборки .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 файла с конфигурацией

К статье приложен файл настройки без комментариев.

25 Comments

  1. Vanch90

    зачем?

    Reply
  2. unmensch

    (1) Чтобы руками не делать. Очевидно же..

    Reply
  3. Merc

    Молодец!

    Reply
  4. fenixnow

    (4) Спасибо, приятно слышать.

    Reply
  5. Ivan_0110

    Да, 1С делает маленькие шажки в сторону нормального программирования. Спасибо за статью!

    Reply
  6. charivnick

    а как запускать этот скрипт?

    Можно подробно со скриншотами написать?

    Reply
  7. charivnick

    где вы взяли файл config.toml?

    Вы о чем? Вы точно не перепутали статью по 1C Enterprise Development Tools?

    Reply
  8. fenixnow

    (8) Инструкции по настройке GitLab-Runner вы может получить по ссылке установка настройка

    Для запуска скрипта вам потребуется связать проект EDT c проектом на gitlab.com, создать там конвейер, связать в вашим рунером.

    Тема настройки Gitlab довольно обширная, лучше с ней ознакомится в сети интернет.

    Reply
  9. charivnick

    а если у меня проект связан с гитхабом?

    Reply
  10. charivnick

    может обычный Powershell скрипт написать, который будет дергать локальный кэш git, брать оттуда xml и через ring edt export выгружать в 1с?

    Reply
  11. charivnick

    зачем так сложно все?

    Reply
  12. charivnick

    где плюшки:?

    Reply
  13. lustin

    всё круто — кроме одного


    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

    * и дальше уже работать 😉

    Reply
  14. fenixnow

    (10) Почитайте внимательно заголовок статьи, в нем описаны инструменты используемые для сборки .cf

    Увы, github и powershell туда не входят.

    Не спорю, что для кого то локальный скрипт на powershell будет проще. Буду рад увидеть в каталоге инфостата и такое решение. Уверен, что оно также будет полезно.

    PS. Я не заставляю искать вас плюшки два вашего стека инструментов.

    Reply
  15. fenixnow

    (14) Я думал о переменной platform_1c но решил оставить ее именно в таком виде для статьи. Тогда мне хотелось услышать дискуссию о правильности применения именно такого параметра 😀

    Против onescript не имею ничего плохого, но я описал именно связку типового функционала edt и типового функционала gitlab. Сборка .cf происходит на удаленной машине, туда нужно как то доставить файлы конфигурации.

    Да и Ванесса как я помню не умеет работать с типом хранения файлов конфигурации edt. Возможно ошибаюсь? 😉

    Reply
  16. charivnick

    В общем недоработка получается самого EDT, все плюшки работы с внешними обработками, а именно: быстрая правка кода и ее последующий запуск,

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

    Reply
  17. charivnick

    быстрее все сделать в конфигураторе, в ставить в конфигурацию тестовой базы и оттуда слить на гитхаб.

    Reply
  18. vlad.frost

    (16)

    Да и Ванесса как я помню не умеет работать с типом хранения файлов конфигурации edt. Возможно ошибаюсь?

    Кое-что vanessa-runner уже умеет с EDT https://github.com/silverbulleters/vanessa-runner/blob/develop/src/Классы/КомандаПроверкаПроектаEDT.os

    Reply
  19. a.ivanov

    Годно. Но я все через vanessa-runner сделал. Удобнее. Плюс тестовую базу чтобы обновлять, надо сессии убивать.

    Reply
  20. a.ivanov

    (11) это и есть обычные скрипты которые все это делают. Только запускаются они не руками, а по событиям.

    Reply
  21. fenixnow

    (21) Хороший комментарий спустя год

    Reply
  22. seregasame
    ERROR: Job failed: execution took longer than 1h0m0s seconds

    и так все шаги, с чем это связано? куда копать?

    Reply
  23. check2

    Андрей, здравствуйте! Подскажите, пожалуйста при регистрации 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)

    Reply
  24. fenixnow

    (24) указывайте просто shell. Не указывайте что исполнять будет cmd. Это уже устаревший метод выполнения сценариев. Используйте powershell. Он намного веселее и на нем проще писать команды для выполнения запуска 1с

    Reply
  25. check2

    (25) Андрей, спасибо огромное, поставил в executor = «shell», а shell = «cmd» убрал совсем. процесс пошёл.

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *