Skip to content
Branch: master
Find file History
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
..
Failed to load latest commit information.
common
docker-slaves
jobs
variables
ARTIFACTORY.md
README.md
authorized_keys

README.md

Eclipse OpenJ9 Jenkins Builds

This folder contains Jenkins pipeline scripts that are used in the OpenJ9 Jenkins builds.

Triggering Pull Request Builds from Github

  • You can request a PR build to do compile or compile & test

  • Current supported test levels are sanity & extended

  • Current supported test groups are functional & system

  • Current available platforms are

    • Linux on x86-64
      • Spec: x86-64_linux
      • Shortname: xlinux
    • Linux on x86-64 largeheap/non-compressed references
      • Spec: x86-64_linux_xl
      • Shortname: xlinuxlargeheap or xlinuxxl
    • Linux on x86-64 with CMake
      • Spec: x86-64_linux_cm
      • Shortname: xlinuxcm or xlinuxcmake
    • Linux on s390x
      • Spec: s390x_linux
      • Shortname: zlinux
    • Linux on ppc64le
      • Spec: ppc64le_linux
      • Shortname: plinux
    • AIX on ppc64
      • Spec: ppc64_aix
      • Shortname: aix
    • Windows on x86-64
      • Spec: x86-64_windows
      • shortname: win
    • Windows on x86 (32bit, supported on JDK8 only) Spec: x86-32_windows Shortname: win32
    • OSX on x86-64
      • Spec: x86-64_mac
      • Shortname: osx
    • OSX on x86-64 largeheap/non-compressed references
      • Spec: x86-64_mac_xl
      • Shortname: osxlargeheap or osxxl
  • OpenJ9 committers can request builds by commenting in a pull request

    • Format: Jenkins <build type> <level>.<group> <platform>[,<platform>,...,<platform>] jdk<version>[,jdk<version>,...,jdk<version>]
    • <build type> is compile | test
    • <level> is sanity | extended (required only for "test" <build type>)
    • <group> is functional | system
    • <platform> is one of the platform shorthands above
    • <version> is the number of the supported release, e.g. 8 | 11 | next
  • Note: You can use keyword all for platform but not for test level/type or JDK versions.

  • Note: For backward compatability <level>.<test type> equal to sanity or extended is acceptable and will map to sanity.functional and extended.functional respectively.

Examples
  • Request a Compile-only build on all platforms and multiple versions by commenting in a PR
    • Jenkins compile all jdk8,jdk11
  • Request a sanity functional build on zLinux and multiple versions
    • Jenkins test sanity.functional zlinux jdk8,jdk11
  • Request an extended functional and system build on pLinux for a single version
    • Jenkins test extended.functional,extended.system plinux jdk8
  • Request a sanity build on z,p Linux for multiple versions
    • Jenkins test sanity zlinux,plinux jdk8,jdk11
  • Request sanity.system test on all platforms and multiple versions
    • Jenkins test sanity.system all jdk8,jdk11

You can request a Pull Request build from the Eclipse OpenJ9 repository - openj9 - or the Extensions OpenJDK* for Eclipse OpenJ9 repositories:

Dependent Changes
  • If you have dependent change(s) in either eclipse/omr, eclipse/openj9-omr, or ibmruntimes/openj9-openjdk-jdk*, you can build & test with all needed changes
  • Request a build by including the PR ref or branch name in your trigger comment
  • Ex. Dependent change in OMR Pull Request #123
    • Jenkins test sanity xlinux jdk8 depends eclipse/omr#123
  • Ex. Dependent change in eclipse/omr master branch (useful if a dependent OMR PR is already merged)
    • Jenkins test sanity xlinux jdk8 depends eclipse/omr#master
  • Ex. Dependent change in OpenJ9-OMR Pull Request #456
    • Jenkins test sanity xlinux jdk8 depends eclipse/openj9-omr#456
  • Ex. Dependent change in OpenJDK Pull Request #789
    • Jenkins test sanity xlinux jdk8 depends ibmruntimes/openj9-openjdk-jdk8#789
  • Ex. Dependent changes in OMR and OpenJDK
    • Jenkins test sanity all jdk8 depends eclipse/omr#123 ibmruntimes/openj9-openjdk-jdk8#789
  • Ex. If you have a dependent change and only want one platform, depends comes last
    • Jenkins test sanity zlinux jdk8 depends eclipse/omr#123
Note: When specifying a dependent change in an OpenJDK extensions repo, you can only build the SDK version that matches the repo where the dependent change lives. Eg. You cannot build JDK8 with a PR in openj9-openjdk-jdk11.
Other Pull Requests builds
  • To trigger a Line Endings Check

    • Jenkins line endings check
  • To trigger a Copyright Check

    • Jenkins copyright check
  • To trigger a SignedOffBy Check (Only applicable to the Extensions repos)

    • Jenkins signed off by check

Jenkins Pipelines

In this section:

  • <platform> is the full spec name eg. ppc64_aix
  • <repo> is the Eclipse OpenJ9 repository or an Extensions OpenJDK* for Eclipse OpenJ9 repository, e.g. OpenJ9 | OpenJDK<version>

Pull Requests

Pull Requests for all platforms and versions are available here.

For Compile & Test PRs, there is a single top level job (for each repository) that connects Jenkins and the Github repo. This job will trigger downstream jobs based on what is requested in the pull request trigger comment (ghprbCommentBody)

  • PullRequest-<repo>
    • Description:
      • Setup job that launches downstream Pipeline job(s)
    • Trigger:
      • Github PR comment Jenkins (compile|test).*

Other PR jobs

  • PullRequest-LineEndingsCheck-<repo>

    • Description:
      • Checks the files modified in a pull request have correct line endings
    • Trigger:
      • Automatically builds on every PR
      • Retrigger with Jenkins line endings check
  • PullRequest-CopyrightCheck-<repo>

    • Description:
      • Checks the files modified in a pull request have copyright with current year
    • Trigger:
      • Automatically builds on every PR
      • Retrigger with Jenkins copyright check
  • PullRequest-signedOffByCheck-<repo>

    • Description:
      • Checks the commits in a pull request have proper sign-off
    • Trigger:
      • Trigger with Jenkins signed off by check

Pipelines

Pipelines for all platforms and versions are available here.

  • Any platform and version pipeline:

    • Name: Pipeline-Build-Test-JDK<version>-<platform>
    • Description:
      • Compile Eclipse OpenJ9 on <platform> for Extensions OpenJDK<version> and run sanity & extended test suites
      • Triggers:
        • Build-JDK<version>-<platform>
        • Test-<sanity|extended>.<functional|system>-JDK<version>-<platform>
    • Trigger:
      • build periodically, @midnight
  • Pipeline-OMR-Acceptance

    • Build Status
    • Description:
      • Compile and run sanity tests against new OMR content
      • Triggers:
        • Build-JDK<version>-<platform> and Test-Sanity-JDK<version>-<platform> across all platforms and versions
        • Promote_OMR once all testing is passed
    • Trigger: Triggered by Mirror-OMR-to-OpenJ9-OMR

Build

Build pipelines for all platforms and versions are available here.

  • Any platform and version build pipeline:
    • Name: Build-JDK<version>-<platform>
    • Description:
      • Compiles Eclipse OpenJ9 on <platform> for <version>
      • Archives the SDK and test material for use in downstream jobs
    • Trigger:
      • This job is used in other pipelines but can be launched manually

Note: Windows 32 is available only for JDK8. Thus the only available build for win_x86 platform (Windows 32bits) is Build-JDK8-win_x86.

Test

Test pipelines for all platforms and versions are available here.

  • Any platform and version build pipeline:
    • Name: Test-<sanity|extended>.<functional|system>-JDK<version>-<platform>
    • Description:
      • Runs sanity or extended tests
    • Trigger:
      • This job is used in other pipelines but can be launched manually

Mode details could be found on AdoptOpenJDK Testing. The Running AdoptOpenJDK Tests provides further details on how to set up Jenkins test pipelines.

Infrastructure

Infrastructure pipelines are available here

  • Mirror-OMR-to-OpenJ9-OMR

  • Promote_OMR

    • Build Status
    • Description:
      • Promotes eclipse/openj9-omr branch master to branch openj9
      • Lays a tag down on the promoted SHA in the format promote_merge_YYYYMMDD_HHMMSS with annotations including the current OpenJ9 and OpenJDK SHAs
    • Trigger:
      • Last step of Pipeline-OMR-Acceptance
  • Mirror-OpenJ9-Website-to-Eclipse

Adding Builds

  • Always add pipeline style jobs so the code can be committed to the repo once it is ready
  • Update this readme when your build is in production use
  • Whenever possible, reuse existing builds or existing jenkins files
You can’t perform that action at this time.