#jenkins #junit
#дженкинс #junit
Вопрос:
Я создаю post job в конвейере Jenkins для публикации результатов тестирования с использованием junit, html и cobertura. Код выглядит следующим образом
post {
always {
publishTestResults(
script: this,
junit: [
active:true,
allowEmptyResults:true,
archive: true,
pattern: '**/reports/mocha.xml',
updateResults: true
],
cobertura: [
active:true,
allowEmptyResults:true,
archive:true,
pattern: '**/coverage/cobertura/cobertura-coverage.xml'
],
html: [
active:true,
allowEmptyResults:true,
archive:true,
name: 'NYC/Mocha',
path: '**/coverage/html'
],
lcov: [
active:true,
allowEmptyResults:true,
archive:true,
name: 'LCOV Coverage',
path: '**/coverage/lcov/lcov-report'
]
)
cobertura coberturaReportFile: 'coverage/cobertura/cobertura-coverage.xml'
junit 'reports/mocha.xml'
cleanWs()
// deleteDir()
script {
FAILED_STAGE = env.STAGE_NAME
}
}
}
}
Проблема в том, что при выполнении задания в Jenkins я получаю сообщение об ошибке:
find . -wholename **/reports/mocha.xml -exec touch {} ;
touch: cannot touch './reports/mocha.xml': Permission denied
Я полагаю, что проблема, поднятая командой junit. Как я мог решить эту проблему?
P / S: Сервер Jenkins работает на Ubuntu. Я попытался изменить / etc / sudoers и добавить эту строку, чтобы Дженкинс выполнял команду от имени root. Это все еще не могло решить мою проблему.
jenkins ALL=(ALL) NOPASSWD: ALL
Комментарии:
1. что такое «publishTestResults( script: this», это не встроенный шаг, верно?
2. это часть стандартной библиотеки Piper
Ответ №1:
После проверки кода на: https://github.com/SAP/jenkins-library/blob/5c13a0e2a20132336824c70b743c364bcb5341f4/vars/testsPublishResults.groovy#L136
Похоже, вы можете избежать проблемы, установив updateResults
значение false
Если вам абсолютно необходимо обновить временную метку в файле результатов, вам придется открыть сеанс терминала, перейти в рабочую область проекта (с пользователем jenkins) и попытаться запустить touch ./reports/mocha.xml
, а затем отладить его оттуда.
Комментарии:
1. Я попытался запустить
touch ./reports/mocha.xml
вручную, и все в порядке. Это только задание Дженкинса, которое не смогло выполнить команду.2. Похоже на проблему с env (может быть, вы пытаетесь с другим пользователем?). можете ли вы попробовать предложение выше? (updateResults=false)
3. вы правы. я запускаю его с конкретным пользователем Jenkins, которому дано очень ограниченное разрешение. дело в том, что здесь не разрешено ни предоставлять пользователю Дженкинса дополнительные разрешения, ни переключаться на другого пользователя для выполнения задания.
4. затем просто установите updateResults = false, дайте мне знать, сработало ли это