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-latest, windows-latest, ubuntu-latest] distribution: ['temurin', 'adopt', 'adopt-openj9', 'zulu', 'liberica', 'microsoft', 'corretto' ] # internally 'adopt-hotspot' is the same as 'adopt' version: ['8', '11', '16'] exclude: - distribution: microsoft version: 8 steps: - name: Checkout uses: actions/checkout@v3 - 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' - '8.0.302' - '16.0.2+7' steps: - name: Checkout uses: actions/checkout@v3 - 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'] steps: - name: Checkout uses: actions/checkout@v3 - 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'] steps: - name: Checkout uses: actions/checkout@v3 - 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-latest, windows-latest, ubuntu-latest] version: ['17-ea', '15.0.0-ea.14'] steps: - name: Checkout uses: actions/checkout@v3 - 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@v3 - 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-latest, windows-latest, ubuntu-latest] distribution: ['temurin', 'zulu', 'liberica'] java-package: ['jre'] version: ['17.0'] include: - distribution: 'zulu' java-package: jre+fx version: '8' os: ubuntu-latest - distribution: 'zulu' java-package: jdk+fx version: '8.0.242' os: ubuntu-latest - distribution: 'liberica' java-package: jdk+fx version: '8' 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@v3 - 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@v3 - 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' ] steps: - name: Checkout uses: actions/checkout@v3 - name: Create .java-version file shell: bash run: echo "8" > .java-version - name: setup-java uses: ./ id: setup-java with: distribution: ${{ matrix.distribution }} java-version: 11 java-version-file: '.java-version' - 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' ] steps: - name: Checkout uses: actions/checkout@v3 - name: Create .java-version file shell: bash run: echo "11" > .java-version - name: setup-java uses: ./ id: setup-java with: distribution: ${{ matrix.distribution }} java-version-file: '.java-version' - 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' ] steps: - name: Checkout uses: actions/checkout@v3 - name: Create .java-version file shell: bash run: echo "11.0.2" > .java-version - name: setup-java uses: ./ id: setup-java with: distribution: ${{ matrix.distribution }} java-version-file: '.java-version' - name: Verify Java run: bash __tests__/verify-java.sh "11.0.2" "${{ steps.setup-java.outputs.path }}" shell: bash setup-java-version-from-file-major-minor-patch-with-dist: name: ${{ matrix.distribution }} version from file 'openjdk64-11.0.2' - ${{ matrix.os }} runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: os: [macos-latest, windows-latest, ubuntu-latest] distribution: ['adopt', 'zulu', 'liberica' ] steps: - name: Checkout uses: actions/checkout@v3 - name: Create .java-version file shell: bash run: echo "openjdk64-11.0.2" > .java-version - name: setup-java uses: ./ id: setup-java with: distribution: ${{ matrix.distribution }} java-version-file: '.java-version' - name: Verify Java run: bash __tests__/verify-java.sh "11.0.2" "${{ steps.setup-java.outputs.path }}" shell: bash setup-java-version-from-pom-spring-boot-specification: name: ${{ matrix.distribution }} version from pom.xml - ${{ matrix.os }} runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: os: [macos-latest, windows-latest, ubuntu-latest] distribution: ['adopt', 'zulu', 'liberica'] steps: - name: Checkout uses: actions/checkout@v3 - name: Create pom.xml file shell: bash run: | echo "" > pom.xml echo "" >> pom.xml echo " 4.0.0" >> pom.xml echo " com.test" >> pom.xml echo " Test" >> pom.xml echo " 0.0.1-SNAPSHOT" >> pom.xml echo " Test" >> pom.xml echo " " >> pom.xml echo " 11" >> pom.xml echo " " >> pom.xml echo " " >> pom.xml echo " " >> pom.xml echo " " >> pom.xml echo " " >> pom.xml echo " " >> pom.xml echo " org.springframework.boot" >> pom.xml echo " spring-boot-maven-plugin" >> pom.xml echo " " >> pom.xml echo " " >> pom.xml echo " " >> pom.xml echo "" >> pom.xml - name: setup-java uses: ./ id: setup-java with: distribution: ${{ matrix.distribution }} java-version-file: 'pom.xml' - name: Verify Java run: bash __tests__/verify-java.sh "11" "${{ steps.setup-java.outputs.path }}" shell: bash setup-java-version-from-pom-maven-compiler-source-specification: name: ${{ matrix.distribution }} version from pom.xml - ${{ matrix.os }} runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: os: [macos-latest, windows-latest, ubuntu-latest] distribution: ['adopt', 'zulu', 'liberica'] steps: - name: Checkout uses: actions/checkout@v3 - name: Create pom.xml file shell: bash run: | echo "" > pom.xml echo "" >> pom.xml echo " 4.0.0" >> pom.xml echo " foo.bar" >> pom.xml echo " FooBarr" >> pom.xml echo " 0.0.1-SNAPSHOT" >> pom.xml echo " " >> pom.xml echo " 1.8" >> pom.xml echo " 1.8" >> pom.xml echo " " >> pom.xml echo " " >> pom.xml echo " " >> pom.xml echo " " >> pom.xml echo " org.apache.maven.plugins" >> pom.xml echo " maven-compiler-plugin" >> pom.xml echo " 3.10.1" >> pom.xml echo " " >> pom.xml echo " " >> pom.xml echo " " >> pom.xml echo "" >> pom.xml - name: setup-java uses: ./ id: setup-java with: distribution: ${{ matrix.distribution }} java-version-file: 'pom.xml' - name: Verify Java run: bash __tests__/verify-java.sh "8" "${{ steps.setup-java.outputs.path }}" shell: bash setup-java-version-from-pom-maven-compiler-release-specification: name: ${{ matrix.distribution }} version from pom.xml - ${{ matrix.os }} runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: os: [macos-latest, windows-latest, ubuntu-latest] distribution: ['adopt', 'zulu', 'liberica'] steps: - name: Checkout uses: actions/checkout@v3 - name: Create pom.xml file shell: bash run: | echo "" > pom.xml echo "" >> pom.xml echo " 4.0.0" >> pom.xml echo " foo.bar" >> pom.xml echo " FooBarr" >> pom.xml echo " 0.0.1-SNAPSHOT" >> pom.xml echo " " >> pom.xml echo " 8" >> pom.xml echo " " >> pom.xml echo " " >> pom.xml echo " " >> pom.xml echo " " >> pom.xml echo " org.apache.maven.plugins" >> pom.xml echo " maven-compiler-plugin" >> pom.xml echo " 3.10.1" >> pom.xml echo " " >> pom.xml echo " " >> pom.xml echo " " >> pom.xml echo "" >> pom.xml - name: setup-java uses: ./ id: setup-java with: distribution: ${{ matrix.distribution }} java-version-file: 'pom.xml' - name: Verify Java run: bash __tests__/verify-java.sh "8" "${{ steps.setup-java.outputs.path }}" shell: bash setup-java-version-from-pom-maven-compiler-configuration-source-specification: name: ${{ matrix.distribution }} version from pom.xml - ${{ matrix.os }} runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: os: [macos-latest, windows-latest, ubuntu-latest] distribution: ['adopt', 'zulu', 'liberica'] steps: - name: Checkout uses: actions/checkout@v3 - name: Create pom.xml file shell: bash run: | echo "" > pom.xml echo "" >> pom.xml echo " 4.0.0" >> pom.xml echo " foo.bar" >> pom.xml echo " FooBarr" >> pom.xml echo " 0.0.1-SNAPSHOT" >> pom.xml echo " " >> pom.xml echo " " >> pom.xml echo " " >> pom.xml echo " org.apache.maven.plugins" >> pom.xml echo " maven-compiler-plugin" >> pom.xml echo " 3.10.1" >> pom.xml echo " " >> pom.xml echo " 1.8" >> pom.xml echo " 1.8" >> pom.xml echo " " >> pom.xml echo " " >> pom.xml echo " " >> pom.xml echo " " >> pom.xml echo "" >> pom.xml - name: setup-java uses: ./ id: setup-java with: distribution: ${{ matrix.distribution }} java-version-file: 'pom.xml' - name: Verify Java run: bash __tests__/verify-java.sh "8" "${{ steps.setup-java.outputs.path }}" shell: bash setup-java-version-from-pom-maven-compiler-configuration-release-specification: name: ${{ matrix.distribution }} version from pom.xml - ${{ matrix.os }} runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: os: [macos-latest, windows-latest, ubuntu-latest] distribution: ['adopt', 'zulu', 'liberica'] steps: - name: Checkout uses: actions/checkout@v3 - name: Create pom.xml file shell: bash run: | echo "" > pom.xml echo "" >> pom.xml echo " 4.0.0" >> pom.xml echo " foo.bar" >> pom.xml echo " FooBarr" >> pom.xml echo " 0.0.1-SNAPSHOT" >> pom.xml echo " " >> pom.xml echo " " >> pom.xml echo " " >> pom.xml echo " org.apache.maven.plugins" >> pom.xml echo " maven-compiler-plugin" >> pom.xml echo " 3.10.1" >> pom.xml echo " " >> pom.xml echo " 11" >> pom.xml echo " " >> pom.xml echo " " >> pom.xml echo " " >> pom.xml echo " " >> pom.xml echo "" >> pom.xml - name: setup-java uses: ./ id: setup-java with: distribution: ${{ matrix.distribution }} java-version-file: 'pom.xml' - name: Verify Java run: bash __tests__/verify-java.sh "11" "${{ steps.setup-java.outputs.path }}" shell: bash