Дженкинс публикует junit xml с удаленного тестового компьютера

#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: '*'
    }
}