blob: a21ab5658fce65d3bcc12e5646efb19fa2658a99 [file]
name: JDK & OS Matrix Test
on:
push:
paths-ignore: [ '**/*.html', '**/*.md', '**/*.txt', '**/LICENSE', '**/NOTICE' ]
branches: [ 'main', '[0-9]+.[0-9]+.[Xx]', 'v[0-9]+.[0-9]+.[Xx]']
pull_request:
paths-ignore: [ '**/*.html', '**/*.md', '**/*.txt', '**/LICENSE', '**/NOTICE' ]
branches: [ 'main', '[0-9]+.[0-9]+.[Xx]', 'v[0-9]+.[0-9]+.[Xx]']
workflow_dispatch:
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
permissions:
contents: read
jobs:
# PHASE 1: Replicate command-line compilation exactly
build-artifacts:
runs-on: ubuntu-latest
steps:
- name: Checkout Source Code
uses: actions/checkout@v7
- name: Install Build JDKs for Subproject Toolchains
uses: actions/setup-java@v5
with:
java-version: |
17
21
distribution: 'temurin'
cache: 'maven'
# Builds the isolated modules using their respective toolchains
- name: Package All Versioned JARs
run: mvn clean package -DskipTests=true -B
# Archive the compiled artifacts and skeletal structure for Phase 2 testing
- name: Archive Compiled Workspace
uses: actions/upload-artifact@v7
with:
name: compiled-jars
path: |
pom.xml
**/pom.xml
**/target/*.jar
**/src/test/resources/
# PHASE 2: Run isolated target matrix tests against the JARs
matrix-test:
needs: build-artifacts # <--- THIS makes Phase 2 flow sequentially after Phase 1
strategy:
fail-fast: false
matrix:
jdk: [ '17', '21', '25' ]
os: [ windows-latest, ubuntu-latest, macos-latest ]
include:
- os: windows-latest
arch: x64
- os: ubuntu-latest
arch: x64
- os: macos-latest
arch: aarch64
- jdk: '17'
distribution: 'temurin'
jvm_args: >-
--add-exports java.base/jdk.internal.misc=ALL-UNNAMED
--add-exports java.base/jdk.internal.ref=ALL-UNNAMED
- jdk: '21'
distribution: 'temurin'
jvm_args: >-
--add-exports java.base/jdk.internal.misc=ALL-UNNAMED
--add-exports java.base/jdk.internal.ref=ALL-UNNAMED
- jdk: '25'
distribution: 'temurin'
jvm_args: >-
--add-exports java.base/jdk.internal.misc=ALL-UNNAMED
--add-exports java.base/jdk.internal.ref=ALL-UNNAMED
# Reference your reusable workflow branch
uses: apache/datasketches-java/.github/workflows/reusable-jdk-os-matrix.yml@reusable_workflows
with:
jdk_version: ${{ matrix.jdk }}
os_type: ${{ matrix.os }}
cpu_arch: ${{ matrix.arch }}
jdk_distribution: ${{ matrix.distribution }}
jvm_args: ${{ matrix.jvm_args }}