Автоматизируем процедуру обновления xddTestRunner с помощью Jenkins

06.11.14

Разработка - DevOps и автоматизация разработки

Вот уже на протяжении нескольких недель наша команда пытается внедрить CI в процесс разработки программного обеспечения. Все пишут тесты, матерятся, снова пишут, ну одним словом все идет своим чередом, как у всех.

Для тестирования мы используем замечательный open source инструмент xUnitFor1C. Он позволяет запускать тесты не только интерактивно, но и в пакетном режиме, заблаговременно сохраняя результаты в xml–файл, который понимает плагин JUnit для Jenkins. Все бы ничего, но разработка в проекте идет настолько активно, что редко успеваешь вовремя обновляться, то ли из-за большой лени, то ли из-за большого потока текучки. Вот я и решил немного автоматизировать процесс обновления обработки xddTestRunner.epf. Ну а чего, Jenkins умный, пускай сам о себе позаботится.

Для успешного выполнения задания нам понадобятся следующие инструменты: непосредственно сам Jenkins (предварительно сконфигурированный для работы с git), и установленный Python версии 3.4 и выше. Наш план таков:

Jenkins получает новые файлы из репозитория. После их получения специальный скрипт на Python сравнивает уже существующий файл и новый. Если есть различия – свежая версия xddTestRunner подменяет старую, а пользователям в slack-чат отправляется уведомление об обновлении файла из ссылкой на новую версию.

Давайте посмотрим на настройки Jenkins. Здесь ничего особенного. В разделе Source Code Managment установлена ссылка на репозиторий и ветка, которую будем загружать.

Настройки удаленного репозитория

Следующий раздел, который нам необходимо заполнить – Build. В нем мы должны заполнить секцию "Execute Windows batch command", которая позволяет запускать наш скрипт сравнения файлов.

Раздел Build

Настройка Jenkins окончена. Давайте рассмотрим наш скрипт, который будет сравнивать, подменять файлы и отправлять сообщения в Slack.

Первая важная функция – отправка оповещения в чат. Взял я ее отсюда. Приведем листинг кода.


def get_connection(organization):
    return http.client.HTTPSConnection('{0}.slack.com'.format(organization))

def get_url(token):
  return '/services/hooks/incoming-webhook?token={0}'.format(token)

def post_message(connection, url, urltofile):

    headers = {'Content-Type': 'application/json'}
    color = 'good'
    text = 'Внимание вышла новая версия обработки xddTestRunner <' + urltofile + '|Скачать>.'

    message = {
        'username': 'TestRunnerChecker',
        "channel": "#1c",
        "icon_emoji": ":ghost:",
        'fallback': text,
        'pretext': text,
        'color': color
    }

    connection.request('POST', url, json.dumps(message), headers)
    response = connection.getresponse()
    print(response.read().decode())

Процедура сравнения файлов и копирования файлов – совсем простая задача.

if not filecmp.cmp(namespace.repofile, namespace.destfile):
        shutil.copy(namespace.repofile, os.path.dirname(namespace.destfile))
        send_message(URL)

В результате мы получаем вот такое симпатичное сообщение(файл автоматически закачивается в нужный каталог на build-сервере).

Сообщение в Slack-чат

Вот как-то так. Буду рад конструктивной критике. Оригинал статьи.

Unit тестирование Jenkins xDDTestRunner

См. также

Автотесты для типовых конфигураций ERP Управление предприятием 2 и Комплексная автоматизация 2 (для vanessa automation)

Тестирование QA DevOps и автоматизация разработки Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Комплексная автоматизация 2.х Россия Бухгалтерский учет Налоговый учет Платные (руб)

Готовые тестовые сценарии, предназначенные для регресс-тестирования функционала конфигурации после обновления типовым релизом. Сценарии проверяют интерактивное заполнение форм документов, справочников и результат проведения документов. Сценарии возможно использовать как для vanessa-automation, так и для СППР. Поддерживаемые версии конфигураций ERP2 и КА2: 2.5.15.111.

2220 руб.

04.07.2022    6724    26    0    

22

Системы контроля версий для 1С-разработчиков.

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

Основы командной разработки на 1С. Использование систем контроля версий при разработке на платформе 1С:Предприятие 8

4900 руб.

29.06.2022    9144    78    4    

110

Автотесты для типовых конфигураций Бухгалтерия предприятия КОРП 3.0 и Бухгалтерия предприятия 3.0 (vanessa automation)

Тестирование QA DevOps и автоматизация разработки Платформа 1С v8.3 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Налоговый учет Платные (руб)

Готовые тестовые сценарии, предназначенные для регресс-тестирования функционала конфигурации после обновления типовым релизом. Сценарии проверяют интерактивное заполнение форм документов, справочников и результат проведения документов. Сценарий – feature-файл, разработанный с помощью vanessa-automation. Запуск сценария выполняется интерактивно с помощью vanessa-automation или с помощью vanessa-runner в CI-системах. Доступно тестирование тонкого клиента. Поддерживаемые версии конфигураций 1С:Бухгалтерия предприятие 3.0 и версии КОРП: 3.0.144.49.

1728 руб.

20.01.2022    6590    10    0    

9

Автоматическое подтверждение легальности обновления базы или как обновить 100 типовых баз 1С за 5 часов

DevOps и автоматизация разработки Обновление 1С Платформа 1С v8.3 Конфигурации 1cv8 1С:Бухгалтерия 3.0 1С:Зарплата и Управление Персоналом 3.x Абонемент ($m)

Расширение для конфигураций 1С для автоматического подтверждения легальности обновления и выполнения обработчиков обновления при пакетном автоматическом обновлении большого числа баз 1С. А также сам модуль обработки по автоматическому обновлению баз.

2 стартмани

08.05.2019    24214    54    VPanin56    26    

26

1С, СППР и Архитектура как код

DevOps и автоматизация разработки Бесплатно (free)

Можно ли идеи подхода «Архитектура как код» положить на 1С или иную платформу, чтобы не изобретать ещё какой-то язык и сразу получить множество готовых библиотек функций и инструмент достижения главной цели подхода AaC.

01.02.2024    2463    roman72    9    

7

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

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

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

17.01.2024    2773    kamisov    17    

57

Infrastructure as code: кнопка «Сделать всё», или Упаковываем наше окружение в 5 кБ текста

DevOps и автоматизация разработки Бесплатно (free)

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

01.11.2023    1325    Libelle    5    

13

Обработка для подготовки файла настройки дымовых тестов измененных объектов конфигурации

DevOps и автоматизация разработки Тестирование QA Россия Абонемент ($m)

В статье приведен пример обработки, которая на основании измененных файлов git-репозитория готовит специальный файл настройки xUnitParams.json для последующего выполнения дымовых тестов (xUnitFor1C/add) только для измененных объектов конфигурации

1 стартмани

09.10.2023    707    4    ICL-Soft    0    

3
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Armando 1399 06.11.14 22:29 Сейчас в теме
Ветка master редко обновляется, не знаю что вы там не успеваете))) Но за пример спасибо.
2. akomar 454 06.11.14 22:37 Сейчас в теме
Ну я использую develop, она обновляется довольно часто)
3. artbear 1448 07.11.14 01:01 Сейчас в теме
Лень и Автоматизация наше все. Молодец!
amon_ra; dyr89; awa; Evil Beaver; +4 Ответить
4. akomar 454 07.11.14 01:23 Сейчас в теме
5. Makushimo 160 07.11.14 07:13 Сейчас в теме
Нифига не понятно, о чем тут кулуарят. -)))))
но плюс поставлю.

на всякий случай.
6. pumbaE 07.11.14 10:02 Сейчас в теме
(5) Makushimo, говорим про автоматизацию. Сами 1с-ники вроде как всех автоматизируют, а про себя забывают. Более интересный вариант с чем в жизни встречаешься вот такая http://infostart.ru/public/311163/ автоматизация. Даже если откинуть использование git , а просто пройтись по всем файлам в папке и обновить по версиям обработка - это уже шаг в перед.
7. ZhokhovM 724 07.11.14 17:09 Сейчас в теме
Еще моя такая http://infostart.ru/public/290025/, может кому понадобится.
8. Evil Beaver 8107 07.11.14 19:09 Сейчас в теме
И не забывайте, что можно не только пользоваться, но и контрибьютить (то бишь, вносить вклад) в xUnitFor1C
9. pbazeliuk 1955 07.11.14 22:38 Сейчас в теме
(8) Evil Beaver, ну как бы мы с Андреем внесли весомый вклад в разработку xUnitFor1C, полностью переделали загрузку тестов для УФ, добавили поддержку интерфейса "Такси". Когда будем посвободней сделаем что-то еще :)
13. Evil Beaver 8107 12.11.14 22:55 Сейчас в теме
(9) pbazeliuk, я не про вас, вы-то как раз супер ;). Это скорее к остальным участникам беседы призыв.
10. Armando 1399 07.11.14 22:55 Сейчас в теме
Есть и такие, кто вклад внес, а пользоваться так и не начал))
Как в анекдоте про чукчу, который таксиста обманул - деньги заплатил, а сам не поехал)
11. artbear 1448 07.11.14 23:51 Сейчас в теме
(10) Поправь на "а пользоваться так и НЕ начал", иначе звучит странно :)
Генератор тестовых данных доработал, а сам тесты не юзаешь :(
12. Armando 1399 08.11.14 00:00 Сейчас в теме
(11) artbear, спасибо исправил. Как обычно пишу и отправляю не глядя)
Тесты пришлось отложить. Дела разгребем и вернусь к ним.
Оставьте свое сообщение