name: Validate Java e2e on: push: branches: - main - releases/* paths-ignore: - '**.md' pull_request: paths-ignore: - '**.md' schedule: - cron: '0 */12 * * *' workflow_dispatch: jobs: setup-java-major-versions: name: ${{ matrix.distribution }} ${{ matrix.version }} (jdk-x64) - ${{ matrix.os }} runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: os: [macos-13, windows-latest, ubuntu-latest] distribution: [ 'temurin', 'adopt', 'adopt-openj9', 'zulu', 'liberica', 'microsoft', 'semeru', 'corretto', 'dragonwell' ] # internally 'adopt-hotspot' is the same as 'adopt' version: ['21', '11', '17'] exclude: - distribution: microsoft version: 8 - distribution: dragonwell os: macos-13 include: - distribution: oracle os: macos-13 version: 17 - distribution: oracle os: windows-latest version: 20 - distribution: oracle os: ubuntu-latest version: 20 steps: - name: Checkout uses: actions/checkout@v4 - name: setup-java uses: ./ id: setup-java with: java-version: ${{ matrix.version }} distribution: ${{ matrix.distribution }} - name: Verify Java run: bash __tests__/verify-java.sh "${{ matrix.version }}" "${{ steps.setup-java.outputs.path }}" shell: bash setup-java-major-minor-versions: name: ${{ matrix.distribution }} ${{ matrix.version }} (jdk-x64) - ${{ matrix.os }} needs: setup-java-major-versions runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: os: [macos-latest, windows-latest, ubuntu-latest] distribution: ['temurin', 'zulu', 'liberica'] version: - '11.0' - '21.0' - '17.0.7+7' include: - distribution: oracle os: ubuntu-latest version: '20.0.1' - distribution: dragonwell os: ubuntu-latest version: '11.0' - distribution: dragonwell os: ubuntu-latest version: '11.0.13+9' steps: - name: Checkout uses: actions/checkout@v4 - name: setup-java uses: ./ id: setup-java with: java-version: ${{ matrix.version }} distribution: ${{ matrix.distribution }} - name: Verify Java run: bash __tests__/verify-java.sh "${{ matrix.version }}" "${{ steps.setup-java.outputs.path }}" shell: bash setup-java-check-latest: name: ${{ matrix.distribution }} ${{ matrix.version }} - check-latest flag - ${{ matrix.os }} needs: setup-java-major-versions runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: os: [macos-latest, windows-latest, ubuntu-latest] distribution: ['temurin', 'zulu', 'liberica', 'dragonwell'] exclude: - distribution: dragonwell os: macos-latest steps: - name: Checkout uses: actions/checkout@v4 - name: setup-java uses: ./ id: setup-java with: distribution: ${{ matrix.distribution }} java-version: 11 check-latest: true - name: Verify Java run: bash __tests__/verify-java.sh "11" "${{ steps.setup-java.outputs.path }}" shell: bash setup-java-multiple-jdks: name: ${{ matrix.distribution }} ${{ matrix.version }} - multiple jdks - ${{ matrix.os }} needs: setup-java-major-versions runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: os: [macos-latest, windows-latest, ubuntu-latest] distribution: ['temurin', 'zulu', 'liberica', 'dragonwell'] exclude: - distribution: dragonwell os: macos-latest steps: - name: Checkout uses: actions/checkout@v4 - name: setup-java uses: ./ id: setup-java with: distribution: ${{ matrix.distribution }} java-version: | 11 17 - name: Verify Java env variables run: | $versionsArr = "11","17" foreach ($version in $versionsArr) { $envName = "JAVA_HOME_${version}_${env:RUNNER_ARCH}" $JavaVersionPath = [Environment]::GetEnvironmentVariable($envName) if (-not (Test-Path "$JavaVersionPath")) { Write-Host "$envName is not found" exit 1 } } shell: pwsh - name: Verify Java run: bash __tests__/verify-java.sh "17" "${{ steps.setup-java.outputs.path }}" shell: bash setup-java-ea-versions-zulu: name: zulu ${{ matrix.version }} (jdk-x64) - ${{ matrix.os }} needs: setup-java-major-minor-versions runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: os: [macos-13, windows-latest, ubuntu-latest] version: ['17-ea', '15.0.0-ea.14'] steps: - name: Checkout uses: actions/checkout@v4 - name: setup-java uses: ./ id: setup-java with: java-version: ${{ matrix.version }} distribution: zulu - name: Verify Java run: bash __tests__/verify-java.sh "${{ matrix.version }}" "${{ steps.setup-java.outputs.path }}" shell: bash setup-java-ea-versions-temurin: name: temurin ${{ matrix.version }} (jdk-x64) - ${{ matrix.os }} needs: setup-java-major-minor-versions runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: os: [macos-latest, windows-latest, ubuntu-latest] version: ['17-ea'] steps: - name: Checkout uses: actions/checkout@v4 - name: setup-java uses: ./ id: setup-java with: java-version: ${{ matrix.version }} distribution: temurin - name: Verify Java run: bash __tests__/verify-java.sh "${{ matrix.version }}" "${{ steps.setup-java.outputs.path }}" shell: bash setup-java-custom-package-type: name: ${{ matrix.distribution }} ${{ matrix.version }} (${{ matrix.java-package }}-x64) - ${{ matrix.os }} needs: setup-java-major-minor-versions runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: os: [macos-13, windows-latest, ubuntu-latest] distribution: ['temurin', 'zulu', 'liberica', 'semeru'] java-package: ['jre'] version: ['17.0'] include: - distribution: 'zulu' java-package: jre+fx version: '21' os: ubuntu-latest - distribution: 'zulu' java-package: jdk+fx version: '21.0' os: ubuntu-latest - distribution: 'liberica' java-package: jdk+fx version: '21' os: ubuntu-latest - distribution: 'liberica' java-package: jre+fx version: '11' os: ubuntu-latest - distribution: 'corretto' java-package: jre version: '8' os: windows-latest steps: - name: Checkout uses: actions/checkout@v4 - name: setup-java uses: ./ id: setup-java with: java-version: ${{ matrix.version }} java-package: ${{ matrix.java-package }} distribution: ${{ matrix.distribution }} - name: Verify Java run: bash __tests__/verify-java.sh "${{ matrix.version }}" "${{ steps.setup-java.outputs.path }}" shell: bash # Only Liberica and Zulu provide x86 setup-java-x86: name: ${{ matrix.distribution }} ${{ matrix.version }} (jdk-${{ matrix.architecture }}) - ${{ matrix.os }} needs: setup-java-major-minor-versions runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: # x86 is not supported on macOS os: [windows-latest, ubuntu-latest] distribution: ['liberica', 'zulu', 'corretto'] version: ['11'] steps: - name: Checkout uses: actions/checkout@v4 - name: setup-java uses: ./ id: setup-java with: distribution: ${{ matrix.distribution }} java-version: ${{ matrix.version }} architecture: 'x86' - name: Verify Java run: bash __tests__/verify-java.sh "${{ matrix.version }}" "${{ steps.setup-java.outputs.path }}" shell: bash setup-java-version-both-version-inputs-presents: name: ${{ matrix.distribution }} version (should be from input) - ${{ matrix.os }} runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: os: [macos-latest, windows-latest, ubuntu-latest] distribution: ['temurin', 'microsoft', 'corretto'] java-version-file: ['.java-version', '.tool-versions'] steps: - name: Checkout uses: actions/checkout@v4 - name: Create .java-version file shell: bash run: echo "17" > .java-version - name: Create .tool-versions file shell: bash run: echo "java 17" > .tool-versions - name: setup-java uses: ./ id: setup-java with: distribution: ${{ matrix.distribution }} java-version: 11 java-version-file: ${{matrix.java-version-file }} - name: Verify Java run: bash __tests__/verify-java.sh "11" "${{ steps.setup-java.outputs.path }}" shell: bash setup-java-version-from-file-major-notation: name: ${{ matrix.distribution }} version from file X - ${{ matrix.os }} runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: os: [macos-latest, windows-latest, ubuntu-latest] distribution: ['temurin', 'zulu', 'liberica', 'microsoft', 'corretto'] java-version-file: ['.java-version', '.tool-versions'] steps: - name: Checkout uses: actions/checkout@v4 - name: Create .java-version file shell: bash run: echo "11" > .java-version - name: Create .tool-versions file shell: bash run: echo "java 11" > .tool-versions - name: setup-java uses: ./ id: setup-java with: distribution: ${{ matrix.distribution }} java-version-file: ${{matrix.java-version-file }} - name: Verify Java run: bash __tests__/verify-java.sh "11" "${{ steps.setup-java.outputs.path }}" shell: bash setup-java-version-from-file-major-minor-patch-notation: name: ${{ matrix.distribution }} version from file X.Y.Z - ${{ matrix.os }} runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: os: [macos-latest, windows-latest, ubuntu-latest] distribution: ['adopt', 'adopt-openj9', 'zulu'] java-version-file: ['.java-version', '.tool-versions'] steps: - name: Checkout uses: actions/checkout@v4 - name: Create .java-version file shell: bash run: echo "17.0.10" > .java-version - name: Create .tool-versions file shell: bash run: echo "java 17.0.10" > .tool-versions - name: setup-java uses: ./ id: setup-java with: distribution: ${{ matrix.distribution }} java-version-file: ${{matrix.java-version-file }} - name: Verify Java run: bash __tests__/verify-java.sh "17.0.10" "${{ steps.setup-java.outputs.path }}" shell: bash setup-java-version-from-file-major-minor-patch-with-dist: name: ${{ matrix.distribution }} version from file 'openjdk64-17.0.10' - ${{ matrix.os }} runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: os: [macos-latest, windows-latest, ubuntu-latest] distribution: ['adopt', 'zulu', 'liberica'] java-version-file: ['.java-version', '.tool-versions'] steps: - name: Checkout uses: actions/checkout@v4 - name: Create .java-version file shell: bash run: echo "openjdk64-17.0.10" > .java-version - name: Create .tool-versions file shell: bash run: echo "java openjdk64-17.0.10" > .tool-versions - name: setup-java uses: ./ id: setup-java with: distribution: ${{ matrix.distribution }} java-version-file: ${{matrix.java-version-file }} - name: Verify Java run: bash __tests__/verify-java.sh "17.0.10" "${{ steps.setup-java.outputs.path }}" shell: bash - name: Setup Node.js environment uses: actions/setup-node@v4.0.3 with: # Set always-auth in npmrc. always-auth: # optional, default is false # Version Spec of the version to use. Examples: 12.x, 10.15.1, >=10.15.0. node-version: # optional # File containing the version Spec of the version to use. Examples: package.json, .nvmrc, .node-version, .tool-versions. node-version-file: # optional # Target architecture for Node to use. Examples: x86, x64. Will use system architecture by default. architecture: # optional # Set this option if you want the action to check for the latest available version that satisfies the version spec. check-latest: # optional # Optional registry to set up for auth. Will set the registry in a project level .npmrc and .yarnrc file, and set up auth to read in from env.NODE_AUTH_TOKEN. registry-url: # optional # Optional scope for authenticating against scoped registries. Will fall back to the repository owner when using the GitHub Packages registry (https://npm.pkg.github.com/). scope: # optional # Used to pull node distributions from node-versions. Since there's a default, this is typically not supplied by the user. When running this action on github.com, the default value is sufficient. When running on GHES, you can pass a personal access token for github.com if you are experiencing rate limiting. token: # optional, default is ${{ github.server_url == 'https://github.com' && github.token || '' }} # Used to specify a package manager for caching in the default directory. Supported values: npm, yarn, pnpm. cache: # optional # Used to specify the path to a dependency file: package-lock.json, yarn.lock, etc. Supports wildcards or a list of file names for caching multiple dependencies. cache-dependency-path: # optional