Может кто-нибудь помочь мне с моей проблемой, пожалуйста.
В настоящее время у меня есть проект конвейера Jenkins, на котором параллельно выполняются тесты автоматизации на удаленной машине.
Я использую allure для отчетности, и когда она хранится на одном узле, она работает отлично. Тем не менее, при попытке создать второй отчет (те же тесты, другой браузер), это, кажется, вызывает поврежденный файл JAR. Он ведет себя так, как и ожидалось для первых 4/5 сборок, затем выдает эту ошибку:
java.util.zip.ZipException: invalid LOC header (bad signature)
at java.util.zip.ZipFile.read(Native Method)
at java.util.zip.ZipFile.access$1400(Unknown Source)
at java.util.zip.ZipFile$ZipFileInputStream.read(Unknown Source)
at java.util.zip.ZipFile$ZipFileInflaterInputStream.fill(Unknown Source)
at java.util.zip.InflaterInputStream.read(Unknown Source)
at com.fasterxml.jackson.core.json.ByteSourceJsonBootstrapper.ensureLoaded(ByteSourceJsonBootstrapper.java:489)
at com.fasterxml.jackson.core.json.ByteSourceJsonBootstrapper.detectEncoding(ByteSourceJsonBootstrapper.java:126)
at com.fasterxml.jackson.core.json.ByteSourceJsonBootstrapper.constructParser(ByteSourceJsonBootstrapper.java:215)
at com.fasterxml.jackson.core.JsonFactory._createParser(JsonFactory.java:1238)
at com.fasterxml.jackson.core.JsonFactory.createParser(JsonFactory.java:807)
at com.fasterxml.jackson.databind.ObjectMapper.readTree(ObjectMapper.java:2264)
at ru.yandex.qatools.allure.jenkins.utils.FilePathUtils.isHistoryNotEmpty(FilePathUtils.java:85)
at ru.yandex.qatools.allure.jenkins.utils.FilePathUtils.getPreviousReportWithHistory(FilePathUtils.java:70)
at ru.yandex.qatools.allure.jenkins.AllureReportPublisher.addHistory(AllureReportPublisher.java:402)
at ru.yandex.qatools.allure.jenkins.AllureReportPublisher.prepareResults(AllureReportPublisher.java:371)
at ru.yandex.qatools.allure.jenkins.AllureReportPublisher.perform(AllureReportPublisher.java:217)
at org.jenkinsci.plugins.workflow.steps.CoreStep$Execution.run(CoreStep.java:80)
at org.jenkinsci.plugins.workflow.steps.CoreStep$Execution.run(CoreStep.java:67)
at org.jenkinsci.plugins.workflow.steps.SynchronousNonBlockingStepExecution$1$1.call(SynchronousNonBlockingStepExecution.java:50)
at hudson.security.ACL.impersonate(ACL.java:290)
at org.jenkinsci.plugins.workflow.steps.SynchronousNonBlockingStepExecution$1.run(SynchronousNonBlockingStepExecution.java:47)
at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
at java.util.concurrent.FutureTask.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Что сохраняется до тех пор, пока я не установлю совершенно новую версию jenkins.
Я уверен, что у меня что-то не так, но я не уверен, что это ошибка.
Конвейерный скрипт ниже:
node{
stage("Clean Workspace"){
parallel firefox:{
node('master'){
cleanWs notFailBuild: true, patterns: [[pattern: 'TestResult.xml', type: 'EXCLUDE']]
}
},chrome:{
node('Chrome'){
cleanWs notFailBuild: true, patterns: [[pattern: 'TestResult.xml', type: 'EXCLUDE']]
}
}
}
stage('Checkout Code'){
parallel firefox:{
node('master'){
git credentialsId: **Removed**
}
}, chrome:{
node('Chrome'){
git credentialsId: **Removed**
}
}
}
stage('Restore NuGet'){
parallel firefox:{
node('master') {
bat '"C:/ProgramData/chocolatey/lib/NuGet.CommandLine/tools/nuget.exe" restore PurpleAutomationSuite.sln'
}
}, chrome:{
node('Chrome') {
bat '"C:/ProgramData/chocolatey/lib/NuGet.CommandLine/tools/nuget.exe" restore PurpleAutomationSuite.sln'
}
}
}
stage('Build'){
parallel firefox:{
node('master') {
bat "\"${tool 'MSBuildLocal'}\" PurpleAutomationSuite.sln /p:Configuration=Debug /p:Platform=\"Any CPU\" /p:ProductVersion=1.0.0.${env.BUILD_NUMBER}"
}
}, chrome:{
node('Chrome') {
bat "\"${tool 'MSBuildLocal'}\" PurpleAutomationSuite.sln /p:Configuration=Debug /p:Platform=\"Any CPU\" /p:ProductVersion=1.0.0.${env.BUILD_NUMBER}"
}
}
}
stage('Test'){
try{
parallel firefox:{
node('master') {
bat '"C:/ProgramData/chocolatey/lib/nunit-console-runner/tools/nunit3-console.exe" --result=C:/Users/Jenkins/.jenkins/workspace/CrossBrowserTesting@2/TestResult.xml --params:Browser=Firefox PurpleAutomationSuite/bin/Debug/PurpleAutomationSuite.dll '
}
}, chrome:{
node('Chrome') {
bat '"C:/ProgramData/chocolatey/lib/nunit-console-runner/tools/nunit3-console.exe" --result=C:/jenkins/workspace/CrossBrowserTesting/TestResult.xml --params:Browser=Firefox PurpleAutomationSuite/bin/Debug/PurpleAutomationSuite.dll'
}
}
} catch (e) {
result = "FAIL"
}
}
stage("PublishTestReport"){
parallel firefox:{
node('master') {
allure includeProperties: false, jdk: '', results: [[path: 'CrossBrowserTesting@2']]
}
}, chrome:{
node('Chrome') {
allure includeProperties: false, jdk: '', results: [[path: 'CrossBrowserTesting']]
}
}
}
}
Редактировать: просто чтобы добавить, что оба рабочих пространства являются отдельными, и я использую последнюю версию подключаемого модуля конвейера