Jenkins Plugins

Содержание
Введение
Stage View
Robot
Статьи про Jenkins

Введение

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

Stage View

Для визуализации результатов работы всех стадий пайплайна обычно используется Pipeline Stage View плагин

Jenkins Pipeline Stage View Plugin изображение с сайта www.eth1.ru
Pipeline: Stage View Plugin
www.eth1.ru

Robot Framework

Без плагина для Robot Framework отчёты о тестах будут видны в выводе консоли примерно так:

[Pipeline] sh + robot ./src/tests/ui ============================================================================== Ui ============================================================================== Ui.Ui Test Page :: Example that opens single page ============================================================================== Starting a browser with a page | PASS | ------------------------------------------------------------------------------ Fill Field | FAIL | Title 'TopBicycle.ru' (str) should be 'TopBicycle' (str) ------------------------------------------------------------------------------ Renovation | PASS | ------------------------------------------------------------------------------ Italy | PASS | ------------------------------------------------------------------------------ Img | FAIL | Title '�������������������� ������ ���������� �� �������������������� ���� ������������' (str) should be '�������������������� ������ ���������� �� �������������������� ���� ������������ �� ��������������������������' (str) ------------------------------------------------------------------------------ Radio Buttons | PASS | ------------------------------------------------------------------------------ Checkboxes | PASS | ------------------------------------------------------------------------------ Dropdown | PASS | ------------------------------------------------------------------------------ Table | PASS | ------------------------------------------------------------------------------ Nested Table | PASS | ------------------------------------------------------------------------------ Upload File | FAIL | ValueError: Nonexistent input file path '/opt/workspace/robot_pipeline/heihei_logo.jpg' ------------------------------------------------------------------------------ Ui.Ui Test Page :: Example that opens single page | FAIL | 11 tests, 8 passed, 3 failed ============================================================================== Ui | FAIL | 11 tests, 8 passed, 3 failed ============================================================================== Output: /opt/workspace/robot_pipeline/output.xml Log: /opt/workspace/robot_pipeline/log.html Report: /opt/workspace/robot_pipeline/report.html [Pipeline] } [Pipeline] // script [Pipeline] } [Pipeline] // stage [Pipeline] } [Pipeline] // node [Pipeline] End of Pipeline ERROR: script returned exit code 3 Finished: FAILURE

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

Jenkins Pipeline Robot Framework Plugin изображение с сайта www.eth1.ru
Установка RF плагина
www.eth1.ru
Jenkins Pipeline Robot Framework Plugin изображение с сайта www.eth1.ru
Установка RF плагина
www.eth1.ru

После установки плагинов Robot Framework и Stage View отчёт с результатами тестов выглядит примерно следующим образом:

Jenkins Pipeline Robot Framework Plugin изображение с сайта www.eth1.ru
Latest Robot Results
www.eth1.ru

Latest Robot Results и Robot Framework Test Trends (all tests) - это результат работы плагина Robot Framework

Для просмотра report.html и log.html нужны дополнительные настройки . Browse results можно открыть сразу.

Jenkins Pipeline Robot Framework Plugin изображение с сайта www.eth1.ru
Browse results
www.eth1.ru

На главной странице (Dashboard) плагин показывает статистику Robot Results + Duration Trend

Jenkins Pipeline Robot Framework Plugin изображение с сайта www.eth1.ru
Robot Results + Duration Trend
www.eth1.ru

Просмотр логов и отчётов Robot Framework

После установки плагина Robot Framework файлы report.html и log.html могут не открываться в Jenkins с похожей ошибкой

Opening Robot Framework log failed • Verify that you have JavaScript enabled in your browser. • Make sure you are using a modern enough browser. Firefox 3.5, IE 8, or equivalent is required, newer browsers are recommended. • Check are there messages in your browser's JavaScript error log. Please report the problem if you suspect you have encountered a bug.

Это связано с довольно жёсткой политикой безопастности выставленной по умолчанию. Подробнее здесь и здесь

Решить её можно добавив скрипт (будет работать до следующей перезагрузки Jenkins)

System.setProperty("hudson.model.DirectoryBrowserSupport.CSP","sandbox allow-scripts; default-src 'none'; img-src 'self' data: ; style-src 'self' 'unsafe-inline' data: ; script-src 'self' 'unsafe-inline' 'unsafe-eval' ;")

В поле ввода

Manage Jenkins → Script Console

Затем нужно нажать кнопку Run

После этой манипуляции отчёты доступны в привычном виде:

Jenkins Pipeline Robot Framework Plugin report изображение с сайта www.eth1.ru
Report
www.eth1.ru
Jenkins Pipeline Robot Framework Plugin log изображение с сайта www.eth1.ru
Log
www.eth1.ru

Чтобы отчёты были читаемы и после перезагрузки нужно добавить те же значения, что были в скрипте в конфигурацию Jenkins

В данном примере я использовал docker compose поэтому мне нужно отредактировать docker-compose.yml

Зелёным выделено добавление переменной окружения JAVA_OPT

jenkins: # image specified in Dockerfile # image: jenkins/jenkins:lts restart: always privileged: true user: root build: context: ./dockerfiles dockerfile: Dockerfile.jenkins args: buildversion: 1 SSH_PRIVATE_KEY: "" ports: - "8080:8080" - "50000:50000" environment: JAVA_OPTS: -Dhudson.model.DirectoryBrowserSupport.CSP="sandbox allow-same-origin allow-scripts; default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval'; img-src 'self' data:; style-src 'self' 'unsafe-inline' data:; font-src 'self'" container_name: jenkins networks: net3: ipv4_address: 10.5.0.6 jenkins: ipv4_address: 10.7.0.6 extra_hosts: - "nginx.andrei.com:10.7.0.8" - "mkdocs.andrei.com:10.7.0.10" - "robot.andrei.com:10.7.0.12" volumes: - ./var/jenkins_home:/var/jenkins_home - /var/run/docker.sock:/var/run/docker.sock

Пример Pipeline

robotframework.org

pipeline { agent {label 'robot'} stages { stage("Collect Info") { steps { script { sh 'pwd' sh 'ls -la' sh 'whoami' } dir("/opt/tests") { sh 'pwd' sh 'ls -la' } } } stage("Pull Git Repository") { steps { git( url: "https://github.com/AndreiOlegovich/robot_web_ui_test.git", branch: "main", changelog: true, poll: true ) } } stage("Install Requirements") { steps { script { sh 'python -m pip install -r ./requirements.txt' } } } stage("Execute UI Test") { steps { sh script: "robot --nostatusr ./src/tests/ui", returnStatus: true } } } post { always { // `onlyCritical: false` is for RF 3.x compatibility. This will be deprecated // and removed in the future. robot outputPath: '.', passThreshold: 80.0, unstableThreshold: 70.0, onlyCritical: false } } }

Автор статьи: Андрей Олегович

Статьи про Jenkins
Jenkins
Установка Jenkins
Основы Jenkins
Агенты
Jenkins Freestyle project
Jenkins Pipeline
Credentials
Задания по расписанию
Плагины
Разбор ошибок
DevOps
Docker

Поиск по сайту

Подпишитесь на Telegram канал @aofeed чтобы следить за выходом новых статей и обновлением старых

Перейти на канал

@aofeed

Задать вопрос в Телеграм-группе

@aofeedchat

Контакты и сотрудничество:
Рекомендую наш хостинг beget.ru
Пишите на info@urn.su если Вы:
1. Хотите написать статью для нашего сайта или перевести статью на свой родной язык.
2. Хотите разместить на сайте рекламу, подходящую по тематике.
3. Реклама на моём сайте имеет максимальный уровень цензуры. Если Вы увидели рекламный блок недопустимый для просмотра детьми школьного возраста, вызывающий шок или вводящий в заблуждение - пожалуйста свяжитесь с нами по электронной почте
4. Нашли на сайте ошибку, неточности, баг и т.д. ... .......
5. Статьи можно расшарить в соцсетях, нажав на иконку сети: