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

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

Разработка - Языки и среды - OneScript

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

Сборка, тестирование, доставка приложения на 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. ждем завершения конвейера, смотрим артифакты

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

Комментарии
Избранное Подписка Сортировка: Древо развёрнутое
Свернуть все
2. kirillkr 28 15.05.18 10:19 Сейчас в теме
Вот такую бы статью по созданию и тестированию например внешней печатной формы для БСП, было бы круто.
3. pallid 228 15.05.18 10:43 Сейчас в теме
(2) да, но там не про docker будет, а как в статье https://infostart.ru/public/826495/ надо будет сначала настроить раннеры на тестовом контуре.
есть в плане описание vanessa-behavior + vanessa-runner + gitlab-ci
kirillkr; +1 Ответить
4. daMaster 222 03.10.18 14:37 Сейчас в теме
Мда, использовать в коде "Вычислить" было не лучшей идеей, можно было банально в структуру загнать все эти таблицы правил)
Оставьте свое сообщение

См. также

Автоматическое сравнение-объединение баз данных с мини-конфигурацией

OneScript v8 Бесплатно (free)

Представляю вашему вниманию скрипт на OneScript для автоматического сравнения-объединения по правилам ("мержевания") конфигураций нескольких баз с мини-конфигурацией.

14.10.2019    2630    0    artkor    2    

АИТП. Управляем информационными базами

Администрирование данных 1С v8 Абонемент ($m)

В статье, на демонстрационном примере, рассматривается использование конфигурации АИТП для автоматизации управления информационными базами 1С:Предприятие.

1 стартмани

29.05.2019    4310    3    blackhole321    0    

АИТП. Подсистема взаимодействия с рабочими серверами OneScript

OneScript v8 Бесплатно (free)

В статье описан механизм взаимодействия конфигурации АИТП с рабочими серверами OneScript.

22.05.2019    4898    0    blackhole321    33    

1Script.Web. Интернет-приложения на языке 1С

WEB OneScript Инструментарий разработчика v8 Бесплатно (free)

Запросы рынка таковы, что любое современное клиент-серверное приложение должно иметь веб-интерфейс. Почему бы не писать такие приложения на языке 1С? Андрей Овсянкин расскажет о возможностях разработки веб-приложений на базе 1Script, рассмотрит перспективы этого направления и в качестве демонстрации покажет «боевое» веб-приложение на новом движке – кроссплатформенную консоль администрирования парка кластеров 1С.

20.05.2019    18500    0    Evil Beaver    33    

Разворачиваем рабочий сервер OneScript для конфигурации АИТП

OneScript v8 Бесплатно (free)

В статье описана методика развертывания рабочего сервера OneScript для конфигурации АИТП, на ОС CentOS 7.

09.05.2019    5752    0    blackhole321    0    

Добавляем онлайн-чат в web-приложение OneScript

OneScript v8 Бесплатно (free)

В статье рассмотрено подключение онлайн-чата к web-приложению на основе http-сервисов OneScript

24.06.2018    7159    0    blackhole321    1    

Сказ про то, как я DevOps-ом занимался (OneScript, Deployka, Jenkins)

OneScript DevOps Jenkins v8 1cv8.cf ИТ-компания Бесплатно (free)

Решаем задачу: автоматизировать обновление тестовых баз 1С из хранилища конфигурации при появлении в нём новых изменений. Данная статья родилась в муках хождения по граблям и поиска безопасного форватора среди подводных камней. Изложение постарался представить в виде инструкции для новичка, в которой собрал всё, с чем пришлось столкнуться. Сам я не DevOps-ер, ни на что не претендую, просто делюсь опытом :)

17.06.2018    20481    0    stas_ganiev    34    

Макеты в http-сервисах OneScript

OneScript v8 Бесплатно (free)

В статье описана библиотека, реализующая механизм макетов в http-сервисах OneScript, аналогично платформе 1С:Предприятие.

03.06.2018    7972    0    blackhole321    1    

Перечисления в http-сервисах OneScript

OneScript v8 Бесплатно (free)

В статье описывается библиотека, реализующая механизм перечислений в http-сервиах OneScript, аналогичный механизму платформы 1С:Предприятие

03.06.2018    7615    0    blackhole321    13    

TMSSQL - работа с базами данных MS SQL Server в скриптах на OneScript и из командной строки

OneScript v8 Бесплатно (free)

Представляю вашему вниманию библиотеку TMSQL для работы с базами данных на MS SQL Server. Библиотека подключается в качестве модуля или класса в скрипты, написанные на OneScript, а также может работать как независимое консольное приложение.

26.04.2018    14098    0    Tavalik    22    

Создаем свою библиотеку для OneScript

OneScript v8 Бесплатно (free)

Как упаковать свою библиотеку в пакет? Что такое загрузчик и зачем он нужен? Как вообще создать свою библиотеку? Разбираемся на примере.

06.03.2018    20775    0    nixel    36    

Обзор имеющихся библиотек OneScript

OneScript v8 Бесплатно (free)

Экосистема OneScript активно развивается. Количество пользователей данного интерпретатора и имеющихся библиотек неуклонно растет, количество решаемых проблем - тоже. Однако остро встает вопрос некоторой разобщенности и размазанности информации по имеющимся библиотекам, их функциональности и проблемам, которые они решают. Данная статья призвана навести порядок в этой теме.

14.11.2017    40886    0    nixel    86    

Вебинтерфейс для OneScript и 1С

OneScript v8 Россия Бесплатно (free)

Пример создания вебинтерфейса для OneScript с использованием библиотеки UfaScript.osb

30.06.2017    13331    0    andreosh    7    

OneScript и Ajax. POST-запрос и мои дальнейшие планы с фантазиями о будущем

OneScript v8 Россия Бесплатно (free)

Моя библиотека для OneScript (версия 3.0 от 09.06.2017 см.GitHab UfaScript) https://github.com/andreosh/UfaScript теперь позволяет посылать POST-запросы на сервер без использования сторонних библиотек типа jquery.

09.06.2017    17554    0    andreosh    3