diff --git a/README.md b/README.md index 7a563f708..c56178836 100644 --- a/README.md +++ b/README.md @@ -268,7 +268,7 @@ This tag identifies the architecture the JDK has been built on and it intended t --- - `variant:` -Example values: [`hotspot`, `temurin`, `openj9`, `corretto`, `dragonwell`, `bisheng`, `fast_startup`] +Example values: [`hotspot`, `temurin`, `openj9`, `corretto`, `dragonwell`, `bisheng`, `fast_startup`,`fast_debug`] This tag identifies the JVM being used by the JDK, "dragonwell" itself is not a JVM but is currently considered a variant in its own right. diff --git a/pipelines/build/common/build_base_file.groovy b/pipelines/build/common/build_base_file.groovy index 8ba9e628a..10f3148a8 100644 --- a/pipelines/build/common/build_base_file.groovy +++ b/pipelines/build/common/build_base_file.groovy @@ -721,6 +721,8 @@ class Builder implements Serializable { return "evaluation" } else if (currentBuild.fullProjectName.contains("release")) { return "release" + } else if (currentBuild.fullProjectName.contains("trestle")) { + return "trestle" } return } @@ -827,7 +829,7 @@ class Builder implements Serializable { } /* - Main function. This is what is executed remotely via the [release-|evaluation-]openjdkxx-pipeline and pr-tester jobs + Main function. This is what is executed remotely via the [release-|evaluation-|trestle-]openjdkxx-pipeline and pr-tester jobs Running in the *openjdkX-pipeline */ @SuppressWarnings('unused') diff --git a/pipelines/build/common/config_regeneration.groovy b/pipelines/build/common/config_regeneration.groovy index 1059f06e3..580a1ab64 100644 --- a/pipelines/build/common/config_regeneration.groovy +++ b/pipelines/build/common/config_regeneration.groovy @@ -642,7 +642,13 @@ class Regeneration implements Serializable { // Parse api response to only extract the relevant pipeline getPipelines.jobs.name.each { pipeline -> - def pipelineName = (jobType != "evaluation" ? "openjdk${versionNumbers[0]}-pipeline" : "evaluation-openjdk${versionNumbers[0]}-pipeline") + def pipelineName = "openjdk${versionNumbers[0]}-pipeline" + if (jobType == "evaluation") { + pipelineName = "evaluation-openjdk${versionNumbers[0]}-pipeline" + } else if (jobType == "trestle") { + pipelineName = "trestle-openjdk${versionNumbers[0]}-pipeline" + } + context.println "[INFO] Proceeding with ${pipelineName} ..." if (pipeline == pipelineName) { Boolean inProgress = true while (inProgress) { diff --git a/pipelines/build/common/openjdk_build_pipeline.groovy b/pipelines/build/common/openjdk_build_pipeline.groovy index 8f7ec797a..acfd95462 100644 --- a/pipelines/build/common/openjdk_build_pipeline.groovy +++ b/pipelines/build/common/openjdk_build_pipeline.groovy @@ -167,6 +167,7 @@ class Build { case 'dragonwell': variant = 'dragonwell'; break; case 'fast_startup': variant = 'fast_startup'; break; case 'bisheng': variant = 'bisheng'; break; + case 'fast_debug' : variant = 'fast_debug'; break; default: variant = 'hs' } def jobName = "Test_openjdk${jobParams['JDK_VERSIONS']}_${variant}_${testType}_${jobParams['ARCH_OS_LIST']}" @@ -226,6 +227,8 @@ class Build { jdkBranch = 'master' } else if (buildConfig.VARIANT == 'bisheng') { jdkBranch = 'master' + } else if (buildConfig.VARIANT == 'fast_debug') { + jdkBranch = 'master' } else { throw new Exception("Unrecognised build variant: ${buildConfig.VARIANT} ") } @@ -283,6 +286,9 @@ class Build { case 'bisheng': suffix = "openeuler-mirror/bishengjdk-${javaNumber}" break + case 'fast_debug': + suffix = "openjdk/${buildConfig.JAVA_TO_BUILD}" + break default: throw new Exception("Unrecognised build variant: ${buildConfig.VARIANT} ") } diff --git a/pipelines/build/regeneration/README.md b/pipelines/build/regeneration/README.md index cd8b26c51..d585eae58 100644 --- a/pipelines/build/regeneration/README.md +++ b/pipelines/build/regeneration/README.md @@ -92,12 +92,13 @@ Unreferenced items: This standard generator generates the [top level](https://ci.adoptium.net/job/build-scripts/) pipeline jobs. It works by iterating through the config files, defining a job dsl configuration for each version that has a version config file. It then calls [pipeline_job_template.groovy](pipelines/jobs/pipeline_job_template.groovy) to finalise the dsl. By default, the [job that runs this file](https://ci.adoptium.net/job/build-scripts/job/utils/job/build-pipeline-generator/) has restricted read access so you will likely need to contact a jenkins admin to see the results of the job. -There are another two generators: +There are another three generators: 1. [release generator](https://ci.adoptium.net/job/build-scripts/job/utils/job/release-build-pipeline-generator/) is only used to regenerate release pipelines. -2. [evaluation generator](https://ci.adoptium.net/job/build-scripts/job/utils/job/evaluation-pipeline-generator/) is used to regenerator evaluation pipeline and weekly-evaluation pipeline +2. [evaluation generator](https://ci.adoptium.net/job/build-scripts/job/utils/job/evaluation-pipeline-generator/) is used to regenerate evaluation pipeline and weekly-evaluation pipeline +3. [trestle generator](https://ci.adoptium.net/job/build-scripts/job/utils/job/trestle-pipeline-generator/) is used to regenerate trestle pipeline -They work in the similar was as the standard one but use different config files +They all work similarly to the standard one but with different config files ### Downstream Test Jobs diff --git a/pipelines/build/regeneration/build_job_generator.groovy b/pipelines/build/regeneration/build_job_generator.groovy index 4a6962c0c..ed0c05353 100644 --- a/pipelines/build/regeneration/build_job_generator.groovy +++ b/pipelines/build/regeneration/build_job_generator.groovy @@ -23,6 +23,7 @@ limitations under the License. - build-scripts/jobs/jdk11u/evaluation-jdk11u-linux-arm-temurin (when jobType = "evaluation") - build-scripts/release/jobs/release-jdk17u-mac-x64-temurin (when jobType = "release") - build-scripts-pr-tester/build-test/jobs/jdk21/jdk21-alpine-linux-x64-temurin (when "pr-tester") + - build-scripts/jobs/jdk21u/trestle-jdk11u-linux-arm-temurin (when jobType = "trestle") */ String javaVersion = params.JAVA_VERSION @@ -131,6 +132,8 @@ node('worker') { // either use root path or flag from job to determinate if it is evaluation } else if (jobRoot.contains('evaluation') || params.IS_EVALUATION_JOB) { jobType = "evaluation" + } else if (jobRoot.contains('trestle')) { + jobType = "trestle" } else { jobType = "nightly" } diff --git a/pipelines/build/regeneration/trestle_pipeline_generator.groovy b/pipelines/build/regeneration/trestle_pipeline_generator.groovy new file mode 100644 index 000000000..a4baef599 --- /dev/null +++ b/pipelines/build/regeneration/trestle_pipeline_generator.groovy @@ -0,0 +1,306 @@ +import java.nio.file.NoSuchFileException +import groovy.json.JsonSlurper +import groovy.json.JsonOutput + +/* +file used as jenkinsfile to generator trestle pipelines +*/ + +node('worker') { + try { + // Pull in Adopt defaults + String ADOPT_DEFAULTS_FILE_URL = 'https://raw.githubusercontent.com/smlambert/ci-jenkins-pipelines/master/pipelines/defaults.json' + def getAdopt = new URL(ADOPT_DEFAULTS_FILE_URL).openConnection() + Map ADOPT_DEFAULTS_JSON = new JsonSlurper().parseText(getAdopt.getInputStream().getText()) as Map + if (!ADOPT_DEFAULTS_JSON || !Map.isInstance(ADOPT_DEFAULTS_JSON)) { + throw new Exception("[ERROR] No ADOPT_DEFAULTS_JSON found at ${ADOPT_DEFAULTS_FILE_URL} or it is not a valid JSON object. Please ensure this path is correct and leads to a JSON or Map object file. NOTE: Since this adopt's defaults and unlikely to change location, this is likely a network or GitHub issue.") + } + + // Pull in User defaults + String DEFAULTS_FILE_URL = (params.DEFAULTS_URL) ?: ADOPT_DEFAULTS_FILE_URL + def getUser = new URL(DEFAULTS_FILE_URL).openConnection() + Map DEFAULTS_JSON = new JsonSlurper().parseText(getUser.getInputStream().getText()) as Map + if (!DEFAULTS_JSON || !Map.isInstance(DEFAULTS_JSON)) { + throw new Exception("[ERROR] No DEFAULTS_JSON found at ${DEFAULTS_FILE_URL} or it is not a valid JSON object. Please ensure this path is correct and leads to a JSON or Map object file.") + } + + Map remoteConfigs = [:] + def repoBranch = null + + /* + Changes dir to Adopt's repo. Use closures as functions aren't accepted inside node blocks + */ + def checkoutAdoptPipelines = { -> + checkout([$class: 'GitSCM', + branches: [ [ name: ADOPT_DEFAULTS_JSON['repository']['pipeline_branch'] ] ], + userRemoteConfigs: [ [ url: ADOPT_DEFAULTS_JSON['repository']['pipeline_url'] ] ] + ]) + } + + /* + Changes dir to the user's repo. Use closures as functions aren't accepted inside node blocks + */ + def checkoutUserPipelines = { -> + checkout([$class: 'GitSCM', + branches: [ [ name: repoBranch ] ], + userRemoteConfigs: [ remoteConfigs ] + ]) + } + + timestamps { + def retiredVersions = [9, 10, 12, 13, 14, 15, 16, 18, 19, 20] + def generatedPipelines = [] + + // Load git url and branch and gitBranch. These determine where we will be pulling user configs from. + def repoUri = (params.REPOSITORY_URL) ?: DEFAULTS_JSON['repository']['pipeline_url'] + repoBranch = (params.REPOSITORY_BRANCH) ?: DEFAULTS_JSON['repository']['pipeline_branch'] + + // Load credentials to be used in checking out. This is in case we are checking out a URL that is not Adopts and they don't have their ssh key on the machine. + def checkoutCreds = (params.CHECKOUT_CREDENTIALS) ?: '' + remoteConfigs = [ url: repoUri ] + if (checkoutCreds != '') { + // NOTE: This currently does not work with user credentials due to https://issues.jenkins.io/browse/JENKINS-60349 + remoteConfigs.put('credentials', "${checkoutCreds}") + } else { + println "[WARNING] CHECKOUT_CREDENTIALS not specified! Checkout to $repoUri may fail if you do not have your ssh key on this machine." + } + + // Checkout into user repository + checkoutUserPipelines() + + String helperRef = DEFAULTS_JSON['repository']['helper_ref'] + library(identifier: "openjdk-jenkins-helper@${helperRef}") + + // Load jobRoot. This is where the openjdkxx-pipeline jobs will be created. + def jobRoot = (params.JOB_ROOT) ?: DEFAULTS_JSON['jenkinsDetails']['rootDirectory'] + + /* + Load scriptFolderPath. This is the folder where the openjdk_pipeline.groovy code is located compared to the repository root. + These are the top level pipeline jobs. + */ + def scriptFolderPath = (params.SCRIPT_FOLDER_PATH) ?: DEFAULTS_JSON['scriptDirectories']['upstream'] + + if (!fileExists(scriptFolderPath)) { + println "[WARNING] ${scriptFolderPath} does not exist in your chosen repository. Updating it to use Adopt's instead" + checkoutAdoptPipelines() + scriptFolderPath = ADOPT_DEFAULTS_JSON['scriptDirectories']['upstream'] + println "[SUCCESS] The path is now ${scriptFolderPath} relative to ${ADOPT_DEFAULTS_JSON['repository']['pipeline_url']}" + checkoutUserPipelines() + } + + /* + Load trestleFolderPath. This is the folder where the configurations/jdkxx_pipeline_config.groovy code is located compared to the repository root. + These define what the default set of trestle pipelines will be. + */ + def trestleFolderPath = (params.NIGHTLY_FOLDER_PATH) ?: DEFAULTS_JSON['configDirectories']['trestle'] + + if (!fileExists(trestleFolderPath)) { + println "[WARNING] ${trestleFolderPath} does not exist in your chosen repository. Updating it to use Adopt's instead" + checkoutAdoptPipelines() + trestleFolderPath = ADOPT_DEFAULTS_JSON['configDirectories']['trestle'] + println "[SUCCESS] The path is now ${trestleFolderPath} relative to ${ADOPT_DEFAULTS_JSON['repository']['pipeline_url']}" + checkoutUserPipelines() + } + + /* + Load jobTemplatePath. This is where the pipeline_job_template.groovy code is located compared to the repository root. + This actually sets up the pipeline job using the parameters above. + */ + def jobTemplatePath = (params.JOB_TEMPLATE_PATH) ?: DEFAULTS_JSON['templateDirectories']['upstream'] + + if (!fileExists(jobTemplatePath)) { + println "[WARNING] ${jobTemplatePath} does not exist in your chosen repository. Updating it to use Adopt's instead" + checkoutAdoptPipelines() + jobTemplatePath = ADOPT_DEFAULTS_JSON['templateDirectories']['upstream'] + println "[SUCCESS] The path is now ${jobTemplatePath} relative to ${ADOPT_DEFAULTS_JSON['repository']['pipeline_url']}" + checkoutUserPipelines() + } + + // Load enablePipelineSchedule. This determines whether we will be generating the pipelines with a schedule (defined in jdkxx.groovy) or not. + Boolean enablePipelineSchedule = false + if (params.ENABLE_PIPELINE_SCHEDULE) { + enablePipelineSchedule = true + } + + // Load useAdoptShellScripts. This determines whether we will checkout to adopt's repository before running make-adopt-build-farm.sh or if we use the user's bash scripts. + Boolean useAdoptShellScripts = false + if (params.USE_ADOPT_SHELL_SCRIPTS) { + useAdoptShellScripts = true + } + + println '[INFO] Running generator script with the following configuration:' + println "REPOSITORY_URL = $repoUri" + println "REPOSITORY_BRANCH = $repoBranch" + println "JOB_ROOT = $jobRoot" + println "SCRIPT_FOLDER_PATH = $scriptFolderPath" + println "TRESTLE_FOLDER_PATH = $trestleFolderPath" + println "JOB_TEMPLATE_PATH = $jobTemplatePath" + println "ENABLE_PIPELINE_SCHEDULE = $enablePipelineSchedule" + println "USE_ADOPT_SHELL_SCRIPTS = $useAdoptShellScripts" + + // Collect available JDK versions to check for generation (tip_version + 1 just in case it is out of date on a release day) + def JobHelper = library(identifier: "openjdk-jenkins-helper@${helperRef}").JobHelper + println 'Querying Adopt Api for the JDK-Head number (tip_version)...' + + def response = JobHelper.getAvailableReleases(this) + int headVersion = (int) response[('tip_version')] + + (8..headVersion + 1).each({ javaVersion -> + if (retiredVersions.contains(javaVersion)) { + println "[INFO] $javaVersion is a retired version that isn't currently built. Skipping generation..." + return + } + + def config = [ + TEST : false, + GIT_URL : repoUri, + BRANCH : repoBranch, + BUILD_FOLDER : jobRoot, + CHECKOUT_CREDENTIALS: checkoutCreds, + JAVA_VERSION : javaVersion, + JOB_NAME : "trestle-openjdk${javaVersion}-pipeline", + SCRIPT : "${scriptFolderPath}/openjdk_pipeline.groovy", + disableJob : false, + pipelineSchedule : '0 0 31 2 0', // 31st Feb, so will never run, + adoptScripts : false, + releaseType : 'Nightly Not Publish' + ] + + def target + try { + target = load "${WORKSPACE}/${trestleFolderPath}/jdk${javaVersion}.groovy" + } catch (NoSuchFileException e) { + try { + println "[WARNING] jdk${javaVersion}.groovy does not exist, chances are we want a jdk${javaVersion}u.groovy file. Trying ${WORKSPACE}/${trestleFolderPath}/jdk${javaVersion}u.groovy" + target = load "${WORKSPACE}/${trestleFolderPath}/jdk${javaVersion}u.groovy" + } catch (NoSuchFileException e2) { + println "[WARNING] jdk${javaVersion}u.groovy does not exist, chances are we are generating from a repository that isn't Adopt's. Pulling Adopt's nightlies in..." + + checkoutAdoptPipelines() + try { + target = load "${WORKSPACE}/${ADOPT_DEFAULTS_JSON['configDirectories']['nightly']}/jdk${javaVersion}.groovy" + } catch (NoSuchFileException e3) { + try { + target = load "${WORKSPACE}/${ADOPT_DEFAULTS_JSON['configDirectories']['nightly']}/jdk${javaVersion}u.groovy" + } catch (NoSuchFileException e4) { + println "[WARNING] No config found for JDK${javaVersion} in the User's or Adopt's repository. Skipping generation..." + // break and move to next element in the loop + // groovylint-disable-next-line + return + } + } + checkoutUserPipelines() + } + } + println "[INFO] JDK${javaVersion}: loaded target configuration:" + println JsonOutput.prettyPrint(JsonOutput.toJson(target)) + + config.put('targetConfigurations', target.targetConfigurations) + + // hack as jenkins groovy does not seem to allow us to check if disableJob exists + try { + config.put('disableJob', target.disableJob) + } catch (Exception ex) { + config.put('disableJob', false) + } + + if (enablePipelineSchedule.toBoolean()) { + try { + config.put('pipelineSchedule', target.triggerSchedule_nightly) + } catch (Exception ex) { + config.put('pipelineSchedule', '0 0 31 2 0') + } + } + + if (useAdoptShellScripts.toBoolean()) { + config.put('adoptScripts', true) + } + config.put('enableReproducibleCompare', DEFAULTS_JSON['testDetails']['enableReproducibleCompare'] as Boolean) + config.put('enableTests', DEFAULTS_JSON['testDetails']['enableTests'] as Boolean) + config.put('enableTestDynamicParallel', DEFAULTS_JSON['testDetails']['enableTestDynamicParallel'] as Boolean) + + println "[INFO] JDK${javaVersion}: nightly pipelineSchedule = ${config.pipelineSchedule}" + + config.put('defaultsJson', DEFAULTS_JSON) + config.put('adoptDefaultsJson', ADOPT_DEFAULTS_JSON) + + println "[INFO] FINAL CONFIG FOR NIGHTLY JDK${javaVersion}" + println JsonOutput.prettyPrint(JsonOutput.toJson(config)) + + // Create the nightly job, using adopt's template if the user's one fails + try { + jobDsl targets: jobTemplatePath, ignoreExisting: false, additionalParameters: config + } catch (Exception e) { + println "${e}\n[WARNING] Something went wrong when creating the job dsl. It may be because we are trying to pull the template inside a user repository. Using Adopt's template instead..." + checkoutAdoptPipelines() + jobDsl targets: ADOPT_DEFAULTS_JSON['templateDirectories']['upstream'], ignoreExisting: false, additionalParameters: config + checkoutUserPipelines() + } + + generatedPipelines.add(config['JOB_NAME']) + + // Create weekly release pipeline + config.JOB_NAME = "weekly-openjdk${javaVersion}-pipeline" + config.SCRIPT = (params.WEEKLY_SCRIPT_PATH) ?: DEFAULTS_JSON['scriptDirectories']['weekly'] + if (!fileExists(config.SCRIPT)) { + println "[WARNING] ${config.SCRIPT} does not exist in your chosen repository. Updating it to use Adopt's instead" + checkoutAdoptPipelines() + config.SCRIPT = ADOPT_DEFAULTS_JSON['scriptDirectories']['weekly'] + println "[SUCCESS] The path is now ${config.SCRIPT} relative to ${ADOPT_DEFAULTS_JSON['repository']['pipeline_url']}" + checkoutUserPipelines() + } + config.PIPELINE = "openjdk${javaVersion}-pipeline" + config.weekly_release_scmReferences = target.weekly_release_scmReferences + + // Load weeklyTemplatePath. This is where the weekly_release_pipeline_job_template.groovy code is located compared to the repository root. This actually sets up the weekly pipeline job using the parameters above. + def weeklyTemplatePath = (params.WEEKLY_TEMPLATE_PATH) ?: DEFAULTS_JSON['templateDirectories']['weekly'] + + if (enablePipelineSchedule.toBoolean()) { + try { + config.put('pipelineSchedule', target.triggerSchedule_weekly) + } catch (Exception ex) { + config.put('pipelineSchedule', '0 0 31 2 0') + } + } + config.releaseType = "Weekly" + + println "[INFO] CREATING JDK${javaVersion} WEEKLY RELEASE PIPELINE WITH NEW CONFIG VALUES:" + println "JOB_NAME = ${config.JOB_NAME}" + println "SCRIPT = ${config.SCRIPT}" + println "PIPELINE = ${config.PIPELINE}" + println "releaseType = ${config.releaseType}" + println "weekly_release_scmReferences = ${config.weekly_release_scmReferences}" + + try { + jobDsl targets: weeklyTemplatePath, ignoreExisting: false, additionalParameters: config + } catch (Exception e) { + println "${e}\n[WARNING] Something went wrong when creating the weekly job dsl. It may be because we are trying to pull the template inside a user repository. Using Adopt's template instead..." + checkoutAdoptPipelines() + jobDsl targets: ADOPT_DEFAULTS_JSON['templateDirectories']['weekly'], ignoreExisting: false, additionalParameters: config + checkoutUserPipelines() + } + + generatedPipelines.add(config['JOB_NAME']) + + // config.load() loads into the current groovy binding, and returns "this", so we need to reset variables before next load of target + target.targetConfigurations = {} + target.triggerSchedule_nightly = '0 0 31 2 0' + target.triggerSchedule_weekly = '0 0 31 2 0' + target.weekly_release_scmReferences = {} + target.disableJob = false + }) + + // Fail if nothing was generated + if (generatedPipelines == []) { + throw new Exception('[ERROR] NO TRESTLE PIPELINES WERE GENERATED!') + } else { + println "[SUCCESS] THE FOLLOWING TRESTLE PIPELINES WERE GENERATED IN THE ${jobRoot} FOLDER" + println generatedPipelines + } + } + } finally { + // Always clean up, even on failure (doesn't delete the created jobs) + println '[INFO] Cleaning up...' + cleanWs deleteDirs: true + } +} diff --git a/pipelines/defaults.json b/pipelines/defaults.json index 72cdbdeb9..b643cfebc 100644 --- a/pipelines/defaults.json +++ b/pipelines/defaults.json @@ -21,7 +21,8 @@ "build" : "pipelines/jobs/configurations", "nightly" : "pipelines/jobs/configurations", "release" : "pipelines/jobs/configurations", - "evaluation" : "pipelines/jobs/configurations", + "evaluation" : "pipelines/jobs/configurations", + "trestle" : "pipelines/jobs/configurations", "platform" : "build-farm/platform-specific-configurations" }, "scriptDirectories" : { diff --git a/pipelines/jobs/configurations/jdk11u_trestle.groovy b/pipelines/jobs/configurations/jdk11u_trestle.groovy new file mode 100644 index 000000000..0ebed7036 --- /dev/null +++ b/pipelines/jobs/configurations/jdk11u_trestle.groovy @@ -0,0 +1,48 @@ +targetConfigurations = [ + 'x64Mac' : [ + 'hotspot', + 'fast_debug' + ], + 'x64Linux' : [ + 'hotspot', + 'fast_debug' + ], + 'x64AlpineLinux': [ + 'hotspot' + ], + 'x64Windows' : [ + 'hotspot', + 'fast_debug' + ], + 'x32Windows' : [ + 'hotspot' + ], + 'ppc64Aix' : [ + 'hotspot' + ], + 'ppc64leLinux' : [ + 'hotspot' + ], + 's390xLinux' : [ + 'hotspot' + ], + 'aarch64Linux' : [ + 'hotspot', + 'fast_debug' + ], + 'aarch64Mac' : [ + 'hotspot', + 'fast_debug' + ], + 'arm32Linux' : [ + 'hotspot' + ] +] + +// scmReferences to use for weekly trestle build +weekly_trestle_scmReferences = [ + 'hotspot' : '', + 'fast_debug' : '' +] + +return this diff --git a/pipelines/jobs/configurations/jdk17u_trestle.groovy b/pipelines/jobs/configurations/jdk17u_trestle.groovy new file mode 100644 index 000000000..3e6cdd9f4 --- /dev/null +++ b/pipelines/jobs/configurations/jdk17u_trestle.groovy @@ -0,0 +1,48 @@ +targetConfigurations = [ + 'x64Mac' : [ + 'hotspot', + 'fast_debug' + ], + 'x64Linux' : [ + 'hotspot', + 'fast_debug' + ], + 'x64AlpineLinux' : [ + 'hotspot' + ], + 'x64Windows' : [ + 'hotspot', + 'fast_debug' + ], + 'x32Windows' : [ + 'hotspot' + ], + 'ppc64leLinux': [ + 'hotspot' + ], + 'ppc64Aix' : [ + 'hotspot' + ], + 's390xLinux' : [ + 'hotspot' + ], + 'aarch64Linux': [ + 'hotspot', + 'fast_debug' + ], + 'aarch64Mac': [ + 'hotspot', + 'fast_debug' + ], + 'arm32Linux' : [ + 'hotspot' + ] +] + +// scmReferences to use for weekly trestle build +weekly_trestle_scmReferences = [ + 'hotspot' : '', + 'fast_debug' : '' +] + +return this diff --git a/pipelines/jobs/configurations/jdk21u_trestle.groovy b/pipelines/jobs/configurations/jdk21u_trestle.groovy new file mode 100644 index 000000000..ee544e4f2 --- /dev/null +++ b/pipelines/jobs/configurations/jdk21u_trestle.groovy @@ -0,0 +1,45 @@ +targetConfigurations = [ + 'x64Mac' : [ + 'hotspot', + 'fast_debug' + ], + 'x64Linux' : [ + 'hotspot', + 'fast_debug' + ], + 'x64AlpineLinux' : [ + 'hotspot', + 'fast_debug' + ], + 'aarch64AlpineLinux' : [ + 'hotspot' + ], + 'x64Windows' : [ + 'hotspot', + 'fast_debug' + ], + 'ppc64Aix' : [ + 'hotspot' + ], + 'ppc64leLinux': [ + 'hotspot' + ], + 's390xLinux' : [ + 'hotspot' + ], + 'aarch64Linux': [ + 'hotspot', + 'fast_debug' + ], + 'aarch64Mac': [ + 'hotspot' + ] +] + +// scmReferences to use for weekly trestle build +weekly_trestle_scmReferences = [ + 'hotspot' : '', + 'fast_debug' : '' +] + +return this diff --git a/pipelines/jobs/configurations/jdk23_trestle.groovy b/pipelines/jobs/configurations/jdk23_trestle.groovy new file mode 100644 index 000000000..f5739ce07 --- /dev/null +++ b/pipelines/jobs/configurations/jdk23_trestle.groovy @@ -0,0 +1,51 @@ +targetConfigurations = [ + 'x64Mac' : [ + 'hotspot', + 'fast_debug' + ], + 'x64Linux' : [ + 'hotspot', + 'fast_debug' + ], + 'x64AlpineLinux' : [ + 'hotspot' + ], + 'aarch64AlpineLinux' : [ + 'hotspot' + ], + 'x64Windows' : [ + 'hotspot', + 'fast_debug' + ], + 'ppc64Aix' : [ + 'hotspot' + ], + 'ppc64leLinux': [ + 'hotspot' + ], + 's390xLinux' : [ + 'hotspot' + ], + 'aarch64Linux': [ + 'hotspot', + 'fast_debug' + ], + 'aarch64Mac': [ + 'hotspot', + 'fast_debug' + ], + 'arm32Linux' : [ + 'hotspot' + ], + 'x32Windows' : [ + 'hotspot' + ] +] + +// scmReferences to use for weekly trestle build +weekly_trestle_scmReferences = [ + 'hotspot' : '', + 'fast_debug' : '' +] + +return this diff --git a/pipelines/jobs/configurations/jdk8u_trestle.groovy b/pipelines/jobs/configurations/jdk8u_trestle.groovy new file mode 100644 index 000000000..324909501 --- /dev/null +++ b/pipelines/jobs/configurations/jdk8u_trestle.groovy @@ -0,0 +1,47 @@ +targetConfigurations = [ + 'x64Mac' : [ + 'hotspot', + 'fast_debug' + ], + 'x64Linux' : [ + 'hotspot', + 'fast_debug' + ], + 'x64AlpineLinux' : [ + 'hotspot' + ], + 'x32Windows' : [ + 'hotspot' + ], + 'x64Windows' : [ + 'hotspot', + 'fast_debug' + ], + 'ppc64Aix' : [ + 'hotspot' + ], + 'ppc64leLinux' : [ + 'hotspot' + ], + 'aarch64Linux' : [ + 'hotspot', + 'fast_debug' + ], + 'arm32Linux' : [ + 'hotspot' + ], + 'x64Solaris': [ + 'hotspot' + ], + 'sparcv9Solaris': [ + 'hotspot' + ] +] + +// scmReferences to use for weekly trestle build +weekly_trestle_scmReferences = [ + 'hotspot' : '', + 'fast_debug' : '' +] + +return this