diff --git a/JenkinsJobs/AutomatedTests/integrationTests.jenkinsfile b/JenkinsJobs/AutomatedTests/integrationTests.jenkinsfile index 06fbf36cebe..dd92495a4cb 100644 --- a/JenkinsJobs/AutomatedTests/integrationTests.jenkinsfile +++ b/JenkinsJobs/AutomatedTests/integrationTests.jenkinsfile @@ -10,7 +10,7 @@ pipeline { parameters { string(name: 'buildId', trim: true, description: 'Build Id to test. For example: I20251010-0150') string(name: 'testSuite', defaultValue: 'all', trim: true, description: '''This can be any ant target from - https://github.com/eclipse-platform/eclipse.platform.releng.aggregator/blob/master/production/testScripts/configuration/sdk.tests/testScripts/test.xml + the test.xml ''') string(name: 'testAgent', trim: true, description: '''The Jenkins build agent this test should run on. If not specified to will be read from the buildConfigurations.json @@ -42,6 +42,8 @@ pipeline { label "${ params.testAgent ?: TEST_AGENT }" } environment { + // Download Server locations (seldomly change) + EP_ECLIPSE_DROPS = '/home/data/httpd/download.eclipse.org/eclipse/downloads/drops4' // Declaring a jdk and ant the usual way in the 'tools' section, because of unknown reasons, breaks the usage of system commands like xvnc, pkill and sh ANT_HOME = tool(type:'ant', name:'apache-ant-latest') ANT_OPTS = "-Djava.io.tmpdir=${pathOf(env.WORKSPACE + '/tmp')}" @@ -83,22 +85,43 @@ pipeline { echo JAVA_HOME: §[JAVA_HOME] echo ANT_HOME: §[ANT_HOME] echo PATH: §[PATH] - java -XshowSettings -version 1>javaSettings.txt 2>&1 + java -XshowSettings -version curl --fail --output getEBuilder.xml https://download.eclipse.org/eclipse/relengScripts/testScripts/bootstrap/getEBuilder.xml ant -f getEBuilder.xml -DbuildId=${params.buildId} -Dosgi.os=${test.os} -Dosgi.ws=${test.ws} -Dosgi.arch=${test.arch} -DtestSuite=${params.testSuite} """) } - archiveArtifacts '**/eclipse-testing/results/**, *.properties, *.txt' junit keepLongStdio: true, testResults: '**/eclipse-testing/results/xml/*.xml' - build job: 'Releng/collectTestResults', wait: false, parameters: [ - string(name: 'triggeringJob', value: "${JOB_BASE_NAME}"), - string(name: 'buildURL', value: "${BUILD_URL}"), - string(name: 'buildID', value: "${params.buildId}") - ] } post { always { + script { + if (currentBuild.result != 'ABORTED') { + // Transfer test results to storage-server (skip for partial results on aborted run) + sshagent(['projects-storage.eclipse.org-bot-ssh']) { + sh '''#!/bin/bash -xe + remoteResultsDirectory="${EP_ECLIPSE_DROPS}/${buildId}/testresults" + localResultsDirectory="workarea/${buildId}/eclipse-testing/results" + ssh genie.releng@projects-storage.eclipse.org mkdir -p ${remoteResultsDirectory} + if [ -d "${localResultsDirectory}/xml" ] && [ -z "$(find ${localResultsDirectory}/xml -maxdepth 0 -empty)" ]; then + # First delete result files from a previous run of the same configuration (in case that test configuration was run again), then transfer the new results. + ssh genie.releng@projects-storage.eclipse.org rm -rfv ${remoteResultsDirectory}/${JOB_BASE_NAME}* ${remoteResultsDirectory}/*/*${JOB_BASE_NAME}* + scp -r ${localResultsDirectory}/* genie.releng@projects-storage.eclipse.org:${remoteResultsDirectory} + # Download the result summary directly to the storage server + ssh genie.releng@projects-storage.eclipse.org \ + curl --fail --location --output "${remoteResultsDirectory}/${JOB_BASE_NAME}.xml" "${BUILD_URL}/testReport/api/xml?tree=failCount,passCount,skipCount,duration" + fi + ''' + } + } + if (currentBuild.result == 'SUCCESS' || currentBuild.result == 'UNSTABLE') { + build job: 'Releng/updateTestResultIndex', wait: false, parameters: [ + string(name: 'buildID', value: "${params.buildId}") + ] + } + } + } + cleanup { cleanWs() } } diff --git a/JenkinsJobs/Releng/collectTestResults.jenkinsfile b/JenkinsJobs/Releng/updateTestResultIndex.jenkinsfile similarity index 65% rename from JenkinsJobs/Releng/collectTestResults.jenkinsfile rename to JenkinsJobs/Releng/updateTestResultIndex.jenkinsfile index 5651f5887be..fcf6c0ba49e 100644 --- a/JenkinsJobs/Releng/collectTestResults.jenkinsfile +++ b/JenkinsJobs/Releng/updateTestResultIndex.jenkinsfile @@ -10,8 +10,6 @@ pipeline { disableConcurrentBuilds() } parameters { - string(name: 'triggeringJob', trim: true, description: 'Name of the job to collect results from: i.e. \'ep427I-unit-cen64-gtk3-java17\'.') - string(name: 'buildURL', trim: true, description: 'Build URL of the triggering job.') string(name: 'buildID', trim: true, description: 'ID of the I-build being tested.') } agent { @@ -55,36 +53,14 @@ pipeline { testResultsDir="${buildDirectory}/testresults" mkdir -p "${testResultsDir}" - # ========================================== - # Collect results and overview from test-job - pushd "${testResultsDir}" - - curl -L -o "${triggeringJob}.xml" "${buildURL}/testReport/api/xml?tree=failCount,passCount,skipCount,duration" - curl -L -o results.zip "${buildURL}/artifact/workarea/${buildID}/eclipse-testing/results/*zip*/results.zip" - unzip results.zip - # copy them to the expected location (from the subfolder of the zip) and remove all download artifacts. - mv results/* . - rm -rf results results.zip - popd - - # Fetch previously collected test results and already generated files (that would otherwise be re-generated) - allTestResultsDirectory="${EP_ECLIPSE_DROPS}/${buildID}/testresults" - if ssh genie.releng@projects-storage.eclipse.org "[ -d '${allTestResultsDirectory}/xml' ]"; then - # First delete result files from a previous run of the same configuration (in case that test configuration was run again). - ssh genie.releng@projects-storage.eclipse.org rm -rfv ${allTestResultsDirectory}/${triggeringJob}* ${allTestResultsDirectory}/*/*${triggeringJob}* - rsync -avzh genie.releng@projects-storage.eclipse.org:${allTestResultsDirectory}/xml ${buildDirectory}/testresults - else - echo 'Test results of other configurations not yet published.' - fi + # Fetch previously collected test results of all completed runs + rsync -avzh genie.releng@projects-storage.eclipse.org:${EP_ECLIPSE_DROPS}/${buildID}/testresults/xml ${testResultsDir} #triggering ant runner - devworkspace=${WORKSPACE}/workspace-updateTestResults - $ECLIPSE -debug -data ${WORKSPACE}/workspace-updateTestResults \ -application org.eclipse.ant.core.antRunner \ -file "${WORKSPACE}/git-repo/cje-production/scripts/publish.xml" \ -DbuildDirectory=${buildDirectory} \ - -Djob=${triggeringJob} \ -DbuildType=${BUILD_TYPE} \ "-DtestsConfigExpected=${TEST_CONFIGURATIONS_EXPECTED}" \ "-DmanifestFile=${WORKSPACE}/git-repo/eclipse.platform.releng.tychoeclipsebuilder/eclipse/publishingFiles/testManifest.xml" diff --git a/cje-production/scripts/publish.xml b/cje-production/scripts/publish.xml index 7a759946430..dd9f70445d2 100644 --- a/cje-production/scripts/publish.xml +++ b/cje-production/scripts/publish.xml @@ -25,7 +25,6 @@ - @@ -63,7 +62,6 @@ -