Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

Не удается произвести интеграцию Jenkins с Testrail

jenkins
Теги: #<Tag:0x00007f7b64c2d9e0>

(Дмитрий Нечаев) #1

Всем привет. На проекте нужно было интегрировать Jenkins с Testrail. Суть заключается в том, что после прогонки тестов в Jenkins результаты отображаются в Testrail как будто был запущен TestRun и сохранены результаты. На этом теория заканчивается…)
Для этих целей “есть” плагин testrail-jenkins-plugin. Он есть на Github (https://github.com/syl20bnr/testrail-jenkins-plugin). К сожалению, это единственное место где он есть. Инструкция на вышеупомянутой странице мне не помогла. В самом Jenkins в разделе установки плагинов такого плагина нету. В центральном репозитории плагинов Jenkins (http://updates.jenkins-ci.org/download/plugins/) его тоже нету. Как настроить интеграцию? У кого-то получалось это сделать? Или на данный момент это “істина за межами досяжного”?)


(vmaximv) #2

По плагину:
Клонировал отсюда https://github.com/achikin/testrail-jenkins-plugin . Билдил руками. Добавлял в дженкинс руками. Пилил напильником - насколько я помню криво работает со статусами и что-то еще - уже не помню.

По тестрейлу: Все делается через API+“недо-биндинги” - http://docs.gurock.com/testrail-api2/start

По главному: На кой вообще портировать резалты в TMS- если их гораздо удобнее изучать в дженкинсе.


(Дмитрий Нечаев) #3

Спасибо, vmaximv. Практически все настроил, но… При запуске кода, который должен обращаться к TestRail появляется ошибка TestRail API returned HTTP 404(“Unknown method ‘get_project’”). JSON импортировал. Ошибки не высвечиваются.


(vmaximv) #4

Не совсем понятно что есть “код” и что вы настроили.
ЗЫ: доступ к api у проекта в тестрейле включён?


(Дмитрий Нечаев) #5

Код, который подключается к Testrail, логинится и пытается получить имя проекта с указанным ID. Администратор Testrail включил доступ по API, но не для проекта, а для всего Testrail. А нужно конкретно для проекта открыть поступ API?


(vmaximv) #6

Вроде на весь сайт - точно не помню.
Предлагаю вам тренироваться на кошках на триале - http://www.gurock.com/testrail/
И не стесняться показывать “код” - воспроизвести ваши проблемы по повествовательному тексту довольно затруднительно.


(Дмитрий Нечаев) #7

Порешал. Я вместо
APIClient client = new APIClient(“http:///index.php?/api/v2/”) писал
APIClient client = new APIClient(“http:///index.php?”)


(Дмитрий Нечаев) #8

И снова проблемы) В документации к API как-то не понятно описано использование метода add_results. Мне не понятна фраза “This method expects an array of test results (via the ‘results’ field, please see below).” Мой код:
Map data1 = new HashMap();
data1.put(“test_id”, 247959);
data1.put(“status_id”, 1);
data1.put(“comment”, “First test passed well”);
Map data2 = new HashMap();
data2.put(“test_id”, 247960);
data2.put(“status_id”, 1);
data2.put(“comment”, “Second test passed well”);
List list = new ArrayList();
list.add(data1);
list.add(data2);
List LIST = new ArrayList();
LIST.add(“results”);
LIST.add(list);
JSONObject c3 = (JSONObject) client2.sendPost(“add_results/1449”, LIST);
И в результате: Exception in thread “main” com.gurock.testrail.APIException: TestRail API returned HTTP 400(“Field :results is a required field.”)


(vmaximv) #9

А вы “погуляйте” по исходникам вышеупомянутого плагина - там можно “наковырять” много полезной информации: https://github.com/achikin/testrail-jenkins-plugin/blob/master/src/main/java/testrail/testrail/TestRailClient.java#L239


(Дмитрий Нечаев) #10

Хорошо, а что нужно сделать, чтобы после выполнения тестов в Jenkins запускался TestRun в Testrail и, собственно, проставлялись результаты. То есть, плагин я установил. С API разобрался. Я просто не понимаю механизм по которому это все должно работать. В инете нашел информацию как про плагин так и про TestRail API, а вот как оно все должно взаимодействовать…


(vmaximv) #11

У вас немного все смешалось : )

  1. В тестрейлом можно взаимодействовать только через API
  2. Плагин к дженкинсу использует API для взаимодействия между дже и тестрейлом - если вам достаточно функционала этого плагина, вам не надо “разбираться” с API.
  3. Если вам надо реализовать собственное взаимодействие между тестами и тестрейлом - то п.1

Вкраце плагин работает так: при каждом ране джобы парсит junit-овскую xml, стучится в TR, создает кейсы если их там нет, создает новый ран, ставит статусы,закрывает ран. И есть ненулевая вероятность, что такой флоу вам не подойдет.
Базовые настройки плагина сетаются в конфигурации дже. В джобе добавляете post-build action.


(Ярик Музика) #12

парни я не могу понять, как вы это собрали?! у меня билд фейл