Skip to content

Latest commit

 

History

History

configurations

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Configuration Files used by the build job generators

Note: The contents of this file was split out from the top level README.md in this repository

The pipelines/jobs/configurations directory contains two categories of configuration files that our jenkins pipelines use (Nicknamed #Build Configs and #Nightly Configs for short).

To ensure both configurations are not overridden in a race condition scenario by another job, the job generators ensure they remain in the sync with the repository.

Generally, any new parameters/configurations that effect the jenkins environment directly should be implemented here. If this is not the case, it would likely be better placed in temurin-build/platform-specific-configurations (for OS or make-adopt-build-farm.sh specific use cases) or temurin-build/build.sh (for anyone, including end users and jenkins pipelines).

Build

The build config files are the ones that follow the format jdkxx(u)_pipeline_config.groovy with xx being the version number and an optional u if the Java source code is pulled from an update repository. Each is a groovy class with a single Map<String, Map<String, ?>> property containing node labels, tests and other jenkins parameters/constants that are crucial for allowing different parts of the build pipeline to mesh together.

Each architecture/platform has it's own entry similar to the one below (for JDK8 x64 mac builds). The pipelines use the parent map key (e.g. x64Mac) to retrieve the data. See #Data Fields for the currently available fields you can utilise.

x64Mac        : [
    os                   : 'mac',
    arch                 : 'x64',
    additionalNodeLabels : [
            temurin  : 'macos10.14',
            corretto : 'build-macstadium-macos1010-1',
            openj9   : 'macos10.14'
    ],
    test                 : 'default'
]

Data fields

NOTE: When the type field implies a map, the String key of the inner map is the variant for that field. E.g:

                additionalNodeLabels : [
                        temurin : 'xlc13&&aix710',
                        openj9 :  'xlc13&&aix715'
                ],

Name Required? Type
Description
os String Operating system tag that will identify the job on jenkins and determine which platforms configs to pull from temurin-build.
E.g. windows, solaris
arch String Architecture tag that will identify the job on jenkins and determine which build params to use.
E.g. x64, sparcv9, x86-32
test String
OR
Map<String, List>
OR
Map<String, List or Map<String, List>>
Case one: Tests to run against the binary after the build has completed. A default tag indicates that you want to run whatever the default test nightly/release list is.

Case two: You can also specify your own list for that particular platform (not variant).

Case three: Or you can even specify the list for that particular platform per variant. The list could be specific one sanity.openjdk or default (similar to the first case) or a map per nightly or release (similar to case two).
testDynamic Boolean
OR
Map<String, ?>
PARALLEL=Dynamic parameter setting. False : no Parallel. Or you can set the parameters with or without variant.
dockerImage String
OR
Map<String, String>
Builds the JDK inside a docker container. Should be a DockerHub identifier to pull from in case dockerFile is not specified.
E.g. adoptopenjdk/centos6_build_image
dockerFile String
OR
Map<String, String>
Builds the JDK inside a docker container using the locally stored image file. Used in conjunction with dockerImage to specify a particular variant to build or pull.
E.g. pipelines/build/dockerFiles/cuda.dockerfile
dockerNode String
OR
Map<String, String>
Specifies a specific jenkins docker node label to shift into to build the JDK.
E.g. sw.config.uid1000
dockerRegistry String
OR
Map<String, String>
Used for Docker login when pulling dockerImage from a custom Docker registry. Used in conjunction with dockerImage. Default (blank) will be DockerHub. Must also use dockerCredential.
dockerCredential String
OR
Map<String, String>
Used for Docker login when pulling a dockerImage. Value is the Jenkins credential ID for the username and password of the dockerRegistry. Used in conjunction with dockerImage. Can use with custom dockerRegistry or default DockerHub. Must use this if using a non-default registry.
additionalNodeLabels String
OR
Map<String, String>
Appended to the default constructed jenkins node label (often used to lock variants or build configs to specific machines). Jenkins will additionally search for a node with this tag as well as the default node label.
E.g. build-macstadium-macos1010-1, macos10.14
additionalTestLabels String
OR
Map<String, String>
Used by aqa-tests to lock specific tests to specific machine nodes (in the same manner as additionalNodeLabels)
E.g. !(centos6||rhel6), dragonwell
configureArgs String
OR
Map<String, String>
Configuration arguments that will ultimately be passed to OpenJDK's ./configure
E.g. --enable-unlimited-crypto --with-jvm-variants=server --with-zlib=system
buildArgs String
OR
Map<String, String>
Build arguments that will ultimately be passed to temurin-build's ./makejdk-any-platform.sh script
E.g. --enable-unlimited-crypto --with-jvm-variants=server --with-zlib=system
additionalFileNameTag String Commonly used when building large heap versions of the binary, this tag will also be included in the jenkins job name and binary filename. Include this parameter if you have an "extra" variant that requires a different tagname
E.g. linuxXL
crossCompile String
OR
Map<String, String>
Used when building on a cross compiled system, informing jenkins to treat it differently when retrieving the version and producing the binary. This value is also used to create the jenkins node label alongside the arch (similarly to additionalNodeLabels)
E.g. x64
bootJDK String JDK version number to specify to temurin-build's make-adopt-build-farm.sh script, informing it to utilise a predefined location of a boot jdk
E.g. 8, 11
platformSpecificConfigPath String temurin-build repository path to pull the operating system configurations from inside temurin-build's set-platform-specific-configurations.sh. Do not include the repository name or branch as this is prepended automatically.
E.g. pipelines/TestLocation/platform-specific-configurations
codebuild Boolean Setting this field will tell jenkins to spin up an Azure or AWS cloud machine, allowing the build to retrieve a machine not normally available on the Jenkins server. It does this by appending a codebuild flag to the jenkins label.
cleanWorkspaceAfterBuild Boolean Setting this field will tell jenkins to clean down the workspace after the build has completed. Particularly useful for AIX where disk space can be limited.

Nightly

The nightly or beta/non-release config files are the ones that follow the format jdkxx(u).groovy with xx being the version number and an optional u if the Java source code is pulled from an update repository. Each is a simple groovy script that's contents can be loaded in and accessed by another script.

Evaluation pipeline/jobs

The evaluation config files are the ones that follow the format jdkxx(u)_evaluation.groovy with xx being the version number and an optional u if the Java source code is pulled from an update repository.

targetConfigurations

A single Map<String, Map<String, String>> variable containing what platforms and variants will be run in the nightly builds, evaluation builds and releases (by default, this can be altered in jenkins parameters before executing a user build). If you are creating your own nightly config, you will need to ensure the key values of the upper map are the same as the key values in the corresponding build config file.

Release pipeline/jobs

The release config files are the ones that follow the format jdkxx(u)_release.groovy with xx being the version number and an optional u if the Java source code is pulled from an update repository. jdkxx(u)*.groovy

targetConfigurations = [
        "x64Mac"        : [
                "temurin",
                "openj9"
        ],
        "x64Linux"      : [
                "temurin",
                "openj9",
                "corretto",
                "dragonwell"
        ],
        "x32Windows"    : [
                "temurin",
                "openj9"
        ],
        "x64Windows"    : [
                "temurin",
                "openj9",
                "dragonwell"
        ],
        "ppc64Aix"      : [
                "temurin",
                "openj9"
        ],
        "ppc64leLinux"  : [
                "temurin",
                "openj9"
        ],
        "s390xLinux"    : [
                "temurin",
                "openj9"
        ],
        "aarch64Linux"  : [
                "temurin",
                "openj9",
                "dragonwell"
        ],
        "arm32Linux"  : [
                "temurin"
        ],
        "sparcv9Solaris": [
                "temurin"
        ]
]

disableJob

If this is present, the jenkins generators will still create the top-level pipeline and downstream jobs but will set them as disabled. jdkxx(u).groovy

disableJob = true

triggerSchedule_nightly / triggerSchedule_weekly / triggerSchedule_evaluation / triggerSchedule_weekly_evaluation

All JDK versions now support "beta" EA triggered builds from the publication of upstream build tags. Eclipse Adoptium no longer runs scheduled nightly/weekend builds.

The one exception to this is Oracle managed STS versions, whose builds are managed internal to Oracle and not published until the GA day. For these a triggerSchedule_weekly is required to build the upstream HEAD commits on a regular basis.

Cron expression that defines when (and how often) nightly/evaluation and weekly/weekly-evaluation builds will be executed

in jdkxx(u).groovy

triggerSchedule_nightly="TZ=UTC\n05 18 * * 1,3,5"
triggerSchedule_weekly="TZ=UTC\n05 12 * * 6"

in jdkXX(u)_evaluation.groovy

triggerSchedule_evaluation="TZ=UTC\n15 18 * * 1,3,5"
triggerSchedule_weekly_evaluation="TZ=UTC\n25 12 * * 6"

weekly_release_scmReferences / weekly_evaluation_scmReferences

Source control references (e.g. tags) to use in the scheduled weekly release or weekly evaluation builds in jdkXX(u).groovy Use below two ways can set the job never to run:

  • do not set triggerSchedule_nightly or triggerSchedule_weekly in the groovy file
  • untick ENABLE_PIPELINE_SCHEDULE option in the Jenkins job which calls pipelines/build/regeneration/build_pipeline_generator.groovy

weekly_release_scmReferences

Source control references (e.g. tags) to use in the scheduled weekly release builds jdkxx(u).groovy

weekly_release_scmReferences = [
        "temurin"        : "jdk8u282-b08"
]

in jdkXX(u)_evaluation.groovy

weekly_evaluation_scmReferences== [
        "temurin"        : "jdk8u282-b07",
        "openj9"         : "v0.24.0-release",
        "corretto"       : "",
        "dragonwell"     : ""
]