From 3fa0715c8fc2edf596140d9b621b8e22fb454fb2 Mon Sep 17 00:00:00 2001 From: Hannes Wellmann Date: Fri, 14 Nov 2025 20:09:50 +0100 Subject: [PATCH] Migrate website from PHP to plain HTML enhanced with JavaScript The individual content of all pages is defined in and read from JSON files and replaced dynamically using JavaScript. The JSON files are generated during the build or upon completion of tests. Missing parts: - The page listing all test result logs is not implemented, instead of link to the file-system folder is used. - The promotion pipelines are not yet adapted to the new approach. Fixes https://github.com/eclipse-platform/eclipse.platform.releng.aggregator/issues/2656 --- .settings/org.eclipse.core.resources.prefs | 1 - .../integrationTests.jenkinsfile | 25 +- JenkinsJobs/Builds/build.jenkinsfile | 93 +- JenkinsJobs/Releng/promoteBuild.jenkinsfile | 4 +- JenkinsJobs/Releng/updateIndex.jenkinsfile | 168 ++- .../Releng/updateTestResultIndex.jenkinsfile | 68 - JenkinsJobs/shared/utilities.groovy | 29 + cje-production/buildproperties.txt | 3 - .../mbscripts/mb010_createEnvfiles.sh | 2 - .../staticDropFiles/DL.thin.header.php.html | 141 -- .../publishingFiles/staticDropFiles/FAIL.gif | Bin 70 -> 0 bytes .../staticDropFiles/FAIL_ORIG.gif | Bin 117 -> 0 bytes .../staticDropFiles/NONE-FAIL.gif | Bin 79 -> 0 bytes .../staticDropFiles/NONE-OK.gif | Bin 79 -> 0 bytes .../publishingFiles/staticDropFiles/OK.gif | Bin 70 -> 0 bytes .../staticDropFiles/OK_ORIG.gif | Bin 139 -> 0 bytes .../staticDropFiles/buildlogs.php | 121 -- .../compilerSummaryPending.html | 7 - .../staticDropFiles/computeRepoURLs.php | 103 -- .../staticDropFiles/download.php | 152 -- .../staticDropFiles/dropSectionUtils.php | 64 - .../staticDropFiles/eclipseDownloadPage.css | 70 - .../staticDropFiles/eclipseDownloadPage.js | 17 - .../staticDropFiles/gitLog.php | 58 - .../staticDropFiles/gitLogSection.css | 111 -- .../staticDropFiles/images/light.gif | Bin 553 -> 0 bytes .../staticDropFiles/images/more.gif | Bin 64 -> 0 bytes .../staticDropFiles/logPhpUtils.php | 88 -- .../publishingFiles/staticDropFiles/logs.php | 66 - .../publishingFiles/staticDropFiles/new.gif | Bin 171 -> 0 bytes .../staticDropFiles/resultsSection.css | 71 - .../staticDropFiles/testResults.php | 134 -- .../testResultsTablesPending.html | 8 - .../staticDropFiles/utilityFunctions.php | 303 ---- .../buildproperties.phpHoldForLocalTests | 57 - .../templateFiles/index.template.php | 431 ------ .../templateFiles/testNotesExample.html | 22 - .../eclipse/publishingFiles/testManifest.xml | 543 +------ .../equinox/helper.xml | 332 ----- .../publishingFiles/staticDropFiles/build.php | 29 - .../staticDropFiles/download.php | 92 -- .../staticDropFiles/equinox.css | 18 - .../templateFiles/index.template.php | 130 -- .../templateFiles/testResults.template.php | 57 - .../equinox/publishingFiles/testManifest.xml | 307 ---- scripts/releng/BuildDropDataGenerator.java | 241 ++++ .../releng/ComparatorSummaryExtractor.java | 9 +- scripts/releng/CompileLogConverter.java | 25 +- scripts/releng/CompilerSummaryGenerator.java | 159 +++ scripts/releng/ErrorTracker.java | 195 --- scripts/releng/PlatformStatus.java | 40 - scripts/releng/TestResultsGenerator.java | 1250 +++-------------- scripts/releng/utilities/JSON.java | 174 +++ scripts/releng/utilities/OS.java | 102 ++ .../utilities/XmlProcessorFactoryRelEng.java | 105 ++ sites/eclipse/.gitignore | 1 + sites/eclipse/README.md | 7 + sites/eclipse/build/buildlogs/logs.html | 74 + .../eclipse/build}/details.html | 12 +- sites/eclipse/build/gitLog.html | 67 + sites/eclipse/build/index.html | 197 +++ .../eclipse/build}/repo.gif | Bin sites/eclipse/build/tests.html | 189 +++ sites/eclipse/overview/images/build_done.gif | Bin 0 -> 338 bytes sites/eclipse/overview/images/caution.gif | Bin 0 -> 202 bytes sites/eclipse/overview/images/junit.gif | Bin 0 -> 207 bytes sites/eclipse/overview/images/runtests.gif | Bin 0 -> 1025 bytes sites/eclipse/overview/index.html | 130 ++ sites/eclipse/page.css | 44 + sites/eclipse/page.js | 421 ++++++ sites/equinox/.gitignore | 1 + sites/equinox/README.md | 5 + sites/equinox/build/index.html | 111 ++ sites/equinox/build/repo.gif | Bin 0 -> 353 bytes sites/equinox/overview/index.html | 75 + 75 files changed, 2541 insertions(+), 5018 deletions(-) delete mode 100644 JenkinsJobs/Releng/updateTestResultIndex.jenkinsfile delete mode 100644 eclipse.platform.releng.tychoeclipsebuilder/eclipse/publishingFiles/staticDropFiles/DL.thin.header.php.html delete mode 100644 eclipse.platform.releng.tychoeclipsebuilder/eclipse/publishingFiles/staticDropFiles/FAIL.gif delete mode 100644 eclipse.platform.releng.tychoeclipsebuilder/eclipse/publishingFiles/staticDropFiles/FAIL_ORIG.gif delete mode 100644 eclipse.platform.releng.tychoeclipsebuilder/eclipse/publishingFiles/staticDropFiles/NONE-FAIL.gif delete mode 100644 eclipse.platform.releng.tychoeclipsebuilder/eclipse/publishingFiles/staticDropFiles/NONE-OK.gif delete mode 100644 eclipse.platform.releng.tychoeclipsebuilder/eclipse/publishingFiles/staticDropFiles/OK.gif delete mode 100644 eclipse.platform.releng.tychoeclipsebuilder/eclipse/publishingFiles/staticDropFiles/OK_ORIG.gif delete mode 100644 eclipse.platform.releng.tychoeclipsebuilder/eclipse/publishingFiles/staticDropFiles/buildlogs.php delete mode 100644 eclipse.platform.releng.tychoeclipsebuilder/eclipse/publishingFiles/staticDropFiles/compilerSummaryPending.html delete mode 100644 eclipse.platform.releng.tychoeclipsebuilder/eclipse/publishingFiles/staticDropFiles/computeRepoURLs.php delete mode 100644 eclipse.platform.releng.tychoeclipsebuilder/eclipse/publishingFiles/staticDropFiles/download.php delete mode 100644 eclipse.platform.releng.tychoeclipsebuilder/eclipse/publishingFiles/staticDropFiles/dropSectionUtils.php delete mode 100644 eclipse.platform.releng.tychoeclipsebuilder/eclipse/publishingFiles/staticDropFiles/eclipseDownloadPage.css delete mode 100644 eclipse.platform.releng.tychoeclipsebuilder/eclipse/publishingFiles/staticDropFiles/eclipseDownloadPage.js delete mode 100644 eclipse.platform.releng.tychoeclipsebuilder/eclipse/publishingFiles/staticDropFiles/gitLog.php delete mode 100644 eclipse.platform.releng.tychoeclipsebuilder/eclipse/publishingFiles/staticDropFiles/gitLogSection.css delete mode 100644 eclipse.platform.releng.tychoeclipsebuilder/eclipse/publishingFiles/staticDropFiles/images/light.gif delete mode 100644 eclipse.platform.releng.tychoeclipsebuilder/eclipse/publishingFiles/staticDropFiles/images/more.gif delete mode 100644 eclipse.platform.releng.tychoeclipsebuilder/eclipse/publishingFiles/staticDropFiles/logPhpUtils.php delete mode 100644 eclipse.platform.releng.tychoeclipsebuilder/eclipse/publishingFiles/staticDropFiles/logs.php delete mode 100644 eclipse.platform.releng.tychoeclipsebuilder/eclipse/publishingFiles/staticDropFiles/new.gif delete mode 100644 eclipse.platform.releng.tychoeclipsebuilder/eclipse/publishingFiles/staticDropFiles/resultsSection.css delete mode 100644 eclipse.platform.releng.tychoeclipsebuilder/eclipse/publishingFiles/staticDropFiles/testResults.php delete mode 100644 eclipse.platform.releng.tychoeclipsebuilder/eclipse/publishingFiles/staticDropFiles/testResultsTablesPending.html delete mode 100644 eclipse.platform.releng.tychoeclipsebuilder/eclipse/publishingFiles/staticDropFiles/utilityFunctions.php delete mode 100644 eclipse.platform.releng.tychoeclipsebuilder/eclipse/publishingFiles/templateFiles/buildproperties.phpHoldForLocalTests delete mode 100644 eclipse.platform.releng.tychoeclipsebuilder/eclipse/publishingFiles/templateFiles/index.template.php delete mode 100644 eclipse.platform.releng.tychoeclipsebuilder/eclipse/publishingFiles/templateFiles/testNotesExample.html delete mode 100644 eclipse.platform.releng.tychoeclipsebuilder/equinox/helper.xml delete mode 100644 eclipse.platform.releng.tychoeclipsebuilder/equinox/publishingFiles/staticDropFiles/build.php delete mode 100644 eclipse.platform.releng.tychoeclipsebuilder/equinox/publishingFiles/staticDropFiles/download.php delete mode 100644 eclipse.platform.releng.tychoeclipsebuilder/equinox/publishingFiles/staticDropFiles/equinox.css delete mode 100644 eclipse.platform.releng.tychoeclipsebuilder/equinox/publishingFiles/templateFiles/index.template.php delete mode 100644 eclipse.platform.releng.tychoeclipsebuilder/equinox/publishingFiles/templateFiles/testResults.template.php delete mode 100644 eclipse.platform.releng.tychoeclipsebuilder/equinox/publishingFiles/testManifest.xml create mode 100644 scripts/releng/BuildDropDataGenerator.java create mode 100644 scripts/releng/CompilerSummaryGenerator.java delete mode 100644 scripts/releng/ErrorTracker.java delete mode 100644 scripts/releng/PlatformStatus.java create mode 100644 scripts/releng/utilities/JSON.java create mode 100644 scripts/releng/utilities/OS.java create mode 100644 scripts/releng/utilities/XmlProcessorFactoryRelEng.java create mode 100644 sites/eclipse/.gitignore create mode 100644 sites/eclipse/README.md create mode 100644 sites/eclipse/build/buildlogs/logs.html rename {eclipse.platform.releng.tychoeclipsebuilder/eclipse/publishingFiles/staticDropFiles => sites/eclipse/build}/details.html (91%) create mode 100644 sites/eclipse/build/gitLog.html create mode 100644 sites/eclipse/build/index.html rename {eclipse.platform.releng.tychoeclipsebuilder/eclipse/publishingFiles/staticDropFiles => sites/eclipse/build}/repo.gif (100%) create mode 100644 sites/eclipse/build/tests.html create mode 100644 sites/eclipse/overview/images/build_done.gif create mode 100644 sites/eclipse/overview/images/caution.gif create mode 100644 sites/eclipse/overview/images/junit.gif create mode 100644 sites/eclipse/overview/images/runtests.gif create mode 100644 sites/eclipse/overview/index.html create mode 100644 sites/eclipse/page.css create mode 100644 sites/eclipse/page.js create mode 100644 sites/equinox/.gitignore create mode 100644 sites/equinox/README.md create mode 100644 sites/equinox/build/index.html create mode 100644 sites/equinox/build/repo.gif create mode 100644 sites/equinox/overview/index.html diff --git a/.settings/org.eclipse.core.resources.prefs b/.settings/org.eclipse.core.resources.prefs index 261dae42ee5..99f26c0203a 100644 --- a/.settings/org.eclipse.core.resources.prefs +++ b/.settings/org.eclipse.core.resources.prefs @@ -1,3 +1,2 @@ eclipse.preferences.version=1 -encoding//eclipse.platform.releng.tychoeclipsebuilder/eclipse/publishingFiles/staticDropFiles/testResults.php=UTF-8 encoding/=UTF-8 diff --git a/JenkinsJobs/AutomatedTests/integrationTests.jenkinsfile b/JenkinsJobs/AutomatedTests/integrationTests.jenkinsfile index 05d2f12709d..1e679480e21 100644 --- a/JenkinsJobs/AutomatedTests/integrationTests.jenkinsfile +++ b/JenkinsJobs/AutomatedTests/integrationTests.jenkinsfile @@ -55,6 +55,9 @@ pipeline { extensions: [cloneOption(depth: 1, shallow: true, noTags: true), sparseCheckout([ [path: 'JenkinsJobs/buildConfigurations.json'], [path: 'JenkinsJobs/shared/utilities.groovy'], + [path: 'scripts/releng'], + [path: 'eclipse.platform.releng.tychoeclipsebuilder/eclipse/publishingFiles'], + ])]) script { def buildConfigurations = readJSON(file: 'JenkinsJobs/buildConfigurations.json') @@ -104,20 +107,34 @@ pipeline { 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 + + # As long as not all tests run with Java-25 (or later) we cannot use multi-file Source Programs and have to compile manually + pushd scripts/releng + javac TestResultsGenerator.java + javac utilities/JSON.java + javac utilities/OS.java + javac utilities/XmlProcessorFactoryRelEng.java + # Generate new summary file + java \ + -DxmlDirectory="${WORKSPACE}/${localResultsDirectory}/xml" \ + -DtestsConfigExpected=${JOB_BASE_NAME} \ + -DtestManifestFile="${WORKSPACE}/eclipse.platform.releng.tychoeclipsebuilder/eclipse/publishingFiles/testManifest.xml" \ + TestResultsGenerator + popd + # 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" + curl --fail --location --output "${remoteResultsDirectory}/${JOB_BASE_NAME}.xml" "${BUILD_URL}/testReport/api/json?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}") - ] + build job: 'Releng/updateIndex', wait: false } } } diff --git a/JenkinsJobs/Builds/build.jenkinsfile b/JenkinsJobs/Builds/build.jenkinsfile index d5e82464817..5ebef75caf4 100644 --- a/JenkinsJobs/Builds/build.jenkinsfile +++ b/JenkinsJobs/Builds/build.jenkinsfile @@ -34,6 +34,7 @@ pipeline { environment { MAVEN_OPTS = '-Xmx4G' CJE_ROOT = "${WORKSPACE}/cje-production" + SCRIPTS = "${WORKSPACE}/scripts" AGG_DIR = "${CJE_ROOT}/gitCache/eclipse.platform.releng.aggregator" logDir = "$CJE_ROOT/buildlogs" @@ -168,31 +169,38 @@ pipeline { } // Git log creation sh '''#!/bin/bash -xe - reportTimestamp=$(TZ="America/New_York" date +%Y%m%d-%H%M) + reportTimestamp=$(TZ='UTC' date +%Y%m%d-%H%M) export lastTag=$(cat "${WORKSPACE}/lastTag") if [[ -n "$lastTag" ]]; then - export gitLogFile="${DROP_DIR}/$BUILD_ID/gitLog.html" + export gitLogFile="${DROP_DIR}/$BUILD_ID/gitLog.json" mkdir -p $(dirname "${gitLogFile}") - echo -e "

Git log from $lastTag (previous) to $BUILD_ID (current)

" > $gitLogFile - echo -e "

The tagging, and this report, were done at about $reportTimestamp

" >> $gitLogFile + echo '{' > $gitLogFile + echo "\\"label\\": \\"${BUILD_ID}\\"," >> $gitLogFile + echo "\\"logFrom\\": \\"${lastTag}\\"," >> $gitLogFile + echo "\\"logTo\\": \\"${BUILD_ID}\\"," >> $gitLogFile + echo "\\"timestamp\\": \\"${reportTimestamp}\\"," >> $gitLogFile + echo "\\"repositories\\": [" >> $gitLogFile >> $gitLogFile function createGitLog() { gitURL=$(git config remote.origin.url | sed --expression 's,git@github.com:,https://github.com/,' | sed 's/\\.git$//') gitName="${gitURL##*/}" - gitLog=$(git log $lastTag..$BUILD_ID --date=short --format=format:"%cd%s%aN") + #TODO: handle potential double-quotes in commit message? + gitLog=$(git log $lastTag..$BUILD_ID --date=short --format=format:"{ \\"date\\": \\"%cd\\", \\"message\\": \\"%s\\", \\"author\\": \\"%aN\\", \\"url\\": \\"${gitURL}/commit/%H\\"},") if [ -n "$gitLog" ]; then echo "Record changes in ${gitName}" - echo "" >> $gitLogFile - echo "" >> $gitLogFile - echo "${gitLog}" >> $gitLogFile - echo "
Repository: ${gitName}
Date Commit message Author


" >> $gitLogFile - echo '' >> $gitLogFile + echo "{" >> $gitLogFile + echo "\\"name\\": \\"${gitName}\\"," >> $gitLogFile + echo "\\"commits\\": [" >> $gitLogFile + echo "${gitLog%,}" >> $gitLogFile + echo "]}," >> $gitLogFile fi } export -f createGitLog createGitLog git submodule foreach 'createGitLog' + + echo "{}]}" >> $gitLogFile # Append empty object to keep JSON valid else echo -e "\n\tGit log not generated because a reasonable previous tag could not be found." > $gitLogFile fi @@ -291,14 +299,18 @@ pipeline { stage('Gather Eclipse parts') { tools { jdk 'temurin-jdk25-latest' - } + } environment { KEYRING = credentials('secret-subkeys-releng.asc') KEYRING_PASSPHRASE = credentials('secret-subkeys-releng.asc-passphrase') } steps { + dir("${DROP_DIR}/${BUILD_ID}") { + script { + utilities.copyStaticWebsiteFiles("${AGG_DIR}", 'eclipse/build') + } + } sh '''#!/bin/bash -xe - mkdir -p ${DROP_DIR}/${BUILD_ID} cp $CJE_ROOT/buildproperties.* ${DROP_DIR}/${BUILD_ID} source $CJE_ROOT/buildproperties.shsource @@ -441,20 +453,12 @@ pipeline { bash ${CJE_ROOT}/scripts/produceChecksum.sh eclipse popd - cp -r ${ECLIPSE_BUILDER_DIR}/eclipse/publishingFiles/staticDropFiles/. ${DROP_DIR}/${BUILD_ID} - java \ - -DisBuildTested=true \ - -DbuildType=${BUILD_TYPE} \ - -DdropTokenList='%repository%,%sdk%,%tests%,%runtime%,%jdtc%,%swt%' \ - -DdropHtmlFileName=index.php \ - -DxmlDirectoryName=${DROP_DIR}/${BUILD_ID}/testresults/xml \ - -DdropDirectoryName=${DROP_DIR}/${BUILD_ID} \ - -DdropTemplateFileName=${ECLIPSE_BUILDER_DIR}/eclipse/publishingFiles/templateFiles/index.template.php \ - -DcompileLogsDirectoryName=${DROP_DIR}/${BUILD_ID}/compilelogs/plugins \ - -DtestManifestFileName=${ECLIPSE_BUILDER_DIR}/eclipse/publishingFiles/testManifest.xml \ - -DtestsConfigExpected=${TEST_CONFIGURATIONS_EXPECTED} \ - ${WORKSPACE}/scripts/releng/TestResultsGenerator.java + -DdropDirectory=${DROP_DIR}/${BUILD_ID} \ + ${SCRIPTS}/releng/BuildDropDataGenerator.java mainEclipse + java \ + -DdropDirectory=${DROP_DIR}/${BUILD_ID} \ + ${SCRIPTS}/releng/CompilerSummaryGenerator.java ''' } } @@ -479,14 +483,18 @@ pipeline { stage('Gather Equinox parts') { tools { jdk 'temurin-jdk25-latest' - } + } environment { KEYRING = credentials('secret-subkeys-releng.asc') KEYRING_PASSPHRASE = credentials('secret-subkeys-releng.asc-passphrase') } steps { + dir("${EQUINOX_DROP_DIR}/${BUILD_ID}") { + script { + utilities.copyStaticWebsiteFiles("${AGG_DIR}", 'equinox/build') + } + } sh '''#!/bin/bash -xe - mkdir -p ${EQUINOX_DROP_DIR}/${BUILD_ID} cp $CJE_ROOT/buildproperties.* ${EQUINOX_DROP_DIR}/${BUILD_ID} source $CJE_ROOT/buildproperties.shsource @@ -518,20 +526,18 @@ pipeline { cat $f done - # Publish Equinox + # Build Equinox Launcher archives pushd $CJE_ROOT mkdir -p $ECLIPSE_BUILDER_DIR/equinox/$TMP_DIR mkdir -p $CJE_ROOT/$TMP_DIR $BASE_BUILDER_ECLIPSE_EXE \ -application org.eclipse.ant.core.antRunner \ - -buildfile $ECLIPSE_BUILDER_DIR/equinox/helper.xml \ + -buildfile ${ECLIPSE_BUILDER_DIR}/equinox/buildConfigs/equinox-launchers/build.xml \ -data $CJE_ROOT/$TMP_DIR/workspace-publishEquinox \ - -DEBuilderDir=$ECLIPSE_BUILDER_DIR \ -DbuildDir=$BUILD_ID \ -DbuildId=$BUILD_ID \ -DbuildRepo=$PLATFORM_REPO_DIR \ -DequinoxPostingDirectory=${EQUINOX_DROP_DIR} \ - -DeqpublishingContent=$ECLIPSE_BUILDER_DIR/equinox/publishingFiles \ -Dequinox.build.configs=$ECLIPSE_BUILDER_DIR/equinox/buildConfigs \ -Djava.io.tmpdir=$CJE_ROOT/$TMP_DIR \ -v \ @@ -542,19 +548,9 @@ pipeline { bash ${CJE_ROOT}/scripts/produceChecksum.sh equinox popd - cp -r ${ECLIPSE_BUILDER_DIR}/equinox/publishingFiles/staticDropFiles/. ${EQUINOX_DROP_DIR}/${BUILD_ID} - java \ - -DisBuildTested=false \ - -DbuildType=${BUILD_TYPE} \ - -DdropTokenList='%equinox%,%framework%,%extrabundles%,%other%,%launchers%,%osgistarterkits%' \ - -DdropHtmlFileName=index.php \ - -DxmlDirectoryName=${DROP_DIR}/$BUILD_ID/testresults/xml \ - -DdropDirectoryName=${EQUINOX_DROP_DIR}/${BUILD_ID} \ - -DdropTemplateFileName=${ECLIPSE_BUILDER_DIR}/equinox/publishingFiles/templateFiles/index.template.php \ - -DcompileLogsDirectoryName=${EQUINOX_DROP_DIR}/${BUILD_ID}/compilelogs/plugins \ - -DtestManifestFileName=${ECLIPSE_BUILDER_DIR}/equinox/publishingFiles/testManifest.xml \ - ${WORKSPACE}/scripts/releng/TestResultsGenerator.java + -DdropDirectory=${EQUINOX_DROP_DIR}/${BUILD_ID} \ + ${SCRIPTS}/releng/BuildDropDataGenerator.java mainEquinox ''' } } @@ -599,6 +595,9 @@ pipeline { } } stage('Archive build logs') { + tools { + jdk 'temurin-jdk25-latest' + } steps { script { // See https://github.com/jenkinsci/pipeline-stage-view-plugin/tree/master/rest-api#get-jobjob-namewfapiruns @@ -607,7 +606,7 @@ pipeline { for (jobStage in description['stages']) { if (jobStage.status != 'IN_PROGRESS') { def prefix = 's' + String.format('%03d', stageIndex++) // prefix with index to establish stable order - def logFileName = "${logDir}/" + prefix + '_' + jobStage.name.replace(' ', '_').replace('Declarative:_', '') + '.log' + def logFileName = "${DROP_DIR}/${BUILD_ID}/buildlogs/" + prefix + '_' + jobStage.name.replace(' ', '_').replace('Declarative:_', '') + '.log' sh """ curl --fail --silent --output '${logFileName}' ${BUILD_URL}/pipeline-overview/log?nodeId=${jobStage.id} # Test (efficiently) if the file starts with the no-logs message and if yes, ensure it doesn't contain more other lines @@ -620,8 +619,10 @@ pipeline { } sshagent(['projects-storage.eclipse.org-bot-ssh']) { sh '''#!/bin/bash -xe - dropPath=${EP_ECLIPSE_DROPS}/${BUILD_ID} - scp -r $logDir/* genie.releng@projects-storage.eclipse.org:${dropPath}/buildlogs/ + java \ + -DdropDirectory=${DROP_DIR}/${BUILD_ID} \ + ${SCRIPTS}/releng/BuildDropDataGenerator.java buildLogs + rsync -avzh ${DROP_DIR}/${BUILD_ID}/buildlogs/ genie.releng@projects-storage.eclipse.org:${EP_ECLIPSE_DROPS}/${BUILD_ID}/buildlogs/ ''' } } diff --git a/JenkinsJobs/Releng/promoteBuild.jenkinsfile b/JenkinsJobs/Releng/promoteBuild.jenkinsfile index 7f8abb63c4a..f0e06b72647 100644 --- a/JenkinsJobs/Releng/promoteBuild.jenkinsfile +++ b/JenkinsJobs/Releng/promoteBuild.jenkinsfile @@ -215,7 +215,6 @@ pipeline { -DnewPrevious-release.baseline="${RELEASE_P2_REPOSITORY}" ''' utilities.replaceAllInFile('cje-production/buildproperties.txt', [ - 'API_PREV_REF_LABEL=".*?"' : "API_PREV_REF_LABEL=\"${BUILD_MAJOR}.${BUILD_MINOR}\"", 'PREVIOUS_RELEASE_VER=".*?"' : "PREVIOUS_RELEASE_VER=\"${BUILD_MAJOR}.${BUILD_MINOR}\"", 'PREVIOUS_RELEASE_REPO_ID=".*?"' : "PREVIOUS_RELEASE_REPO_ID=\"${BUILD_MAJOR}.${BUILD_MINOR}\"", 'BASEBUILD_ID=".*?"' : "BASEBUILD_ID=\"${DL_DROP_ID}\"", @@ -371,11 +370,10 @@ EOF BUILD_ID: "${newBuildLabel}", BUILD_TYPE: "${DL_TYPE}", BUILD_TYPE_NAME: "${newTypeName}", - BUILD_DIR_SEG: "${newDropID}", - EQ_BUILD_DIR_SEG: "${newDropID}", ] def buildPropertiesPHP = sh(returnStdout: true, script: "ssh genie.releng@projects-storage.eclipse.org cat ${sourcePath}/buildproperties.php") for (entry in newProperties) { + //TODO: update this to modify the buildproperties.json with the new names/labels and updated filenames/size(?) buildPropertiesPHP = buildPropertiesPHP.replaceFirst('\\$' + entry.key + ' = "[^"]+"', '\\$' + entry.key + ' = "' + entry.value + '"') } writeFile(file: 'buildproperties.php', text: buildPropertiesPHP) diff --git a/JenkinsJobs/Releng/updateIndex.jenkinsfile b/JenkinsJobs/Releng/updateIndex.jenkinsfile index d51a08ca0e8..3e31f405ab6 100644 --- a/JenkinsJobs/Releng/updateIndex.jenkinsfile +++ b/JenkinsJobs/Releng/updateIndex.jenkinsfile @@ -6,26 +6,174 @@ pipeline { options { skipDefaultCheckout() timestamps() - buildDiscarder(logRotator(numToKeepStr:'10')) + buildDiscarder(logRotator(numToKeepStr:'10', artifactNumToKeepStr: '2')) } agent { label 'basic' } + environment { + GIT_REPO = "${WORKSPACE}/git-repo" + BUILD_SEPARATOR = 'BUILD-SEPARATOR' + // Download server paths + EP_ROOT = '/home/data/httpd/download.eclipse.org' + EP_ECLIPSE_DROPS = "${EP_ROOT}/eclipse/downloads/drops4" + EP_EQUINOX_DROPS = "${EP_ROOT}/equinox/drops" + } stages { - stage('Update index'){ + stage('Update index') { steps { + dir("${GIT_REPO}") { + checkout scmGit(userRemoteConfigs: [[url: "${scm.userRemoteConfigs[0].url}"]], branches: [[name: "${scm.branches[0].name}"]], + extensions: [cloneOption(depth: 1, shallow: true, noTags: true), sparseCheckout([ + [path: 'JenkinsJobs/shared/utilities.groovy'], + [path: 'sites/eclipse'], + [path: 'sites/equinox'], + ])]) + } + script { + def utilities = load "${GIT_REPO}/JenkinsJobs/shared/utilities.groovy" + dir('site-eclipse'){ + utilities.copyStaticWebsiteFiles("${GIT_REPO}", 'eclipse/overview') + } + dir('site-equinox'){ + utilities.copyStaticWebsiteFiles("${GIT_REPO}", 'equinox/overview') + } + def buildDropsData; + sshagent(['projects-storage.eclipse.org-bot-ssh']) { + buildDropsData = sh(script: """ + ssh genie.releng@projects-storage.eclipse.org ' + cd ${EP_ECLIPSE_DROPS} + for drop in \$(ls); do + if [ -d \${drop} ] && [ ! -f \${drop}/buildHidden ]; then + echo "\${drop}" + # Count elements in list of expected tests + grep "^TEST_CONFIGURATIONS_EXPECTED" \${drop}/buildproperties.properties | awk -F= "{print \\\$2}" | grep -o "ep[0-9A-Za-z]*-unit-" | wc -l + # Count number of test-result overview files + find \${drop}/testresults -maxdepth 1 -type f -name "ep*-unit-*.json" | wc -l + # Count number of old-style test-result overview files (still relevant for not yet archived releases) + find \${drop}/testresults -maxdepth 1 -type f -name "ep*-unit-*.xml" | wc -l + if [ -f \${drop}/index.html ]; then + echo "style-new" + else + echo "style-old" + fi + if [ -f \${drop}/buildUnstable ]; then + echo "unstable" + fi + echo "${BUILD_SEPARATOR}" + fi + done + + echo "DROP-TYPES-SEPARATOR" + + cd ${EP_EQUINOX_DROPS} + for drop in \$(ls); do + if [ -d \${drop} ] && [ ! -f \${drop}/buildHidden ]; then + echo "\${drop}" + if [ -f \${drop}/buildUnstable ]; then + echo "unstable" + fi + echo "${BUILD_SEPARATOR}" + fi + done + ' + """.stripIndent(), returnStdout: true) + } + def dropData = buildDropsData.split('DROP-TYPES-SEPARATOR') + def eclipseOverviewData = parseEclipseBuildDrops(dropData[0]) + utilities.writeJSON('site-eclipse/data.json', eclipseOverviewData) + def equinoxOverviewData = parseEquinoxBuildDrops(dropData[1]) + utilities.writeJSON('site-equinox/data.json', equinoxOverviewData) + } sshagent(['projects-storage.eclipse.org-bot-ssh']) { - sh '''#!/bin/bash -xe - PHP_PAGE="createIndex4x.php" - HTML_PAGE="index.html" - TEMP_INDEX="tempIndex.html" - - wget --no-verbose -O ${TEMP_INDEX} https://download.eclipse.org/eclipse/downloads/${PHP_PAGE} 2>&1 - - scp ${TEMP_INDEX} genie.releng@projects-storage.eclipse.org:/home/data/httpd/download.eclipse.org/eclipse/downloads/${HTML_PAGE} + sh ''' + rsync -avzh site-eclipse/. genie.releng@projects-storage.eclipse.org:${EP_ROOT}/eclipse/downloads/ + rsync -avzh site-equinox/. genie.releng@projects-storage.eclipse.org:${EP_ROOT}/equinox/ ''' } } } } + post { + always { + archiveArtifacts artifacts: '**/*', excludes: 'git-repo/**' + } + } +} + +@NonCPS +def parseEclipseBuildDrops(String buildDrops) { + def overview = [releases: [], stableBuilds: [], iBuilds: [], yBuilds: []] + for (dropData in buildDrops.trim().split("${BUILD_SEPARATOR}")) { + if (dropData.isEmpty()) { + continue; + } + def dropDataElements = dropData.trim().split('\\s+') + def String dropID = dropDataElements[0] + def int testsExpected = Integer.parseInt(dropDataElements[1]) + def int testsFinishedNew = Integer.parseInt(dropDataElements[2]) + def int testsFinishedOld = Integer.parseInt(dropDataElements[3]) + def boolean isNewStyleDrop = dropDataElements[4] == 'style-new' + def boolean isUnstable = dropDataElements.length > 5 && dropDataElements[5] == 'unstable' + def drop = createDropEntry(dropID, 'drops4', isUnstable, overview) + drop.testsCompletion = "${ testsFinishedNew + testsFinishedOld } of ${testsExpected}".toString() + drop.testsPath = isNewStyleDrop ? 'tests.html' : 'testResults.php' + } + overview.values().each{ list -> list.sort({d1, d2 -> -d1.label.compareTo(d2.label)})} + return overview +} + +@NonCPS +def parseEquinoxBuildDrops(String buildDrops) { + def overview = [releases: [], stableBuilds: [], iBuilds: [], yBuilds: []] + for (dropData in buildDrops.trim().split("${BUILD_SEPARATOR}")) { + if (dropData.isEmpty()) { + continue; + } + def dropDataElements = dropData.trim().split('\\s+') + def String dropID = dropDataElements[0] + def boolean isUnstable = dropDataElements.length > 1 && dropDataElements[1] == 'unstable' + createDropEntry(dropID, 'drops', isUnstable, overview) + } + overview.values().each{ list -> list.sort({d1, d2 -> -d1.label.compareTo(d2.label)})} + return overview +} + +@NonCPS +def createDropEntry(String dropID, String containerPath, boolean isUnstable, Map overview) { + def drop = [ path: "${containerPath}/${dropID}".toString(), status: isUnstable ? 'unstable' : 'success' ] + if (dropID.startsWith('R-')) { + drop.label = dropID.substring(2, dropID.lastIndexOf('-')) + drop.date = toUTCdateTime(dropID.substring(dropID.lastIndexOf('-') + 1)) + overview.releases += drop + } else if (dropID.startsWith('S-')) { + drop.label = dropID.substring(2, dropID.lastIndexOf('-')) + drop.date = toUTCdateTime(dropID.substring(dropID.lastIndexOf('-') + 1)) + overview.stableBuilds += drop + } else if (dropID.startsWith('I20')) { + drop.label = dropID + drop.date = toUTCdateTime(dropID.substring(1).replace('-', '')) + overview.iBuilds += drop + } else if (dropID.startsWith('Y20')) { + drop.label = dropID + drop.date = toUTCdateTime(dropID.substring(1).replace('-', '')) + overview.yBuilds += drop + } + return drop +} + +@NonCPS +def toUTCdateTime(String dateTime) { + if (dateTime.length() != 12) { + throw new IllegalArgumentException('Not an expected date-time string: ' + dateTime) + } + def int year = Integer.parseInt(dateTime.substring(0, 4)) + def int month = Integer.parseInt(dateTime.substring(4, 6)) + def int day = Integer.parseInt(dateTime.substring(6, 8)) + def int hour = Integer.parseInt(dateTime.substring(8, 10)) + def int minute = Integer.parseInt(dateTime.substring(10, 12)) + return java.time.LocalDateTime.of(year, month, day, hour, minute) + .atZone(java.time.ZoneId.of("America/New_York")) + .withZoneSameInstant(java.time.ZoneOffset.UTC) + .toLocalDateTime().toString() + 'Z'; } diff --git a/JenkinsJobs/Releng/updateTestResultIndex.jenkinsfile b/JenkinsJobs/Releng/updateTestResultIndex.jenkinsfile deleted file mode 100644 index dd9c7f0c544..00000000000 --- a/JenkinsJobs/Releng/updateTestResultIndex.jenkinsfile +++ /dev/null @@ -1,68 +0,0 @@ -// Constants read by job creation -private static final _JOB_DESCRIPTION = 'Performs some summary analysis and writes unit test results to the download page.' - -pipeline { - options { - skipDefaultCheckout() - timestamps() - timeout(time: 30, unit: 'MINUTES') - buildDiscarder(logRotator(numToKeepStr:'15')) - disableConcurrentBuilds() - } - parameters { - string(name: 'buildID', trim: true, description: 'ID of the I-build being tested.') - } - agent { - label 'basic' - } - tools { - jdk 'temurin-jdk25-latest' - } - stages { - stage('Checkout SCM') { - steps { - dir("${WORKSPACE}/git-repo") { - checkout scmGit(userRemoteConfigs: [[url: "${scm.userRemoteConfigs[0].url}"]], branches: [[name: "${scm.branches[0].name}"]], - extensions: [cloneOption(depth: 1, shallow: true, noTags: true), sparseCheckout([ - [path: 'scripts/releng/'], - [path: 'eclipse.platform.releng.tychoeclipsebuilder/eclipse/publishingFiles/testManifest.xml'], - ])]) - } - } - } - stage('Update test results'){ - environment { - // Download Server locations (seldomly change) - EP_ECLIPSE_DROPS = '/home/data/httpd/download.eclipse.org/eclipse/downloads/drops4' - } - steps { - sshagent(['projects-storage.eclipse.org-bot-ssh']) { - sh '''#!/bin/bash -xe - - curl -L -o "${WORKSPACE}/buildproperties.shsource" http://download.eclipse.org/eclipse/downloads/drops4/${buildID}/buildproperties.shsource - source "${WORKSPACE}/buildproperties.shsource" - - buildDirectory="${WORKSPACE}/postingDir/${buildID}" - testResultsDir="${buildDirectory}/testresults" - mkdir -p "${testResultsDir}" - - # Fetch previously collected test results of all completed runs - rsync -avzh genie.releng@projects-storage.eclipse.org:${EP_ECLIPSE_DROPS}/${buildID}/testresults/xml ${testResultsDir} - - java \ - -DisBuildTested=true \ - -DbuildType=${BUILD_TYPE} \ - -DdropDirectoryName=${buildDirectory} \ - -DxmlDirectoryName=${buildDirectory}/testresults/xml \ - -DtestManifestFileName=${WORKSPACE}/git-repo/eclipse.platform.releng.tychoeclipsebuilder/eclipse/publishingFiles/testManifest.xml \ - -DtestsConfigExpected=${TEST_CONFIGURATIONS_EXPECTED} \ - ${WORKSPACE}/git-repo/scripts/releng/TestResultsGenerator.java - - rsync -avzh ${buildDirectory} genie.releng@projects-storage.eclipse.org:${EP_ECLIPSE_DROPS} - ''' - } - build job: 'Releng/updateIndex', wait: false - } - } - } -} diff --git a/JenkinsJobs/shared/utilities.groovy b/JenkinsJobs/shared/utilities.groovy index 1d78432c57f..f2853f3995c 100644 --- a/JenkinsJobs/shared/utilities.groovy +++ b/JenkinsJobs/shared/utilities.groovy @@ -24,10 +24,39 @@ def replaceAllInFile(String filePath, Map replacements) { def modifyJSON(String jsonFilePath, Closure transformation) { def json = readJSON(file: jsonFilePath) transformation.call(json) + writeJSON(jsonFilePath, json) +} + +def writeJSON(String jsonFilePath, def json) { // This leads to prettier results than using the writeJSON() step, even with the pretty parameter set. writeFile(file: jsonFilePath, text: JsonOutput.prettyPrint(JsonOutput.toJson(json)).replace(' ','\t'), encoding :'UTF-8') } +// --- website generation --- + +def copyStaticWebsiteFiles(String gitRoot, String website) { + def pathToReplace; + if (website.startsWith('eclipse')) { + pathToReplace = '..' + } else if (website.startsWith('equinox')) { + pathToReplace = '../../eclipse' + } else { + error("Unknown website: ${website}") + } + sh """#!/bin/bash -xe + cp -r ${gitRoot}/sites/${website}/. . + + # Copy the share files into this the current stite to make each site self-contained + cp ${gitRoot}/sites/eclipse/page.css . + cp ${gitRoot}/sites/eclipse/page.js . + # Replace references to shared java-script/css files to contained files + find . -type f -name "*.html" -exec sed --in-place \ + --expression='s|${pathToReplace}/page.js">|page.js">|g' \ + --expression='s|${pathToReplace}/page.css" />|page.css" />|g' \ + {} + + """ +} + // --- git operations --- def runHereAndForEachGitSubmodule(Closure task) { diff --git a/cje-production/buildproperties.txt b/cje-production/buildproperties.txt index a887ed0ecc4..ab1a9733831 100644 --- a/cje-production/buildproperties.txt +++ b/cje-production/buildproperties.txt @@ -28,9 +28,6 @@ BUILD_TO_COMPARE_SITE="ftp.osuosl.org/pub/eclipse/eclipse/updates" LOCAL_REPO="localMavenRepo" NEXT_JAVA_RELEASE_DATE="2026-03-17" -# Base builder parameters -API_PREV_REF_LABEL="4.38" - PREVIOUS_RELEASE_VER="4.38" PREVIOUS_RELEASE_REPO_ID="4.38" #build id for getting repo diff --git a/cje-production/mbscripts/mb010_createEnvfiles.sh b/cje-production/mbscripts/mb010_createEnvfiles.sh index d56df657cb3..c0d97f7602f 100755 --- a/cje-production/mbscripts/mb010_createEnvfiles.sh +++ b/cje-production/mbscripts/mb010_createEnvfiles.sh @@ -75,7 +75,5 @@ fn-addToPropFiles BUILD_ENV_FILE_PROP "\"$BUILD_ENV_FILE_PROP\"" fn-addToPropFiles BUILD_TYPE "\"${BUILD_TYPE}\"" fn-addToPropFiles BUILD_TYPE_NAME "\"${BUILD_TYPE_NAME}\"" fn-addToPropFiles BUILD_ID "\"$BUILD_TYPE$TIMESTAMP\"" -fn-addToPropFiles BUILD_DIR_SEG "\"$BUILD_TYPE$TIMESTAMP\"" -fn-addToPropFiles EQ_BUILD_DIR_SEG "\"$BUILD_TYPE$TIMESTAMP\"" fn-addToPropFiles ECLIPSE_BUILDER_DIR "\"$AGG_DIR/eclipse.platform.releng.tychoeclipsebuilder\"" fn-addToPropFiles TEST_CONFIGURATIONS_EXPECTED "\"${TEST_CONFIGURATIONS_EXPECTED}\"" diff --git a/eclipse.platform.releng.tychoeclipsebuilder/eclipse/publishingFiles/staticDropFiles/DL.thin.header.php.html b/eclipse.platform.releng.tychoeclipsebuilder/eclipse/publishingFiles/staticDropFiles/DL.thin.header.php.html deleted file mode 100644 index 8cb6c2819ce..00000000000 --- a/eclipse.platform.releng.tychoeclipsebuilder/eclipse/publishingFiles/staticDropFiles/DL.thin.header.php.html +++ /dev/null @@ -1,141 +0,0 @@ - - - - - - - - - - - - -<?= $pageTitle; ?> - - - - - - - - - - - - - - - Skip to main content - -
-
-
- -
-
-
- - -
-

- Back to the top -

\ No newline at end of file diff --git a/eclipse.platform.releng.tychoeclipsebuilder/eclipse/publishingFiles/staticDropFiles/FAIL.gif b/eclipse.platform.releng.tychoeclipsebuilder/eclipse/publishingFiles/staticDropFiles/FAIL.gif deleted file mode 100644 index 73d7516efb8d13642709fa2db0105980879c7cff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 70 zcmZ?wbhEHblw^=%Sjfy^bk>OBKSM#ogcpLQia%KxxfqxkbQpjDB+tMkKBs@>>9_og Y=WMyvz4_jr-~4TlJf=PC6lJgm0IX^kQ2+n{ diff --git a/eclipse.platform.releng.tychoeclipsebuilder/eclipse/publishingFiles/staticDropFiles/FAIL_ORIG.gif b/eclipse.platform.releng.tychoeclipsebuilder/eclipse/publishingFiles/staticDropFiles/FAIL_ORIG.gif deleted file mode 100644 index 28bba66102ac4ac61b628b4611a4cb0e15f40e23..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 117 zcmV-*0E+)dNk%w1VG{rs0HFW?{{R4RfRMkxzW@LLA^8LW00062EC2ui022Tg0006; zl#i*vtkO~gL9$TM%~l*2MO9D*ymHr5-Gv diff --git a/eclipse.platform.releng.tychoeclipsebuilder/eclipse/publishingFiles/staticDropFiles/NONE-FAIL.gif b/eclipse.platform.releng.tychoeclipsebuilder/eclipse/publishingFiles/staticDropFiles/NONE-FAIL.gif deleted file mode 100644 index 22ad3ee2415964806e46174a4bd93e9ed4bc44a4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 79 zcmZ?wbhEHb6lM@-XkcWpU1H0?z@Ye(g^_`QkwFK@W&p`BFsb$QuRQ&he=+lxru5>| gH6Pd4#42T_M7C-yU8no%pigJ-rQYYi;usjL0Rb%;Z2$lO diff --git a/eclipse.platform.releng.tychoeclipsebuilder/eclipse/publishingFiles/staticDropFiles/NONE-OK.gif b/eclipse.platform.releng.tychoeclipsebuilder/eclipse/publishingFiles/staticDropFiles/NONE-OK.gif deleted file mode 100644 index 22ad3ee2415964806e46174a4bd93e9ed4bc44a4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 79 zcmZ?wbhEHb6lM@-XkcWpU1H0?z@Ye(g^_`QkwFK@W&p`BFsb$QuRQ&he=+lxru5>| gH6Pd4#42T_M7C-yU8no%pigJ-rQYYi;usjL0Rb%;Z2$lO diff --git a/eclipse.platform.releng.tychoeclipsebuilder/eclipse/publishingFiles/staticDropFiles/OK.gif b/eclipse.platform.releng.tychoeclipsebuilder/eclipse/publishingFiles/staticDropFiles/OK.gif deleted file mode 100644 index 73d7516efb8d13642709fa2db0105980879c7cff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 70 zcmZ?wbhEHblw^=%Sjfy^bk>OBKSM#ogcpLQia%KxxfqxkbQpjDB+tMkKBs@>>9_og Y=WMyvz4_jr-~4TlJf=PC6lJgm0IX^kQ2+n{ diff --git a/eclipse.platform.releng.tychoeclipsebuilder/eclipse/publishingFiles/staticDropFiles/OK_ORIG.gif b/eclipse.platform.releng.tychoeclipsebuilder/eclipse/publishingFiles/staticDropFiles/OK_ORIG.gif deleted file mode 100644 index 689e5234f3b0879eeb1d5ead2cc2ad022d2831be..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 139 zcmV;60CfLHNk%w1VHp4#0HFW?GR-mo{{V1+kiWmbA^8LW00093EC2ui02u%p00079 zoR6u?JrSII0f@;UuvqDRb;oCgA}ORIwUugzrX~d~@jJE=a?fmQBDp**&_yV-6-&q@ tu_$Qb5|yIV$6GFC*sRt#RergX>eeYS1JPwD8zTUBC)_zayvidA06Ww9GiLw* diff --git a/eclipse.platform.releng.tychoeclipsebuilder/eclipse/publishingFiles/staticDropFiles/buildlogs.php b/eclipse.platform.releng.tychoeclipsebuilder/eclipse/publishingFiles/staticDropFiles/buildlogs.php deleted file mode 100644 index 2c65c6da615..00000000000 --- a/eclipse.platform.releng.tychoeclipsebuilder/eclipse/publishingFiles/staticDropFiles/buildlogs.php +++ /dev/null @@ -1,121 +0,0 @@ - - - - -read()) { - $path = $cdir . "/" . $myDir . "/" . $anEntry; - if (is_file($path)) { - $entries[$index] = $anEntry; - $index++; - } - } - - $aDirectory->close(); - if (!empty($entries)) { - sort($entries); - } - - if ($index < 0) { - echo "
There are no logs for this build."; - return; - } - echo "
    "; - for ($i = 0; $i < $index; $i++) { - $anEntry = $entries[$i]; - $label = $anEntry; - if ($filterNames) { - if (strpos($anEntry, 's') !== 0) { - continue; - } - $label = preg_replace('/^s\d+|\.log$/', '', $anEntry); - $label = str_replace('_', ' ', $label); - } - $line = "$label " . fileSizeForDisplay("$myDir/$anEntry"); - echo "
  • $line
  • "; - } - echo "
"; -} - - -?> - - - -Drop Test Results - - - - - - - - - - - - - - -
-

Release Engineering logs for

-
-

Build Properties for

-

Key Maven Properties

-

Other Build Properties

-

Release Engineering Logs for

- - - -

Comparator Logs for

-

For explaination, see Platform Build Comparator Logs wiki.

- -

For an archive of all relevant baseline-versus-current build artifact byte codes download and 'diff' matching files of - artifact comparisons.

- - -
-
- - - - diff --git a/eclipse.platform.releng.tychoeclipsebuilder/eclipse/publishingFiles/staticDropFiles/compilerSummaryPending.html b/eclipse.platform.releng.tychoeclipsebuilder/eclipse/publishingFiles/staticDropFiles/compilerSummaryPending.html deleted file mode 100644 index 5d265e2a548..00000000000 --- a/eclipse.platform.releng.tychoeclipsebuilder/eclipse/publishingFiles/staticDropFiles/compilerSummaryPending.html +++ /dev/null @@ -1,7 +0,0 @@ - -
-

This section will (eventually) show compile errors or warnings. -Once the build is complete and the logs processed.

-
diff --git a/eclipse.platform.releng.tychoeclipsebuilder/eclipse/publishingFiles/staticDropFiles/computeRepoURLs.php b/eclipse.platform.releng.tychoeclipsebuilder/eclipse/publishingFiles/staticDropFiles/computeRepoURLs.php deleted file mode 100644 index 49a60a398c8..00000000000 --- a/eclipse.platform.releng.tychoeclipsebuilder/eclipse/publishingFiles/staticDropFiles/computeRepoURLs.php +++ /dev/null @@ -1,103 +0,0 @@ -\n"; - // We will make an assumption that might work. - $STREAM_REPO_NAME=$STREAM_MAJOR.".".$STREAM_MINOR."-".$BUILD_TYPE."-"."builds"; - } - } - } - } - } - return $STREAM_REPO_NAME; -} - -function computeSTREAM_REPO_URL () { - $STREAM_REPO_URL="https://download.eclipse.org/eclipse/updates/".computeSTREAM_REPO_NAME ()."/"; - return $STREAM_REPO_URL; -} - -function computeBUILD_REPO_NAME () { - global $BUILD_ID, $BUILD_TYPE, $TIMESTAMP ; - // There are two types of M builds, some RCs, some not. - if ($BUILD_TYPE === "N" || $BUILD_TYPE === "I" || $BUILD_TYPE === "P" || $BUILD_TYPE === "U" || $BUILD_TYPE === "X" || $BUILD_TYPE === "Y" || $BUILD_TYPE === "M" && ! ((isSRRC($BUILD_ID)) || isRRC($BUILD_ID))) { - $BUILD_REPO_NAME=computeSTREAM_REPO_NAME ()."/".$BUILD_ID; - } else { - if ($BUILD_TYPE === "S") { - $BUILD_REPO_NAME=computeSTREAM_REPO_NAME ()."/"."I"."$TIMESTAMP"; - } else { - $timestamp = str_replace('-', '', $TIMESTAMP); - if ($BUILD_TYPE === "R" || ($BUILD_TYPE === "M" && (isSRRC($BUILD_ID) || isRRC($BUILD_ID)))) { - $BUILD_REPO_NAME=computeSTREAM_REPO_NAME ()."/".$BUILD_TYPE."-".$BUILD_ID."-"."$timestamp"; - } else { - echo "Unexpected value of BUILD_TYPE: $BUILD_TYPE.
\n"; - // We will make an assumption that might work. - $BUILD_REPO_NAME=computeSTREAM_REPO_NAME ()."/".$BUILD_ID; - } - } - } - return $BUILD_REPO_NAME; -} -function computeBUILD_REPO_URL () { - $BUILD_REPO_URL="https://download.eclipse.org/eclipse/updates/".computeBUILD_REPO_NAME()."/"; - return $BUILD_REPO_URL; -} - diff --git a/eclipse.platform.releng.tychoeclipsebuilder/eclipse/publishingFiles/staticDropFiles/download.php b/eclipse.platform.releng.tychoeclipsebuilder/eclipse/publishingFiles/staticDropFiles/download.php deleted file mode 100644 index 7c17b9406e1..00000000000 --- a/eclipse.platform.releng.tychoeclipsebuilder/eclipse/publishingFiles/staticDropFiles/download.php +++ /dev/null @@ -1,152 +0,0 @@ - - -Eclipse Download Click Through - - - $edpos) { - $dropsuffix=substr($refurl,$edpos,($bidpos - $edpos -1)); - } - } - } - return $dropsuffix; -} - - -if (array_key_exists("SERVER_NAME", $_SERVER)) { - $servername = $_SERVER["SERVER_NAME"]; - if ($servername === "build.eclipse.org") { - // leave relative - $dlprefix=""; - } else { - // if not on build.elcipse.org, assume we are on downloads. - // we "compute" based on matching /eclipse/downloads/*/$BUILD_ID in the request URI. - // we want the /eclipse/downloads/* part, such as - // /eclipse/downloads/drops4, or - // /eclipse/downloads/drops, or - // function can return empty string - $refurl=$_SERVER["REQUEST_URI"]; - // We expect $BUILD_ID to be defined in buildproperties.php - // But it can be defined several times in reference URI, such as once in directory name, - // and once in filename. We want the directory-like part. - // And to complicate things, in S and R builds, the segment is no longer BUILD_ID, - // but a more complicated concatination. And M builds even more complicated, since - // there are two types, some are "RCs", and some not. - - $pos = strpos($BUILD_ID, "RC"); - if ($pos === false) { - $isRC = false; - } else { - $isRC = true; - } - - if ($BUILD_TYPE === "N" || $BUILD_TYPE === "I" || $BUILD_TYPE === "P" || $BUILD_TYPE === "U" || $BUILD_TYPE === "X" || $BUILD_TYPE === "Y" || ($BUILD_TYPE === "M" && ! $isRC)) { - $BUILD_DIR_NAME = $BUILD_ID; - } else { - if ($BUILD_TYPE === "R" || $BUILD_TYPE === "S" || $BUILD_TYPE === "P" || $BUILD_TYPE === "U" || $BUILD_TYPE === "X" || $BUILD_TYPE === "Y" || ($BUILD_TYPE === "M" && $isRC)) { - $timestamp = str_replace('-', '', $TIMESTAMP); - $BUILD_DIR_NAME = $BUILD_TYPE."-".$BUILD_ID."-".$timestamp; - } else { - echo "Unexpected value of BUILD_TYPE: $BUILD_TYPE.
"; - // We'll make an assumption that might work. - $BUILD_DIR_NAME = $BUILD_ID; - } - } - $dlprefix=computeMirrorKey($refurl,$BUILD_DIR_NAME."/"); - } -} -else { - // not sure what to put here (we are essentially not running on a host?) - // we _might_ need to assume "downloads" here, for "convert to html to work?" - // or, on build machine? - $servername=localhost; -} - -$script = $_SERVER['SCRIPT_NAME']; -$patharray = pathinfo($_SERVER['SCRIPT_NAME']); -$path = $patharray['dirname']; -$buildLabel = array_pop(split("/",$path,-1)); -// this script should nearly always have a query string, -// but we check, to avoid warning when testing -if (array_key_exists("QUERY_STRING", $_SERVER)) { - $qstring = $_SERVER['QUERY_STRING']; - $dropFile=array_pop(split("=",$qstring,-1)); -} - - -$mirror=true; -if (strstr($servername,"eclipse.org")) { - $mirror=false; - $eclipselink="https://www.eclipse.org/downloads/download.php?file="."$dlprefix/$buildLabel/$dropFile"; -} else { - $mirrorlink = "https://$servername$path/$dropFile"; -} - -$clickFile = "clickThroughs/"; -$clickFileName = str_replace("-$BUILD_ID","",$dropFile); -$clickFile = $clickFile.$clickFileName.".txt"; - -if (file_exists($clickFile)) { - $fileHandle = fopen($clickFile, "r"); - while (!feof($fileHandle)) { - $aLine = fgets($fileHandle, 4096); - $result = $result.$aLine; - } - fclose($fileHandle); -} else { - if ($mirror) { - echo ''; - echo 'Downloading: '.$mirrorlink.''; - } else { - echo ''; - echo 'Downloading: '.$eclipselink.''; - } - echo '
'; - echo '
'; - if ($mirror) { - echo 'If your download does not begin automatically click here.'; - } else { - echo 'If your download does not begin automatically click here.'; - } -} -?> - - - -Important Notes
'; - echo '

-

It is very important to read the following notes in order to run this version - of Eclipse. Once you have read the notes you can click on the Download link - to download the drop.

- '; - echo ''; - echo '
'; - echo '
'; - - if ($mirror) { - echo 'Download'; - } else { - echo 'Download'; - } - - echo ""; - echo ""; -} -?> - - diff --git a/eclipse.platform.releng.tychoeclipsebuilder/eclipse/publishingFiles/staticDropFiles/dropSectionUtils.php b/eclipse.platform.releng.tychoeclipsebuilder/eclipse/publishingFiles/staticDropFiles/dropSectionUtils.php deleted file mode 100644 index 40dbf2173e7..00000000000 --- a/eclipse.platform.releng.tychoeclipsebuilder/eclipse/publishingFiles/staticDropFiles/dropSectionUtils.php +++ /dev/null @@ -1,64 +0,0 @@ -"; - return; -} - -// The 'col-md-n' classes refer to Bootstraps grid system, and must total 12. -// See http://www.w3schools.com/bootstrap/bootstrap_grid_system.asp -// and especially http://donnapeplinskie.com/using-tables-with-bootstrap-grids/ -function columnHeads() { - echo "Platform"; - echo "Download"; - echo "Size"; - //echo "Checksum"; - return; -} - -function getDropSize($zipfile) { - - $filesize = "N/A"; - if (file_exists($zipfile)) - { - $filesizebytes = filesize($zipfile); - if($filesizebytes > 0) { - if($filesizebytes < 1048576) { - $filesize = round($filesizebytes / 1048576, 2) . " MB"; - } elseif ($filesizebytes >= 1048576 && $filesizebytes < 10485760) { - $filesize = round($filesizebytes / 1048576, 1) . " MB"; - } else { - $filesize = round($filesizebytes / 1048576, 0) . " MB"; - } - } - } - return($filesize); -} - -// This function is generated "in line" by the "index" custom ant task. -// Hence, must "stay coordinated" with what is there. -function genLinks($zipfile) { - - global $clickthroughstr; - global $BUILD_DIR_SEG; - - $filetarget = "$clickthroughstr$zipfile"; - if (file_exists("./buildUnstable")) - { - $filelink = "\"Build$zipfile"; - } else { - $filelink = "$zipfile"; - } - $filesize = getDropSize($zipfile); - - echo "$filelink\n"; - echo "$filesize\n"; - // TODO: investgate using https:// to Eclipse Foundation's database of checksums - // TODO: can make some future variables so it has one value on "build" server, and another value on - // downloads, such as in buildproperties.php (value would get changed in "promtoe" script). - // Also handy/needed when doing "local test builds". - // Remember, md5 and sha1 are still in "checksum" directory, for at least initial Luna release, just not linked to. See bug - // https://bugs.eclipse.org/bugs/show_bug.cgi?id=423714 - // echo "[SHA512]"; -} - diff --git a/eclipse.platform.releng.tychoeclipsebuilder/eclipse/publishingFiles/staticDropFiles/eclipseDownloadPage.css b/eclipse.platform.releng.tychoeclipsebuilder/eclipse/publishingFiles/staticDropFiles/eclipseDownloadPage.css deleted file mode 100644 index 402ca70f630..00000000000 --- a/eclipse.platform.releng.tychoeclipsebuilder/eclipse/publishingFiles/staticDropFiles/eclipseDownloadPage.css +++ /dev/null @@ -1,70 +0,0 @@ -h1, h2, h3, h4, h5, h6 { - line-height: 1; - /* font-size: 12px; */ - font-weight: bold; -} - -h1 { - font-size: 18px; -} - -h2 { - font-size: 16px; -} - -h3 { - font-size: 14px; - background-color: #9999CC; - clear: both; - width: 90%; - padding: 2px 2px 2px 2px; -} - -table.testTable { - border-collapse: collapse; - border: 1px solid black; - width: 90%; -} - -.testTable caption { - padding: 6px 2px 6px 2px; -} - -.testTable th { - text-align: center; - padding: 2px; - border: 1px solid black; -} - -.testTable td { - text-align: right; - padding: 2px; - border: 1px solid black; -} - -div.dropSection { - clear: both; - width: 90%; - margin-left: 5%; - margin-right: 5%; -} - -div.dropSection h3 { - margin-left: 5%; - margin-right: 5%; -} - -table.dropSection { - width: 80%; - margin-left: 10%; - margin-right: 10%; - border-collapse: collapse; - border-spacing: 1px; -} - -td, th { - line-height: 1; - padding: 1px; - text-align: left; - vertical-align: top; -} \ No newline at end of file diff --git a/eclipse.platform.releng.tychoeclipsebuilder/eclipse/publishingFiles/staticDropFiles/eclipseDownloadPage.js b/eclipse.platform.releng.tychoeclipsebuilder/eclipse/publishingFiles/staticDropFiles/eclipseDownloadPage.js deleted file mode 100644 index 7a04dbc9676..00000000000 --- a/eclipse.platform.releng.tychoeclipsebuilder/eclipse/publishingFiles/staticDropFiles/eclipseDownloadPage.js +++ /dev/null @@ -1,17 +0,0 @@ - - sfHover = function() { - var sfEls = document.getElementById("leftnav").getElementsByTagName( - "li"); - for (var i = 0; i < sfEls.length; i++) { - sfEls[i].onmouseover = function() { - this.className += " sfhover"; - } - sfEls[i].onmouseout = function() { - this.className = this.className.replace(new RegExp( - " sfhover\\b"), ""); - } - } - } - if (window.attachEvent) - window.attachEvent("onload", sfHover); - diff --git a/eclipse.platform.releng.tychoeclipsebuilder/eclipse/publishingFiles/staticDropFiles/gitLog.php b/eclipse.platform.releng.tychoeclipsebuilder/eclipse/publishingFiles/staticDropFiles/gitLog.php deleted file mode 100644 index f804c42f805..00000000000 --- a/eclipse.platform.releng.tychoeclipsebuilder/eclipse/publishingFiles/staticDropFiles/gitLog.php +++ /dev/null @@ -1,58 +0,0 @@ -$BUILD_ID
  • Git Log
  • "; - -require("DL.thin.header.php.html"); - -?> - - - - -Git Log for ".$BUILD_ID; -echo "".PHP_EOL; -echo "
    "; -if (file_exists("gitLog.html")) { - $log_file = file_get_contents("gitLog.html"); - echo "$log_file"; -} -?> - -
    -
    - - - diff --git a/eclipse.platform.releng.tychoeclipsebuilder/eclipse/publishingFiles/staticDropFiles/gitLogSection.css b/eclipse.platform.releng.tychoeclipsebuilder/eclipse/publishingFiles/staticDropFiles/gitLogSection.css deleted file mode 100644 index 8073de5d469..00000000000 --- a/eclipse.platform.releng.tychoeclipsebuilder/eclipse/publishingFiles/staticDropFiles/gitLogSection.css +++ /dev/null @@ -1,111 +0,0 @@ -div.gitLogSection { - clear: both; - width: 100%; -} - -div.gitLogSection P { - text-indent: 30pt; - margin: inherit; -} - -div.gitLogSection table { - border-collapse: collapse; - background-color: #d9d9d9; - margin-top: 20px; - margin-bottom: 20px; - margin-right: 2%; - margin-left: 2%; - border: 1px solid black; - width: 96%; -} - -div.gitLogSection table tr { - border-bottom: 1px solid black; - background-color: #ffffff; - color: black; -} - -div.gitLogSection th { - background-color: #9999CC; -} - -div.gitLogSection h2, div.gitLogSection h3 { - margin-left: 5%; - margin-right: 5%; -} - -div.gitLogSection table tr:nth-child(even) { - background-color: #ededed -} -/* hover must come after "stripped" to have desired effect. */ -div.gitLogSection table tr:hover { - background-color: #a3a3e5; -} - -div.gitLogSection table th, div.gitLogSection table td { - padding: 1px 5px; -} - -div.gitLogSection table th.cell { - text-align: left; - color: black; -} - -div.gitLogSection table td.cell { - text-align: left; - width: 15em; - color: black; -} - -div.gitLogSection table th.datecell { - text-align: left; - color: black; -} - -div.gitLogSection table td.datecell { - text-align: left; - color: black; - width: 15%; - text-overflow: ellipsis; -} - -div.gitLogSection table th.authorcell { - text-align: left; - color: black; -} - - -div.gitLogSection table td.authorcell { - text-align: left; - width: 15%; - color: black; - text-overflow: ellipsis; -} - -div.gitLogSection table th.commitcell { - text-align: left; - color: black; -} - -div.gitLogSection table td.commitcell { - text-align: left; - width: 70%; - color: black; - overflow: hidden; - display: inline-block; - white-space: nowrap; - text-overflow: ellipsis; -} - -div.gitLogSection table td.errorcell { - text-align: left; - width: 15em; - color: red; -} - -div.gitLogSection table td.namecell { - text-align: left; - width: 30em; - color: black; - white-space: nowrap; -} diff --git a/eclipse.platform.releng.tychoeclipsebuilder/eclipse/publishingFiles/staticDropFiles/images/light.gif b/eclipse.platform.releng.tychoeclipsebuilder/eclipse/publishingFiles/staticDropFiles/images/light.gif deleted file mode 100644 index 542dddca3f29bc0bdb8149eafc372c37c6a0b1fd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 553 zcmZ?wbhEHb6krfwc*el+;?-NPgsN@(PDB;;v`t$vZ_S?7+YUt*b*ESMRCdjoxNy^+ zqvz@-E{?38nO4$}K5a+#g2M?_U4MT){QhRHQL#98EnEyO#{^Q=1ANQyId$#27%ME{DZvOjf z+xLTJ-){E*xIO9b(={Kr>VMdz_j!lm=beUMFL!*u*7NV_ns@7TK5W$ca<2Ky`PP?< zHC`>ze6>{b^$M-GtF-?=+4vs}7=|oR{K>+|z~IQB1M&eVP8itR8XTLN9W5;^TRNMJ zt$KTnyP8a_rR=9k*_ceUl~*^_GgX(j?b5Z=($rAY(A2Wi?Nl|BmXVW{laV%4?Nl=t zmk<&Wk`Omg>(Un%l@yZ{71p1qW8`q{n&HGI1*PlS3b&e+ud6(4;$`LHVSeVw@4&#s a{#L+&o9**6K^9I9zPFA{93dhc4AuZ>ez)NO diff --git a/eclipse.platform.releng.tychoeclipsebuilder/eclipse/publishingFiles/staticDropFiles/images/more.gif b/eclipse.platform.releng.tychoeclipsebuilder/eclipse/publishingFiles/staticDropFiles/images/more.gif deleted file mode 100644 index dec0ebc1f250ef74e64e9e6e0107a0819662d12a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 64 zcmZ?wbhEHb%GpFHWH-~G^u LH$tR>7#OSp8_yE> diff --git a/eclipse.platform.releng.tychoeclipsebuilder/eclipse/publishingFiles/staticDropFiles/logPhpUtils.php b/eclipse.platform.releng.tychoeclipsebuilder/eclipse/publishingFiles/staticDropFiles/logPhpUtils.php deleted file mode 100644 index 115de7019bb..00000000000 --- a/eclipse.platform.releng.tychoeclipsebuilder/eclipse/publishingFiles/staticDropFiles/logPhpUtils.php +++ /dev/null @@ -1,88 +0,0 @@ -read()) { - $path = $cdir . "/" . $myDir . "/" . $anEntry; - # if ((is_file($path)) && (preg_match("/.txt/i", $path))) { - $c = checkFile($path); - if ($c == 1) { - $entries[$index] = $anEntry; - $index++; - } - } - - $aDirectory->close(); - if (count($entries) > 0) { - sort($entries); - } - - if ($index < 0) { - echo "

    There are no test logs for this build.

    \n"; - return; - } - echo "
      \n"; - for ($i = 0; $i < $index; $i++) { - $anEntry = $entries[$i]; - $updateLine = 0; - $updateLine = checkPlatform($anEntry); - if (($updateLine == 0) && (preg_match("/\//",$myDir))) { - $linktext = $myDir . "_" . $anEntry; - # remove the directory name from the link to the log - $dir = substr(strrchr($linktext, "/"), 1); - $line = "".$dir." " . fileSizeForDisplay("$myDir/$anEntry"); - - } else { - $line = "".$anEntry." " . fileSizeForDisplay("$myDir/$anEntry"); - } - echo "
    • $line
    • \n"; - } - echo "
    \n"; -} - -function listDetailedLogs ($testresults, $machineplatform) { - if (file_exists("$testresults/$machineplatform")) { - echo "

    Individual $machineplatform test logs

    \n"; - listLogs("$testresults/$machineplatform"); - } - if (file_exists("$testresults/$machineplatform/crashlogs")) { - echo "

    Crash logs captured on $machineplatform

    \n"; - listLogs("$testresults/$machineplatform/crashlogs"); - } - if (file_exists("$testresults/$machineplatform/timeoutScreens")) { - echo "

    Screen captures for tests timing out on $machineplatform

    \n"; - listLogs("$testresults/$machineplatform/timeoutScreens"); - } - if (file_exists("$testresults/$machineplatform/directorLogs")) { - echo "

    p2 director logs while installing tests on $machineplatform

    \n"; - listLogs("$testresults/$machineplatform/directorLogs"); - } -} diff --git a/eclipse.platform.releng.tychoeclipsebuilder/eclipse/publishingFiles/staticDropFiles/logs.php b/eclipse.platform.releng.tychoeclipsebuilder/eclipse/publishingFiles/staticDropFiles/logs.php deleted file mode 100644 index e14e97974ad..00000000000 --- a/eclipse.platform.releng.tychoeclipsebuilder/eclipse/publishingFiles/staticDropFiles/logs.php +++ /dev/null @@ -1,66 +0,0 @@ - - - - - - - - - - - -Test Logs for <?= $BUILD_ID ?> - - - - - - - - -
    -

    Unit Test Logs for

    -
    - -

    Console Logs

    -

    These logs contain the console output captured while running the JUnit automated tests.

    - - - -
    -
    - - - diff --git a/eclipse.platform.releng.tychoeclipsebuilder/eclipse/publishingFiles/staticDropFiles/new.gif b/eclipse.platform.releng.tychoeclipsebuilder/eclipse/publishingFiles/staticDropFiles/new.gif deleted file mode 100644 index 58c548e3b6121b3d553882ca16696b56bd337b17..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 171 zcmZ?wbhEHblxN^$*v!ZP1ph$*#Ng#(U=U|uNNaxPA%2{}bb3Dnb9xJhhsJau`wj!M zy|)KYk>XDlpe{xR9gq%?Ar36z1}8Kbx0*1_u@*SQUZ*6{r#8J)b?3xqmSs^#{nnLT zF4OF{OXy(N&I>qxSL;}gRlAMviAk3kwYNMd=Kkt4(Qtl|rgvMsXHr(L+uvO~-bdQ> N$AxUQ)@5R_1^{B&I2-@~ diff --git a/eclipse.platform.releng.tychoeclipsebuilder/eclipse/publishingFiles/staticDropFiles/resultsSection.css b/eclipse.platform.releng.tychoeclipsebuilder/eclipse/publishingFiles/staticDropFiles/resultsSection.css deleted file mode 100644 index 09ef1cc4aaf..00000000000 --- a/eclipse.platform.releng.tychoeclipsebuilder/eclipse/publishingFiles/staticDropFiles/resultsSection.css +++ /dev/null @@ -1,71 +0,0 @@ -div.resultsSection { - clear: both; - width: 80%; - margin-left: 10%; - margin-right: 10%; -} - -div.resultsSection P { - text-indent: 30pt; - margin: inherit; -} - -div.resultsSection table { - border-collapse: collapse; - background-color: #d9d9d9; - margin-top: 20px; - margin-bottom: 20px; - margin-right: 10%; - margin-left: 10%; - border: 1px solid black; -} - -div.resultsSection table tr { - border-bottom: 1px solid black; - background-color: #ffffff; - color: black; -} - -div.resultsSection th { - background-color: #9999CC; -} - -div.resultsSection h2, div.resultsSection h3 { - margin-left: 5%; - margin-right: 5%; -} - -div.resultsSection table tr:nth-child(even) { - background-color: #ededed -} -/* hover must come after "stripped" to have desired effect. */ -div.resultsSection table tr:hover { - background-color: #a3a3e5; -} - -div.resultsSection table th, div.resultsSection table td { - padding: 1px 5px; -} - -div.resultsSection table th.cell { - text-align: center; - color: black; -} - -div.resultsSection table td.cell { - text-align: center; - width: 15em; - color: black; -} - -div.resultsSection table td.errorcell { - text-align: center; - width: 15em; - color: red; -} - -div.resultsSection table td.namecell { - text-align: left; - width: 30em; - color: black; -} \ No newline at end of file diff --git a/eclipse.platform.releng.tychoeclipsebuilder/eclipse/publishingFiles/staticDropFiles/testResults.php b/eclipse.platform.releng.tychoeclipsebuilder/eclipse/publishingFiles/staticDropFiles/testResults.php deleted file mode 100644 index fefd3a96cdf..00000000000 --- a/eclipse.platform.releng.tychoeclipsebuilder/eclipse/publishingFiles/staticDropFiles/testResults.php +++ /dev/null @@ -1,134 +0,0 @@ -$BUILD_ID
  • Test Results
  • "; - -require("DL.thin.header.php.html"); - -?> - - - - - - - - -".PHP_EOL; - -echo "

    Test Results for ".$BUILD_ID; -if (file_exists("buildUnstable")) { - echo " Unstable!\n"; -} -echo "

    ".PHP_EOL; -if (file_exists("buildUnstable")) { - $bu_file = file_get_contents("buildUnstable"); - echo "$bu_file"; -} -echo "

    Logs for ".$BUILD_ID."

    ".PHP_EOL; -echo "\n"; - -?> - -
    - - -
    - - - - diff --git a/eclipse.platform.releng.tychoeclipsebuilder/eclipse/publishingFiles/staticDropFiles/testResultsTablesPending.html b/eclipse.platform.releng.tychoeclipsebuilder/eclipse/publishingFiles/staticDropFiles/testResultsTablesPending.html deleted file mode 100644 index d701736fd4c..00000000000 --- a/eclipse.platform.releng.tychoeclipsebuilder/eclipse/publishingFiles/staticDropFiles/testResultsTablesPending.html +++ /dev/null @@ -1,8 +0,0 @@ - - -

    Unit Test Results

    -

    Unit tests are running on the Jenkins releng instance. -The results will be summarized here as each platform completes.

    \ No newline at end of file diff --git a/eclipse.platform.releng.tychoeclipsebuilder/eclipse/publishingFiles/staticDropFiles/utilityFunctions.php b/eclipse.platform.releng.tychoeclipsebuilder/eclipse/publishingFiles/staticDropFiles/utilityFunctions.php deleted file mode 100644 index 47084cfacbd..00000000000 --- a/eclipse.platform.releng.tychoeclipsebuilder/eclipse/publishingFiles/staticDropFiles/utilityFunctions.php +++ /dev/null @@ -1,303 +0,0 @@ - 0) { - // minus 1 is taken as numeric code that "build failed". - $boxes=-1; - unset ($BUILD_FAILED); - } - } - - // will be empty until there is at least one test result uploaded? - if (empty($testResultsDirName)) { - // contrived code to mean "no results yet" - $boxes = -3; - } - if ($boxes != -1 && $boxes != -2 && $boxes != -3) { - - // TEMP? appears "old style" builds had directories named "results", but now "testresults" - // and we want to look in $testResultsDirName/consolelogs - if (file_exists("$testResultsDirName/consolelogs")) { - $consolelogDir = dir("$testResultsDirName/consolelogs"); - //echo "
    DEBUG: count of expectedTestConfigs: ".count($expectedTestConfigs)."
    "; - //echo "
    DEBUG: and var_dump of expectedTestConfigs was:
    "; - //var_dump($expectedTestConfigs); - //echo "
    "; - while ($file = $consolelogDir->read()) { - for ($i = 0 ; $i < count($expectedTestConfigs) ; $i++) { - //echo "file: ".$file."
    "; - //echo "expectTestConfigs[$i] ". $expectedTestConfigs[$i]. "
    "; - if ((strpos($file, $expectedTestConfigs[$i])) !== FALSE) { - $boxes++; - - // First make sure we get "fresh" list of ALL test summary files, each time. - $testResultsSummaryFiles = glob($testResultsDirName."/ep*-unit-*.xml"); - foreach ($testResultsSummaryFiles as $summFileName) { - // echo "DEBUG: processing $summFileName
    "; - $jobname=jobname($expectedTestConfigs[$i]); - //echo "DEBUG: jobname: " . $jobname; - if (substr_startswith($summFileName, $testResultsDirName."/".$jobname)) { - //echo "DEBUG: found matching summary file: $summFileName
    "; - $xmlResults = simplexml_load_file($summFileName); - $testResults[$expectedTestConfigs[$i]]["duration"]=$xmlResults->duration; - $testResults[$expectedTestConfigs[$i]]["failCount"]=$xmlResults->failCount; - $testResults[$expectedTestConfigs[$i]]["passCount"]=$xmlResults->passCount; - $testResults[$expectedTestConfigs[$i]]["skipCount"]=$xmlResults->skipCount; - } - } - } - } - } - } - } - //echo "DEBUG: boxes: $boxes"; - return $boxes; -} - -/* -This function was originally copied from 'createIndex4x.php', where -the function was named 'printBuildColumns'. It's be heavily modified -to be used on individual build DL page. - -Its purpose is to return a short summary of "state of the tests". - */ -function printTestSummaryStatus() { - - include_once("buildproperties.php"); - - - // date and time of build, and elapsed time - - $buildTime=timeOfBuild($TIMESTAMP); - - // compute minutes elapsed since build started - $day=intval(date("Ymd")); - $time=intval(date("H"))*60+intval(date("i")); - $diff=($day-$buildDay)*24*60+$time-$buildTime; - - - - if (file_exists("testresults")) { - $testResultsDirName="testresults"; - } elseif (file_exists("results")) { - $testResultsDirName="results"; - } else { - // Neither directory exists at first ... until a tests completes and one result uploaded. - $testResultsDirName=""; - } - - $boxes=calcTestConfigsRan($fileName, $testResultsDirName); - // boxes == -1 is code that "bulid failed" and no tests are expected. - if ($boxes == -1) { - $buildimage="build_failed.gif"; - $buildalt="Build failed"; - } else { - $buildimage="build_done.gif"; - $buildalt="Build is available"; - } - - // set to zero globally, but computed in calcTestConfigsRan - global $expectedtestConfigs; - - $boxesTitle=""; - - // We skip the main "tests" part for patch builds, since don't expect any (for now). - if ($BUILD_TYPE !== "P" && $BUILD_TYPE !== "U" && $boxes !== -2) { - - // always put in links, since someone may want to look at logs, even if not tests results, per se - // don't forget to end link, after images decided. - - if ($boxes > -1) { - $boxesTitle=$boxes." of ".count($expectedTestConfigs)." test platforms finished."; - } - if ($testResultsDirName === "results") { - echo ""; - } else { - echo ""; - } - - if ($boxes == -1) { - $testimage="caution.gif"; - $testalt="Integration tests did not run due to failed build"; - } elseif ($boxes == 0 && $diff > 720) { - // assume if no results at all, after 12 hours, assume they didn't run for unknown reasosn - $testimage="caution.gif"; - $testalt="Integration tests did not run, due to unknown reasons."; - } elseif ($boxes > 0 && $boxes < count($expectedTestConfigs)) { - if ($diff > 1440) { - $testimage="junit.gif"; - $testalt="Tests results are available but did not finish on all machines"; - } else { - $testimage="runtests.gif"; - $testalt="Integration tests are running ..."; - } - } elseif ($boxes == count($expectedTestConfigs)) { - $testimage="junit.gif"; - $testalt="Tests results are available"; - } else { - $testimage="runtests.gif"; - $testalt="Integration tests are running ..."; - } - echo "\"$testalt\""; - if ($boxes > -1) { - echo " (".$boxes." of ".count($expectedTestConfigs)." platforms)"; - } - echo "\n"; - } else { - echo ""; - $testimage="results.gif"; - $testalt="Logs from build"; - echo "\"$testalt\""; - if ($BUILD_TYPE == "P" || $BUILD_TYPE == "U") { - echo " (No automated tests)"; - } elseif ($boxes == -2) { - echo " (No expected tests)"; - } else { - echo " (unexpected test boxes)"; - } - } - echo "\n"; -} - -function fileSizeForDisplay($filename) { - $onekilo=1024; - $onemeg=$onekilo * $onekilo; - $criteria = 10 * $onemeg; - $scaleChar = " "; - if (file_exists($filename)) { - $zipfilesize=filesize($filename); - if ($zipfilesize > $criteria) { - $zipfilesize=round($zipfilesize/$onemeg, 0); - $scaleChar = " MiB"; - } - else { - if ($zipfilesize > $onekilo) { - $zipfilesize=round($zipfilesize/$onekilo, 0); - $scaleChar = " KiB"; - } else { - // use raw size in bytes if less that one 1K - $scaleChar = " B"; - } - } - } - else { - $zipfilesize = 0; - } - $result = "(" . $zipfilesize . $scaleChar . ")"; - return $result; -} - -/* Deprecated. This function moved to "generate test results table" ant task. -This function "breaks" the full config string at meaningful -underscores, for improved display in tables and similar. -Remember, some config values can have more than two underscores, -such as ep46N-unit-lin64_linux.gtk.x86_64_8.0, which should -be split as - ep46N-unit-lin64 - lin64_linux.gtk.x86_64 - 8.0 - */ -function computeDisplayConfig($config) { - $lastUnderscore = strrpos ($config, "_"); - $firstUnderscore = strpos ($config, "_", strpos($config, "x86_64") + 6); - $platformLength=$lastUnderscore - $firstUnderscore - 1; - //echo "
    DEBUG: config: $config firstUnderscore: $firstUnderscore lastUnderscore: $lastUnderscore lastMinusFirst: $platformLength" - $jobname = substr($config,0,$firstUnderscore); - $platformconfig = substr($config,$firstUnderscore + 1,$platformLength); - $vmused = substr($config,$lastUnderscore+1); - //echo "DEBUG: jobname: ".$jobname."
    "; - //echo "DEBUG: platformconfig: ".$platformconfig."
    "; - //echo "DEBUG: vmused: ".$vmused."
    "; - return $jobname."
    ".$platformconfig."
    ".$vmused; - -} - -/* This function gets the first segment of the config - which is 'jobname' on Hudson. - */ -function jobname($config) { - $firstUnderscore = strpos ($config, "_", strpos($config, "x86_64") + 6); - $jobname = substr($config,0,$firstUnderscore); - return $jobname; -} - -function substr_startswith($haystack, $needle) { - return substr($haystack, 0, strlen($needle)) === $needle; -} diff --git a/eclipse.platform.releng.tychoeclipsebuilder/eclipse/publishingFiles/templateFiles/buildproperties.phpHoldForLocalTests b/eclipse.platform.releng.tychoeclipsebuilder/eclipse/publishingFiles/templateFiles/buildproperties.phpHoldForLocalTests deleted file mode 100644 index a2a55b6a060..00000000000 --- a/eclipse.platform.releng.tychoeclipsebuilder/eclipse/publishingFiles/templateFiles/buildproperties.phpHoldForLocalTests +++ /dev/null @@ -1,57 +0,0 @@ -rt.equinox.framework"; -$API_PREV_REF_LABEL = "4.4.0"; -$API_FREEZE_REF_LABEL = " "; -// finished properties for N20140707-2000 -?> diff --git a/eclipse.platform.releng.tychoeclipsebuilder/eclipse/publishingFiles/templateFiles/index.template.php b/eclipse.platform.releng.tychoeclipsebuilder/eclipse/publishingFiles/templateFiles/index.template.php deleted file mode 100644 index 45fff1194f4..00000000000 --- a/eclipse.platform.releng.tychoeclipsebuilder/eclipse/publishingFiles/templateFiles/index.template.php +++ /dev/null @@ -1,431 +0,0 @@ -$BUILD_ID"; -require("DL.thin.header.php.html"); - -?> - - - - - - - - - -
    -

    Eclipse Build: -Unstable!\n"; - } -?> -

    - -

    This page provides access to the various deliverables of Eclipse Platform build along with -its logs and tests.

    -Test-Build-Only flag found set. Input was not tagged.

    \n"; -} - -// $NEWS_ID needs to be added to buildproperties.php, such as $NEWS_ID="4.5/M4"; -// Once ready to display it. -if (isset ($NEWS_ID)) { - echo "New and Noteworthy
    \n"; -} -else { -// Show N&N link on the I-Build download page - echo "New and Noteworthy
    \n"; -} -// Similar for $ACK_ID and $README_ID, but they are added only for 'R builds', -// And, are added by the promotion scripts, as long as we keep same conventions. -if (isset ($ACK_ID)) { - echo "Acknowledgments
    \n"; -} -if (isset ($README_ID)) { - echo "Eclipse Project ${BUILD_ID} Readme
    \n"; -} -echo "Eclipse Project Plan
    \n"; - -if (isset ($BUILD_FAILED) ) { - echo "

    Build Failed

    See logs.

    \n"; - $PATTERN='!(.*)(/buildlogs/)(.*)!'; - $result = preg_match($PATTERN, $BUILD_FAILED, $MATCHES); - // cheap short cut, since we expect only 1 such file - $summaryFile=glob("buildFailed-*"); - if ($result !== FALSE) { - $SPECIFIC_LOG=$MATCHES[3]; - echo "

    Specifically, see the log with errors, \n"; - echo "or a summary.
    \n"; - echo "Or see traditional Compile Logs (if any).\n"; - echo "See recent changes in the git log.

    \n"; - } - -} -else { -?> - -

    Logs and Test Links

    - -"; - echo "
      "; - - // We will always display link to logs (as normal link, not using color:inherit;) - echo "
    • View the logs for the current build.
    • \n"; - - // This section if for overall status if anything failed, overall is failed - // -3 is special code meaning no testResults directory exists yet. - if ($boxes == -3) { - $testResultsStatus = "pending"; - } else { - /* since boxes is not -3, there must be at least one */ - $totalFailed = 0; - $expectedBoxes = count($expectedTestConfigs); - foreach ($expectedTestConfigs as $config) { - - if (isset($testResults[$config])) { - $testRes = $testResults[$config]; - $failed = $testRes['failCount']; - $totalFailed = $totalFailed + $failed; - } - } - if ($totalFailed == 0 && $boxes == $expectedBoxes) { - $testResultsStatus = "success"; - } elseif ($totalFailed == 0 && $boxes < $expectedBoxes) { - $testResultsStatus = "inProgress"; - } elseif ($totalFailed > 0 && $boxes > 0) { - $testResultsStatus = "failed"; - } else { - // This is some sort of programming error? - // Don't think we should get to here? - // Will flag as "unknown" but not sure how to convey that .... - // would only be useful if debugging. - $testResultsStatus = "unknown"; - } - } - - if (file_exists("overrideTestColor")) { - $linkColor='text-success'; - } - else { - if ($testResultsStatus === "failed") { - /* note we don't override 'inherit' cases, just 'failed'. */ - if (file_exists("overrideTestColor")) { - $linkColor='text-success'; - } else { - $linkColor = 'text-danger'; - } - } elseif ($testResultsStatus === "success") { - $linkColor='text-success'; - } elseif ($testResultsStatus === "pending") { - $linkColor='text-muted'; - } elseif ($testResultsStatus === "inProgress") { - $linkColor='text-muted'; - } - } - - - if ($testResultsStatus == "pending") { - echo "
    • Integration and unit tests are pending.
    • \n"; - } else { - echo "
    • View the integration and unit test results for the current build.
    • \n"; - } - - echo "
    \n"; - - if (file_exists("TEST_INVOCATION_FAILED.html")) { - $tf_file = file_get_contents("TEST_INVOCATION_FAILED.html"); - echo "

    Test Invocation Failed for some Machines

    $tf_file"; - } - - echo "

    Summary of Unit Tests Results

    "; - echo "\n"; - echo " \n"; - echo "\n"; - - foreach ($expectedTestConfigs as $config) { - //var_dump($testResults); - $displayConfig = computeDisplayConfig($config); - if (isset($testResults[$config])) { - $testRes = $testResults[$config]; - $failed = $testRes['failCount']; - $passed = $testRes['passCount']; - $total = $failed + $passed; - $duration = $testRes['duration']; - if (file_exists("overrideTestColor")) { - $linkColor='text-success'; - } - else { - if ($failed > 0) { - // note we don't override 'inherit' cases, just 'failed'. - if (file_exists("overrideTestColor")) { - $linkColor='text-success'; - } else { - $linkColor = 'text-danger'; - } - } else { - $linkColor='text-success'; - } - } - echo "\n"; - echo "\n"; - echo "\n"; - echo "\n"; - } - else { - // Yes, all configs intentionally links, since all go to the same place, but if no results yet, would not look like one. - $linkColor = 'text-muted'; - echo "\n"; - echo "\n"; - echo "\n"; - echo "\n"; - } - } - echo "
    \n"; - echo "

    ".$boxesDisplay." of ".count($expectedTestConfigs)." integration and unit test configurations are complete.

    \n"; - if (file_exists("testNotes.html")) { - $my_file = file_get_contents("testNotes.html"); - echo $my_file; - } - echo "
    Tested PlatformFailedPassedTotalTest Time (s)
    \n"; - echo "".$displayConfig.""; - echo "$failed$passed$total$duration
    \n"; - echo "".$displayConfig.""; - echo "    
    \n"; - -?> - -

    Related Links

    - -SHA512 Checksums for $BUILD_ID (GPG)

    "; - } else if (file_exists($sums512file)) { - echo "

    SHA512 Checksums for $BUILD_ID"; - } - -?> -Report of changes from previous build.

    "; - } -?> - -
    - - - -
    -

    Eclipse p2 Repository  

    - - - - \n"; - echo "To update your Eclipse installation to this development stream, you can use the software repository at
    \n"; - echo "  $STREAM_REPO_URL
    \n"; - echo " \n"; - } - if ((file_exists("$relativePath3/updates/"."$BUILD_REPO_NAME")) || (file_exists("$relativePath4/updates/"."$BUILD_REPO_NAME")) ) { - echo " \n"; - echo "To update your build to use this specific build, you can use the software repository at
    \n"; - echo "  $BUILD_REPO_URL
    \n"; - echo " \n"; - } -?> - - - - - - -%repository% - - - - - -

    Eclipse SDK   -

    - - - - - - -%sdk% - - - -

    Tests and Testing Framework   -

    - - - - -%tests% - - - - -

    Platform Runtime Binary   -

    - - - - -%runtime% - - -

    JDT Core Batch Compiler    -

    - - - - -%jdtc% - - -

    SWT Binary and Source   -

    - - - - -%swt% - - - -
    - - - - - diff --git a/eclipse.platform.releng.tychoeclipsebuilder/eclipse/publishingFiles/templateFiles/testNotesExample.html b/eclipse.platform.releng.tychoeclipsebuilder/eclipse/publishingFiles/templateFiles/testNotesExample.html deleted file mode 100644 index 7152837c878..00000000000 --- a/eclipse.platform.releng.tychoeclipsebuilder/eclipse/publishingFiles/templateFiles/testNotesExample.html +++ /dev/null @@ -1,22 +0,0 @@ - diff --git a/eclipse.platform.releng.tychoeclipsebuilder/eclipse/publishingFiles/testManifest.xml b/eclipse.platform.releng.tychoeclipsebuilder/eclipse/publishingFiles/testManifest.xml index 255d4e50b36..dd1322c075d 100644 --- a/eclipse.platform.releng.tychoeclipsebuilder/eclipse/publishingFiles/testManifest.xml +++ b/eclipse.platform.releng.tychoeclipsebuilder/eclipse/publishingFiles/testManifest.xml @@ -1,548 +1,7 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/eclipse.platform.releng.tychoeclipsebuilder/equinox/helper.xml b/eclipse.platform.releng.tychoeclipsebuilder/equinox/helper.xml deleted file mode 100644 index 462f786b478..00000000000 --- a/eclipse.platform.releng.tychoeclipsebuilder/equinox/helper.xml +++ /dev/null @@ -1,332 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/eclipse.platform.releng.tychoeclipsebuilder/equinox/publishingFiles/staticDropFiles/build.php b/eclipse.platform.releng.tychoeclipsebuilder/equinox/publishingFiles/staticDropFiles/build.php deleted file mode 100644 index ed6e98becf6..00000000000 --- a/eclipse.platform.releng.tychoeclipsebuilder/equinox/publishingFiles/staticDropFiles/build.php +++ /dev/null @@ -1,29 +0,0 @@ -$filesize"; -} - -function getDropSize($zipfile) { - $filesize = "N/A"; - $filesizebytes = filesize($zipfile); - if($filesizebytes > 0) { - if($filesizebytes < 1048576) - $filesize = round($filesizebytes / 1024, 0) . "K"; - else if ($filesizebytes >= 1048576 && $filesizebytes < 10485760) - $filesize = round($filesizebytes / 1048576, 1) . "M"; - else - $filesize = round($filesizebytes / 1048576, 0) . "M"; - } - return($filesize); -} - -// TODO: change build index tool not to generate these "calls" at all. -// In the mean time, we will just return empty string. -function generateChecksumLinks($zipfile, $buildDir) { - //return "\"md5\"/\"sha1\"/"; - //return "\"sha512\"/"; - return ""; -} -?> diff --git a/eclipse.platform.releng.tychoeclipsebuilder/equinox/publishingFiles/staticDropFiles/download.php b/eclipse.platform.releng.tychoeclipsebuilder/equinox/publishingFiles/staticDropFiles/download.php deleted file mode 100644 index 675b2480a2b..00000000000 --- a/eclipse.platform.releng.tychoeclipsebuilder/equinox/publishingFiles/staticDropFiles/download.php +++ /dev/null @@ -1,92 +0,0 @@ - - -Eclipse Download Click Through - - -'; - echo 'Downloading: '.$mirrorlink.''; - } else { - echo ''; - echo 'Downloading: '.$eclipselink.''; - } - echo '
    '; - echo '
    '; - if ($mirror) { - echo 'If your download does not begin automatically click here.'; - } else { - echo 'If your download does not begin automatically click here.'; - } -} -?> - - - -Important Notes
    '; - echo '

    -

    It is very important to read the following notes in order to run this version - of Eclipse. Once you have read the notes you can click on the Download link - to download the drop.

    - '; - echo ''; - echo '
    '; - echo '
    '; - - if ($mirror) { - echo 'Download'; - } else { - echo 'Download'; - } -} -?> - - diff --git a/eclipse.platform.releng.tychoeclipsebuilder/equinox/publishingFiles/staticDropFiles/equinox.css b/eclipse.platform.releng.tychoeclipsebuilder/equinox/publishingFiles/staticDropFiles/equinox.css deleted file mode 100644 index e24688b4600..00000000000 --- a/eclipse.platform.releng.tychoeclipsebuilder/equinox/publishingFiles/staticDropFiles/equinox.css +++ /dev/null @@ -1,18 +0,0 @@ -#popupcontent { - position: absolute; - visibility: hidden; - overflow: hidden; - background-color: #F9F9F9; - border: 0px solid #333; - padding: 5px; -} - -.hidden { - position: absolute; - visibility: hidden; - overflow: hidden; -} - -div.collapsable { - display: none; -} \ No newline at end of file diff --git a/eclipse.platform.releng.tychoeclipsebuilder/equinox/publishingFiles/templateFiles/index.template.php b/eclipse.platform.releng.tychoeclipsebuilder/equinox/publishingFiles/templateFiles/index.template.php deleted file mode 100644 index 51aa2d46c69..00000000000 --- a/eclipse.platform.releng.tychoeclipsebuilder/equinox/publishingFiles/templateFiles/index.template.php +++ /dev/null @@ -1,130 +0,0 @@ -getProjectCommon()); - # Begin: page-specific settings. Change these. - $pageTitle = "Equinox $BUILD_TYPE_NAME Build: $BUILD_ID"; - $pageKeywords = "equinox, osgi, framework, runtime, download"; - $pageAuthor = "Equinox committers"; - $generateDropSize = 'generateDropSize'; - $generateChecksumLinks = 'generateChecksumLinks'; - $buildlabel = "$EQ_BUILD_DIR_SEG"; - $sums512file = "checksum/equinox-$BUILD_ID-SUMSSHA512"; - $sums512file_asc = $sums512file.".asc"; - if ((file_exists($sums512file)) && (file_exists($sums512file_asc))) { - $gpgchecksumline = "

    SHA512 Checksums for $BUILD_ID (GPG)

    "; - } else if (file_exists($sums512file)) { - $gpgchecksumline = "

    SHA512 Checksums for $BUILD_ID"; - } - $html = << - -

    -

    Equinox $BUILD_TYPE_NAME Build: $BUILD_ID

    -

    $BUILD_PRETTY_DATE

    - -
    -

    All of Equinox

    -

    A complete set of all bundles and launchers produced by the Equinox project. This zip is also a p2 repo.

    - - - %equinox% -
    -
    - -
    -

    Framework Only

    -

    The Equinox OSGi R4 framework implementation in a standalone package. -

    - - - %framework% -
    -
    - -
    -

     Add-on Bundles

    -

    Individual bundles that provide - standalone OSGi specified services or add-on mechanisms (e.g., the Eclipse extension registry) of interest to OSGi programmers.

    -
    - - - %extrabundles% -
    -
    -
    - - -
    -

     Other Required Bundles

    -

    A convenient set of bundles that are required by some of the Equinox bundles.

    -
    - - - %other% -
    -
    -
    - - -
    -

     Native Launchers

    -

    Platform-specific native launchers (e.g., eclipse.exe) for the Equinox framework. See the list - of supported OS configurations. -

    - - - %launchers% -
    -
    -
    - -
    -

     OSGi starter kits

    -

    A useful collection of Equinox bundles packaged as a ready to run system. This include the framework, p2 and other frequently used service implementations.

    -
    - - - %osgistarterkits% -
    -
    -
    - -
    -

    Other Information

    -

    How to verify a download.

    - $gpgchecksumline -
    - - -
    - -EOHTML; - generateRapPage( $App, $Menu, $Nav, $pageAuthor, $pageKeywords, $pageTitle, $html ); -?> \ No newline at end of file diff --git a/eclipse.platform.releng.tychoeclipsebuilder/equinox/publishingFiles/templateFiles/testResults.template.php b/eclipse.platform.releng.tychoeclipsebuilder/equinox/publishingFiles/templateFiles/testResults.template.php deleted file mode 100644 index c599ee7fc4f..00000000000 --- a/eclipse.platform.releng.tychoeclipsebuilder/equinox/publishingFiles/templateFiles/testResults.template.php +++ /dev/null @@ -1,57 +0,0 @@ - - - -Test Results for $buildType $buildName "; -?> - - - - - - - - - - - - - %compilelogs% - -
    Compile Logs (Jar Files)ErrorsWarnings
    - - - - - - - - - - %accesseslogs% - -
    Compile Logs (Jar Files)Forbidden Access WarningsDiscouraged Access WarningsInformational Warnings
    - - - - - - - diff --git a/eclipse.platform.releng.tychoeclipsebuilder/equinox/publishingFiles/testManifest.xml b/eclipse.platform.releng.tychoeclipsebuilder/equinox/publishingFiles/testManifest.xml deleted file mode 100644 index dc95c8700ae..00000000000 --- a/eclipse.platform.releng.tychoeclipsebuilder/equinox/publishingFiles/testManifest.xml +++ /dev/null @@ -1,307 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/scripts/releng/BuildDropDataGenerator.java b/scripts/releng/BuildDropDataGenerator.java new file mode 100644 index 00000000000..5a9a39eddac --- /dev/null +++ b/scripts/releng/BuildDropDataGenerator.java @@ -0,0 +1,241 @@ + +/******************************************************************************* + * Copyright (c) 2025, 2025 Hannes Wellmann and others. + * + * This program and the accompanying materials + * are made available under the terms of the Eclipse Public License 2.0 + * which accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * Hannes Wellmann - initial API and implementation + *******************************************************************************/ + +import java.util.Map.Entry; + +import utilities.JSON; +import utilities.OS; + +Path DIRECTORY; +Optional FILES_LIST_FILE; + +/** + * Considered JVM properties are: + *
      + *
    • {@code directory} (required) -- path to the drop directory root.
    • + *
    • {@code filesList} (optional) -- path to a file listing all files and + * their size in the directory.
      + * Can be generated using the UNIX command + * {@code find . -exec stat --format "%n %s" {} \; }
    • + *
    + * The generated data files (mainly JSON) are written at locations within the + * specified directory where the website pages expect them. + */ +void main(String[] args) throws IOException { + DIRECTORY = Path.of(OS.readProperty("dropDirectory")).toRealPath(); + FILES_LIST_FILE = Optional.ofNullable(System.getProperty("filesList")).map(Path::of); + IO.println("INFO: Generating drop data file for"); + IO.println("\t" + DIRECTORY); + FILES_LIST_FILE.ifPresent(list -> { + IO.println("INFO: Reading files from:"); + IO.println("\t" + list); + }); + + switch (args[0]) { + case "mainEclipse" -> mainEclipsePageData(); + case "mainEquinox" -> mainEquinoxPageData(); + case "buildLogs" -> buildLogsPageData(); + default -> throw new IllegalArgumentException("Unexpected value: " + args[0]); + } +} + +final Pattern COMMA = Pattern.compile(","); + +void mainEclipsePageData() throws IOException { + Map files = OS.listFileTree(DIRECTORY, FILES_LIST_FILE, null, 1); + Map properties = OS.loadProperties(DIRECTORY.resolve("buildproperties.properties")); + String buildId = properties.get("BUILD_ID"); + ZonedDateTime buildDate = buildTimestamp(buildId); + + JSON.Object buildProperties = JSON.Object.create(); + // basic data + buildProperties.add("identifier", JSON.String.create(buildId)); + buildProperties.add("label", JSON.String.create(buildId)); + buildProperties.add("kind", JSON.String.create(properties.get("BUILD_TYPE_NAME"))); + buildProperties.add("release", JSON.String.create(properties.get("STREAM"))); + buildProperties.add("releaseShort", JSON.String.create(properties.get("RELEASE_VER"))); + buildProperties.add("previousReleaseAPILabel", JSON.String.create(previousReleaseAPILabel(properties))); + buildProperties.add("timestamp", JSON.String.create(buildDate.toString())); + + // tests + JSON.Array testConfigurations = COMMA.splitAsStream(properties.get("TEST_CONFIGURATIONS_EXPECTED")).map(c -> { + var config = c.split("-"); + return config[2] + "-" + config[3] + "-" + config[4].substring(0, config[4].indexOf('_')); + }).map(JSON.String::new).collect(JSON.Array.toJSONArray()); + buildProperties.add("expectedTests", testConfigurations); + + // files + buildProperties.add("p2Repository", JSON.Array.create(// + createFileEntry("repository-" + buildId + ".zip", files, "All", "repo.gif"))); + + buildProperties.add("sdkProducts", + collectFileEntries(files, filename -> filename.startsWith("eclipse-SDK-") && !OS.isMacTarGZ(filename))); + + buildProperties.add("eclipseTests", JSON.Array.create( // + createFileEntry("eclipse-Automated-Tests-" + buildId + ".zip", files, "All"))); + + JSON.Array platformProducts = collectFileEntries(files, + filename -> filename.startsWith("eclipse-platform-") && !OS.isMacTarGZ(filename)); + platformProducts.add(createFileEntry( // Add separate entry for eclipse-platform product p2-repository + "org.eclipse.platform-" + buildId + ".zip", files, "Platform Runtime Repo", "repo.gif")); + buildProperties.add("platformProducts", platformProducts); + + buildProperties.add("jdtCompiler", JSON.Array.create( // + createFileEntry("ecj-" + buildId + ".jar", files, "All"), + createFileEntry("ecjsrc-" + buildId + ".jar", files, "All"))); + + buildProperties.add("swtBinaries", collectFileEntries(files, filename -> filename.startsWith("swt-"))); + + Path file = DIRECTORY.resolve("buildproperties.json"); + IO.println("Write Eclipse drop main data to: " + file); + JSON.write(buildProperties, file); +} + +void mainEquinoxPageData() throws IOException { + Map files = OS.listFileTree(DIRECTORY, FILES_LIST_FILE, null, 1); + Map properties = OS.loadProperties(DIRECTORY.resolve("buildproperties.properties")); + String buildId = properties.get("BUILD_ID"); + ZonedDateTime buildDate = buildTimestamp(buildId); + + JSON.Object buildProperties = JSON.Object.create(); + // basic data + buildProperties.add("identifier", JSON.String.create(buildId)); + buildProperties.add("label", JSON.String.create(buildId)); + buildProperties.add("kind", JSON.String.create(properties.get("BUILD_TYPE_NAME"))); + buildProperties.add("timestamp", JSON.String.create(buildDate.toString())); + + // files + buildProperties.add("equinoxRepository", + collectFileEntries(files, filename -> filename.startsWith("equinox-SDK-"))); + + buildProperties.add("equinoxFramework", + collectFileEntries(files, filename -> filename.startsWith("org.eclipse.osgi_"))); + + Predicate isAddonBundle = filename -> (filename.startsWith("org.eclipse.equinox.") + || filename.startsWith("org.eclipse.osgi.")) && !filename.startsWith("org.eclipse.equinox.p2."); + Predicate isJar = filename -> filename.endsWith(".jar"); + + buildProperties.add("addonBundles", collectFileEntries(files, isAddonBundle.and(isJar))); + buildProperties.add("otherBundles", collectFileEntries(files, isAddonBundle.negate().and(isJar))); + + buildProperties.add("launchers", collectFileEntries(files, filename -> filename.startsWith("launchers-"))); + + buildProperties.add("starterKits", collectFileEntries(files, + filename -> filename.startsWith("EclipseRT-OSGi-StarterKit-") && !OS.isMacTarGZ(filename))); + + Path file = DIRECTORY.resolve("buildproperties.json"); + IO.println("Write Equinox drop main data to: " + file); + JSON.write(buildProperties, file); +} + +void buildLogsPageData() throws IOException { + Path buildLogsDirectory = Path.of("buildlogs"); + Path comparatorLogsDirectory = Path.of("buildlogs/comparatorlogs"); + Map files = OS.listFileTree(DIRECTORY, FILES_LIST_FILE, buildLogsDirectory, 3); + + JSON.Object logFiles = JSON.Object.create(); + JSON.Array buildLogs = colleFilesInDirectory(buildLogsDirectory, filename -> filename.startsWith("s"), files); + logFiles.add("build", buildLogs); + JSON.Array comparatorLogs = colleFilesInDirectory(comparatorLogsDirectory, _ -> true, files); + logFiles.add("comparator", comparatorLogs); + + Path file = DIRECTORY.resolve("buildlogs/logFiles.json"); + IO.println("Write RelEng logs data to: " + file); + JSON.write(logFiles, file); +} + +// --- data conversion/collection --- + +String previousReleaseAPILabel(Map buildProps) { + int major = Integer.parseInt(buildProps.get("STREAMMajor")); + int minor = Integer.parseInt(buildProps.get("STREAMMinor")); + if (minor == 0) { + throw new IllegalStateException("New major version not yet handled"); + } + return major + "." + (minor - 1); +} + +JSON.Array collectFileEntries(Map buildFiles, Predicate filenameFilter) { + return colleFilesInDirectory(null, filenameFilter, buildFiles); +} + +JSON.Array colleFilesInDirectory(Path inDirectory, Predicate filenameFilter, Map buildFiles) { + Function, String> getFilename = f -> f.getKey().getFileName().toString(); + int expectedNameCount = inDirectory != null ? inDirectory.getNameCount() + 1 : 1; + return buildFiles.entrySet().stream().filter(f -> { + Path file = f.getKey(); + if (file.getNameCount() != expectedNameCount || (inDirectory != null && !file.startsWith(inDirectory))) { + return false; + } + return filenameFilter.test(getFilename.apply(f)); + }).sorted(Comparator.comparing(getFilename, BY_OS_ARCH_FILE_NAME)) + .map(e -> createFileDescription(e.getKey().getFileName(), e.getValue())).collect(JSON.Array.toJSONArray()); +} + +final Comparator BY_OS_ARCH_FILE_NAME = Comparator.comparing((String filename) -> { // first sort by OS + if (OS.isWindowsArtifact(filename)) { + return 1; + } else if (OS.isLinuxArtifact(filename)) { + return 2; + } else if (OS.isMacOSArtifact(filename)) { + return 3; + } + return 100; +}).thenComparing(Comparator.comparing(filename -> { // then sort by arch + if (filename.contains("-x86_64")) { + return 1; + } + return 100; +})).thenComparing(Comparator.naturalOrder()); + +JSON.Object createFileEntry(String filename, Map buildFiles, String platform, String icon) { + return createFileEntry(Path.of(filename), buildFiles, platform, icon); +} + +JSON.Object createFileEntry(String filename, Map buildFiles, String platform) { + return createFileEntry(Path.of(filename), buildFiles, platform, null); +} + +JSON.Object createFileEntry(Path filename, Map buildFiles, String platform, String icon) { + JSON.Object file = createFileDescription(filename, buildFiles.get(filename)); + if (platform != null) { + file.add("platform", JSON.String.create(platform)); + } + if (icon != null) { + file.add("icon", JSON.String.create(icon)); + } + return file; +} + +JSON.Object createFileDescription(Path file, Long fileSize) { + JSON.Object fileEntry = JSON.Object.create(); + fileEntry.add("name", JSON.String.create(file.toString().replace(File.separatorChar, '/'))); + fileEntry.add("size", JSON.String.create(OS.fileSizeAsString(fileSize))); + return fileEntry; +} + +final Pattern INTEGRATION_BUILD_ID = Pattern.compile("(I|Y)(?\\d{8})-(?