Сборка, тестирование, доставка приложения на 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

См. также

Особенности национального Workflow: Github Actions и OneScript

Групповая разработка (Git, хранилище) OneScript Бесплатно (free)

Сегодня мы посмотрим на Github Actions - встроенный инструментарий Github для автоматизации рабочих процессов. Разберем, что это такое, зачем и причем тут OneScript.

25.03.2024    1540    bayselonarrend    3    

38

TCP прокси-сервер хранилища конфигурации 1С

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

Продолжение истории с прокси хранилища, но уже не на HTTP, а на TCP и без падений по памяти веб-сервера. Проверяем комментарии хранилища, вызываем веб-хуки, старты пайплайнов, gitsync по событию помещения версии в хранилище. И все это полностью на знакомом и понятном OneScript.

17.01.2024    2980    kamisov    17    

59

Что такое ОСень? Или как лучшие практики из мира Java прижились в экосистеме OneScript

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

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

21.11.2023    3232    NikitaIvanchenko    16    

46

Библиотека создания клиент-серверных приложений для сценарного языка OneScript

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

Представленная библиотека позволяет создать многопоточный TCP сервер, к которому может одновременно подключиться множество TCP клиентов с удаленных компьютеров. Эти клиенты могут вызывать методы скриптов как на сервере, так и на других клиентах. Методы будут выполнены в контексте скрипта на удаленной машине. Возможна передача параметров в метод и получение результата. Для TCP клиента можно создать графический интерфейс с большим набором элементов управления, модальными диалоговыми окнами и с обработкой событий.

31.07.2023    2065    ahyahy    8    

32

Получаем статистику по git-репозиторию в разрезе разработчиков

DevOps и автоматизация разработки Групповая разработка (Git, хранилище) OneScript Бесплатно (free)

Итак! Представим, что наступил момент, когда разработка через исходный код реализована на предприятии в полном объеме. Мы разрабатываем в EDT или конфигураторе (но выгружаем конфигурацию в исходный код), версионируем внешние отчеты и обработки и расширения, собираем релизы, проверяем код статическим анализом, в разработке царит гармония и мир. Красота! Но менеджерам этого мало, всегда хочется чего-то еще, и вот мне прилетает задача - дай статистику по вкладу в код каждого разработчика.

13.03.2023    3786    ardn    3    

27

Прокси хранилища 1С (IIS, OneScript)

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

Избавляемся от версионной зависимости, проверяем комментарии, вызываем веб-хуки, делаем красивые пути. И все это на привычном IIS и понятном OneScript.

08.12.2022    8142    kamisov    57    

95

OneScript на страже порядка на сервере тестовых баз данных

Администрирование СУБД OneScript Бесплатно (free)

Наводим порядок на сервере тестовых баз с помощью любимого инструмента - OneScript. Находим заброшенные базы на сервере MS SQL, определяем кандидатов на удаление.

14.06.2022    4301    ardn    23    

39

Идем в Serverless с кодом 1С

Облачные сервисы, хостинг OneScript Россия Абонемент ($m)

Запускаем код OneScript в Serverless Container Яндекса.

1 стартмани

29.04.2022    3735    1    papami    2    

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

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


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

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


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