Я пытаюсь прочитать файл в рабочей области. Файл был создан на предыдущем шаге (вызовом сценария оболочки для java). Я подтвердил, что он существует. Я использую 'readFile'. Я получаю исключение ниже. Я могу получить доступ к этому файлу в сценарии оболочки, но я хочу сделать разбор json и гораздо лучше использовать groovy. Есть ли какая-то безопасность в игре, препятствующая доступу?Рабочий процесс Jenkins - filenotfound для файла рабочей области
java.io.FileNotFoundException: /var/lib/jenkins/jobs/MBTest/branches/develop/workspace/functional-tests/target/scalatestcuke-F63QUALZN4.json
(No such file or directory)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(FileInputStream.java:146)
at hudson.FilePath.read(FilePath.java:1751)
at org.jenkinsci.plugins.workflow.steps.ReadFileStep$Execution.run(ReadFileStep.java:87)
at org.jenkinsci.plugins.workflow.steps.ReadFileStep$Execution.run(ReadFileStep.java:81)
at org.jenkinsci.plugins.workflow.steps.AbstractSynchronousNonBlockingStepExecution$1$1.call(AbstractSynchronousNonBlockingStepExecution.java:49)
at hudson.security.ACL.impersonate(ACL.java:213)
at org.jenkinsci.plugins.workflow.steps.AbstractSynchronousNonBlockingStepExecution$1.run(AbstractSynchronousNonBlockingStepExecution.java:47)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
Jenkinsfile (слегка вырублены)
#!groovy
// Execute the following steps on the master
node {
stage name: 'Checkout', concurrency: 1
checkout scm
functionalTest()
release()
}
def functionalTest(){
stage name: 'QA', concurrency: 1
echo "nonrestF63"
sh scalatestScript("F63QUALZN4","latest",5922,"-l jhc.TDRest")
archive includes: 'functional-tests/target/*.json'
def job = build job: 'generic-cucumber-report', parameters: [
[$class: 'StringParameterValue', name: 'projectname', value: 'MBTest/develop'],
[$class: 'StringParameterValue', name: 'jsondir', value: 'functional-tests/target']]
step ([$class: 'CopyArtifact',
projectName: 'generic-cucumber-report',
filter: 'target/cucumber-html-reports/**/*',
selector: [$class: 'SpecificBuildSelector', buildNumber: job.getId()]]);
publishHTML(target: [allowMissing: false, keepAll: true, reportDir: 'target/cucumber-html-reports/',
reportFiles: 'feature-overview.html', reportName: 'Test results'])
def failures = countFailures()
if(failures > 0){
error '${failures} test failures reported'
}
}
def countFailures() {
sh "ls functional-tests/target/*.json | sed -e ':a' -e 'N' -e '\$!ba' -e 's/\\n/,/g' > filelist.txt"
def txt = readFile "filelist.txt"
def count = 0
txt.split(",") each { jsonFile ->
def text = readFile jsonFile
def json = new groovy.json.JsonSlurper().parseText(text)
count = count + countMatches(json,"status","failed")
}
return count
}
вопрос можно увидеть в методе countfailures. Я прочитал список файлов из WS и прокрутил имена. Когда я пытаюсь прочитать их, хотя я получаю FNF.
Можете ли вы опубликовать шаг readfile? –
И код, окружающий его, я должен был добавить. –
Извините за задержку, либо я не знаю, как устанавливать уведомления о обновлениях SO-потоков, либо у SO нет уведомления, которое мне нужно. –