#jenkins #junit #pytest
#дженкинс #junit #pytest
Вопрос:
Я могу публиковать отчеты junit XML при запуске теста в том же окне, что и Дженкинс, с помощью pytest. Это отлично работает.
Теперь я запускаю pytest на удаленном тестовом компьютере, инициированном Дженкинсом. Он запускает серию тестов на python и генерирует отчет junit xml на удаленном тестовом ПК. Где я застрял, так это как отправить этот отчет junit xml обратно в Дженкинс?
Тестовый КОМПЬЮТЕР — Windows 10. В настоящее время я запускаю тесты удаленно с помощью команд powershell для запуска pytest. У меня нет подчиненного агента Дженкинса на удаленном тестовом компьютере.
Комментарии:
1. Вы должны указать, какие операционные системы установлены на этих компьютерах. Есть плагин копирования на подчиненный , но у него проблемы с безопасностью. Возможно, вам придется использовать утилиту на основе операционной системы.
2. Если вы используете Jenkins 2 и конвейеры, вы можете копировать файлы между ведущим и подчиненными устройствами с помощью
stash/unstash
функций.3. Я обновил свой вопрос с помощью операционной системы, установленной на тестовом ПК
Ответ №1:
Вот пример копирования файла с одного узла на другой с использованием stash / unstash. Файл ‘foo.jar ‘ находится в ‘/tmp’ в исходной системе и в конечном итоге окажется в ‘/ tmp’ в целевой системе.
stage ('Stash file on node 1') {
node ('node1') {
dir ('/tmp') {
stash name: 'TestTransfer', includes: 'junit.xml'
}
}
}
stage ('Unstash file on node 2') {
node ('node2') {
dir ('/tmp') {
unstash 'TestTransfer'
}
}
}
Вот пример копирования файла с узла 1 на мастер, а затем архивирования его как артефакт, чтобы вы могли просмотреть его или загрузить из графического интерфейса после завершения задания
stage ('Stash file on node 1') {
node ('node1') {
dir ('/tmp') {
stash name: 'TestTransfer', includes: 'junit.xml'
}
}
}
stage ('Unstash file on master') {
node () {
// By default, goes to the workspace.
// If you want to go to a directory, wrap in 'dir'
unstash 'TestTransfer'
archiveArtifacts artifacts: '*'
}
}