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

Публикация № 838136

Разработка - Инструментарий разработчика - EDT

EDT gitlab

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

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

Скачать файлы

Наименование Файл Версия Размер
.gitlab-ci

.yml 1,13Kb
3
.yml 1,13Kb 3 Скачать

Специальные предложения

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Vanch90 30.05.18 07:29 Сейчас в теме
зачем?
d4rkmesa; MSK_Step; gradi; o4karek; Lyolik; +5 1 Ответить
2. unmensch 22 30.05.18 09:11 Сейчас в теме
(1) Чтобы руками не делать. Очевидно же..
strizhhh; t.v.s.; +2 Ответить
4. Merc 31.05.18 07:05 Сейчас в теме
5. fenixnow 181 31.05.18 09:37 Сейчас в теме
(4) Спасибо, приятно слышать.
6. Ivan_0110 13.07.18 10:02 Сейчас в теме
Да, 1С делает маленькие шажки в сторону нормального программирования. Спасибо за статью!
7. charivnick 44 13.07.18 12:44 Сейчас в теме
а как запускать этот скрипт?
Можно подробно со скриншотами написать?
8. charivnick 44 13.07.18 12:47 Сейчас в теме
где вы взяли файл config.toml?
Вы о чем? Вы точно не перепутали статью по 1C Enterprise Development Tools?
9. fenixnow 181 13.07.18 15:55 Сейчас в теме
(8) Инструкции по настройке GitLab-Runner вы может получить по ссылке установка настройка

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

Тема настройки Gitlab довольно обширная, лучше с ней ознакомится в сети интернет.
10. charivnick 44 13.07.18 16:47 Сейчас в теме
а если у меня проект связан с гитхабом?
15. fenixnow 181 13.07.18 21:42 Сейчас в теме
(10) Почитайте внимательно заголовок статьи, в нем описаны инструменты используемые для сборки .cf
Увы, github и powershell туда не входят.
Не спорю, что для кого то локальный скрипт на powershell будет проще. Буду рад увидеть в каталоге инфостата и такое решение. Уверен, что оно также будет полезно.

PS. Я не заставляю искать вас плюшки два вашего стека инструментов.
11. charivnick 44 13.07.18 16:48 Сейчас в теме
может обычный Powershell скрипт написать, который будет дергать локальный кэш git, брать оттуда xml и через ring edt export выгружать в 1с?
21. a.ivanov 07.09.19 10:19 Сейчас в теме
(11) это и есть обычные скрипты которые все это делают. Только запускаются они не руками, а по событиям.
22. fenixnow 181 07.09.19 10:21 Сейчас в теме
(21) Хороший комментарий спустя год
12. charivnick 44 13.07.18 16:49 Сейчас в теме
13. charivnick 44 13.07.18 16:49 Сейчас в теме
14. lustin 13.07.18 20:51 Сейчас в теме
всё круто - кроме одного


PLATFORM_1C: 'C:/Program Files (x86)\1cv8\8.3.10.2699\bin\1cv8.exe' # Используемая платформа для получения .CF файла.


может все таки через oscript.io ?


vrunner help unload
vanessa-runner v1.3.0
unload - Выгружает файл конфигурации из ИБ

Параметры:
<cfpath> - Путь к результату - выгружаемому файлу конфигурации (*.cf)
--ibconnection - Строка подключения к БД (/FfilePath или /SserverPath)
Например, для файловых баз --ibconnection /FC:\base1 или --ibconnection /F./base1 или --ibconnection /Fbase1
Или для серверных баз --ibconnection /Sservername\basename
--db-user - Пользователь БД
--db-pwd - Пароль БД
--v8version - Версия платформы
Показать


Установить на машине:

* http://oscript.io/
* поставить пакет opm install vanessa-runner
* и дальше уже работать ;-)
dock; vlad.frost; artbear; +3 1 Ответить
16. fenixnow 181 13.07.18 21:54 Сейчас в теме
(14) Я думал о переменной platform_1c но решил оставить ее именно в таком виде для статьи. Тогда мне хотелось услышать дискуссию о правильности применения именно такого параметра 😀

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

Да и Ванесса как я помню не умеет работать с типом хранения файлов конфигурации edt. Возможно ошибаюсь? 😉
19. vlad.frost 187 16.10.18 12:41 Сейчас в теме
(16)
Да и Ванесса как я помню не умеет работать с типом хранения файлов конфигурации edt. Возможно ошибаюсь?


Кое-что vanessa-runner уже умеет с EDT https://github.com/silverbulleters/vanessa-runner/blob/develop/src/Классы/КомандаПроверкаПроектаEDT.os
17. charivnick 44 20.07.18 16:30 Сейчас в теме
В общем недоработка получается самого EDT, все плюшки работы с внешними обработками, а именно: быстрая правка кода и ее последующий запуск,
сходят на минус. Пока отправится обработка в облако, пока придет оттуда скомпилированная, а потом еще нужно конфигуратор 1с-кий запустить, в нем отладку и саму 1ску.
18. charivnick 44 20.07.18 16:32 Сейчас в теме
быстрее все сделать в конфигураторе, в ставить в конфигурацию тестовой базы и оттуда слить на гитхаб.
20. a.ivanov 07.09.19 10:17 Сейчас в теме
Годно. Но я все через vanessa-runner сделал. Удобнее. Плюс тестовую базу чтобы обновлять, надо сессии убивать.
23. seregasame 26.09.19 09:11 Сейчас в теме
ERROR: Job failed: execution took longer than 1h0m0s seconds
и так все шаги, с чем это связано? куда копать?
24. check2 136 05.12.19 17:32 Сейчас в теме
Андрей, здравствуйте! Подскажите, пожалуйста при регистрации 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)
25. fenixnow 181 05.12.19 17:41 Сейчас в теме
(24) указывайте просто shell. Не указывайте что исполнять будет cmd. Это уже устаревший метод выполнения сценариев. Используйте powershell. Он намного веселее и на нем проще писать команды для выполнения запуска 1с
26. check2 136 05.12.19 18:05 Сейчас в теме
(25) Андрей, спасибо огромное, поставил в executor = "shell", а shell = "cmd" убрал совсем. процесс пошёл.
27. vsbronnikov 79 27.12.19 12:47 Сейчас в теме
Небольшой комментарий:

Из документации GitLab (https://docs.gitlab.com/ee/ci/yaml/#stages) задачи одной стадии выполняются параллельно.
В вашем случае, если раннеров будет больше одного, на стадии Build каждая из задач (ConvertEDT_XML, CreateBase, LoadConfig, DumpConfig) будет запущена на произвольных раннерах параллельно. И задачи не смогут воспользоваться результатами работы предыдущих задач.

Получается эта конфигурация будет работать только на одном раннере.
Оставьте свое сообщение