Сборка, тестирование, доставка приложения на onescript с помощью gitlab-ci

14.05.18

Разработка - OneScript

Сборка, тестирование, доставка приложения на onescript с помощью gitlab-ci на примере портирования на onescript функции daСклонение.

Будем использовать:

onescript

gitlab-ci

docker (как вариант раннера в gitlab-ci)

Функция daСклонение не раз была использована для печатных форм, в которых необходимо склонять ФИО, должности, ect…Основная причина использования именно этого метода была в том, что ВПФ должны были выполняться в безопасном режиме, а в нем ни NameDecl, ни morpher ни могут быть использованы.

При портировании пришлось заменить методы Вычислить и ЧислоПрописью, метод ЧислоПрописью «временно» взят из этой публикации. Реализованы тесты из примеров описания функции.

Итак, к делу. Исходники будем держать на github (куда без него), а ci будет на gitlab. По сути на gitlab будет зеркало нашего репозитория из github. Для связи репозиторие создадим новый проект на gitlab, и выберим вариант CI/CD for external repo. Инструкция по интеграции с github

CI/CD for external repo

После интеграции сервисов нажмем кнопку Connect repositories from GitHub, и выбираем наш репозиторий из github.

Для запуска CI/CD в gitlab необходимо наличие файла .gitlab-ci.yml в корне репозитория. Для начала создадим файл следующего содержания

image: "evilbeaver/onescript:latest" # для всех этапов укажем что будем использовать образ контейнера с последней версией oscript

stages: # здесь указываются этапы нашего конвеера
  - test
  
test: # задача - имя задачи, тут можно указать даже на кириллице, например: 'Тесты'
  stage: test # к какому типу этапов относится задача
  script: # что будем выполнять в задаче
  - opm install 1testrunner # установим библиотеку для тестирования
  - 1testrunner -runall ./tests # запустим тесты

После коммита, в gitlab можно понаблюдать за запуском теста по ссылке https://gitlab.com/myprofile/myproject/-/jobs/

job_test

Для себя решаем, что подобная задача подойдет только для dev ветки и features веток. Конвейер для релизной ветки должен содержать задачи для сборки пакета, установки и тестирования, доставки пакета.

Содержание файла .gitlab-ci.yml:

image: "evilbeaver/onescript:latest"

# добавляем еще два типа этапов
stages:
  - build
  - test
  - deploy
  
test:
  stage: test
  script: 
  - opm install 1testrunner
  - 1testrunner -runall ./tests
  except: # исключаем эту задачу из мастер ветки или тегов
    - master
    - tags
 
build:
  stage: build
  script:
  # в файле packagedef устанавливаем имя тега как версию пакета
  - grep '%ver' -P -R -I -l packagedef | xargs sed -i 's/%ver/'$CI_COMMIT_REF_NAME'/g' 
  - mkdir ./build
  - opm build . -out ./build # собираем пакет
  artifacts:
    paths:
    - build/*.ospx # говорим что из задачи надо забрать все файлы с расширением .ospx из папки  build
    expire_in: 1 day # храним артефактов этой задачи 1 день 
  only: # говорим что задача только для тегов
    - tags

test-master:
  stage: test
  script:
  # изменяем Использовать ".." на Использовать далее устанавливаемый пакет daSklonenie в файле с тестами
  - grep '#Использовать ".."' -P -R -I -l ./tests/Тесты_daСклонение.os | xargs sed -i 's/#Использовать ".."/#Использовать daSklonenie/g' 
  # ставим наш пакет, в эту задачу он был передан как артефакт
  - opm install -f ./build/daSklonenie-$CI_COMMIT_REF_NAME.ospx 
  # далее все как и в первом тесте
  - opm install 1testrunner
  - 1testrunner -runall ./tests
  only: # говорим что задача только для тегов
    - tags 

daSklonenie:
  stage: deploy
  variables:
    GIT_STRATEGY: none # скажем что не надо получать данные из репозитория, работать будем только с артефактов
  script:
  # переместим файл в основной каталог - для красоты
  - mv ./build/daSklonenie-$CI_COMMIT_REF_NAME.ospx ./daSklonenie-$CI_COMMIT_REF_NAME.ospx
  artifacts:
    name: "daSklonenie-$CI_COMMIT_REF_NAME" # укажем имя архива артефактов
    paths:
    - daSklonenie-$CI_COMMIT_REF_NAME.ospx # укажем какой файл будем забирать как артефактов задачи
  only:
    - tags  

Сделаем коммит с тегом версии и проследим за нашим конвеером.

pepiline

Cборка

build

Установка и тестирования

test-master

Доставка пакета

deploy

В данном случае описан простой пример доставки, но можно добавить сообщение в месседжеры, отправка пакета по почте, на ftp или обновление файла в публикации на infostart по api

После выполнения всего конвеера можно скачать результат из интерфейса gitlab, сделать это можно из коммита, конвеере, задачи доставки, тега, ветки, во всех местах где имеется значок облака.

artifacts

Как быстро попробовать

  1. форкаем репозиторий на github
  2. настраиваем интеграцию gitlab и github
  3. создаем проект на gitlab c вариантом CI/CD for external repo
  4. указываем, какой проект из github будем подключать
  5. делаем изменения в проекте, коммит
  6. устанавливаем тег
  7. ждем завершения конвейера, смотрим артифакты

сборка тестирование доставка приложения на onescript с помощью gitlab-ci

См. также

OneScript Программист 1С v8.3 Бесплатно (free)

В 2024 году главному инструменту DevOps в 1С исполнилось 10 лет. Расскажем о том, что представляет собой экосистема 1Script в 2024 году и почему её важно включить в свой рабочий процесс.

16.06.2025    4857    Evil Beaver    35    

55

Групповая разработка (Git, хранилище) EDT OneScript Программист 1С v8.3 Бесплатно (free)

В данной публикации рассматривается пример реализации скрипта, который автоматизирует получение ветки из GIT репозитория и обновление конфигурации, если разработка проекта ведется в EDT.

11.06.2025    1244    AlexF1    3    

6

WEB-интеграция OneScript Программист Стажер Бесплатно (free)

Библиотека для работы с базами MySQL на основе внешней компоненты. Для Linux и Windows, бесплатно и с открытым исходным кодом!

08.04.2025    3750    bayselonarrend    27    

49

Внешние источники данных OneScript Программист Стажер 1С v8.3 Бесплатно (free)

Библиотека для работы с базами PostgreSQL на основе внешней компоненты. Для Linux и Windows, бесплатно и с открытым исходным кодом!

20.02.2025    4998    bayselonarrend    25    

46

Работа с интерфейсом OneScript Программист 1С v8.3 Россия Бесплатно (free)

Графический интерфейс с применением веб-технологий в коллекцию инструментария сценарного языка OneScript. Библиотека создает десктопное приложение имеющее декларативный пользовательский интерфейс (GUI), построенный веб-браузером. Возможности веб-технологий по представлению информации огромны. Эти возможности соответственно добавляются и к сценариям OneScript.

23.01.2025    1108    0    ahyahy    15    

10

OneScript Программист Бесплатно (free)

Вместе создадим библиотеку на Oscript с нуля, шаг за шагом: от базовой структуры проекта до перевода на ОСень. Разберем структуру проекта, работу с файлом конфигурации, логирование, уведомления, консольный интерфейс и многое другое. Освоим весь цикл разработки и сделаем первый шаг к созданию собственных инструментов на Oscript!

13.01.2025    3879    leobrn    16    

59

OneScript Программист 1С v8.3 Бесплатно (free)

Если вы, так же как и я, давно хотели попробовать сделать что-то свое на OneScript, но никак не могли к нему подступиться, то, возможно, эта статья пригодится вам в качестве некоего вводного материала.

10.01.2025    3527    KamranV21    13    

40

OneScript Программист Бесплатно (free)

В мире OneScript давно существуют библиотеки для облегчения работы с каким-либо классом программного обеспечения, например v8runner - помощник выполнения команд конфигуратора или gitrunner - программная обертка для запуска команд git. Есть библиотека и для работы с автономным сервером 1с. Однако библиотеке ibcmdrunner уже три года, а про нее нет ни одной публикации на инфостарте. Исправляю эту несправедливость.

09.01.2025    2545    ardn    3    

24
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. пользователь 15.05.18 05:48
Сообщение было скрыто модератором.
...
2. kirillkr 30 15.05.18 10:19 Сейчас в теме
Вот такую бы статью по созданию и тестированию например внешней печатной формы для БСП, было бы круто.
kraynev-navi; +1 Ответить
3. pallid 275 15.05.18 10:43 Сейчас в теме
(2) да, но там не про docker будет, а как в статье https://infostart.ru/public/826495/ надо будет сначала настроить раннеры на тестовом контуре.
есть в плане описание vanessa-behavior + vanessa-runner + gitlab-ci
kirillkr; +1 Ответить
5. kraynev-navi 687 14.08.20 11:50 Сейчас в теме
(3) Статьи не появилось, часом? ))
6. pallid 275 14.08.20 12:34 Сейчас в теме
(5) нет, к сожалению не смог заняться этим вопросом.
4. daMaster 256 03.10.18 14:37 Сейчас в теме
Мда, использовать в коде "Вычислить" было не лучшей идеей, можно было банально в структуру загнать все эти таблицы правил)
7. утюгчеловек 42 23.09.20 10:50 Сейчас в теме
Склонение выглядит скромно, чессгря. Есть ли более серьезные кейсы где onescript работает успешно (в сравнении с другими аналогичными средствами)?
Какие еще приложения onescript вы поставляете через CI/CD в бою?
8. pallid 275 23.09.20 10:58 Сейчас в теме
(7) ну так цель была показать подход к ci/cd для onescript, для этого был взят простой кейс

Есть ли более серьезные кейсы где onescript работает успешно (в сравнении с другими аналогичными средствами)


с какими другими средствами? не понял вопрос...

Какие еще приложения onescript вы поставляете через CI/CD в бою?


уже никакие, стек поменялся для подобных задач, но я не имею введут что не стоит использовать onescript.
Оставьте свое сообщение