name: CI on: push: branches: - '**' - '!dependabot/**' pull_request: branches: [ 'master' ] permissions: read-all jobs: test: name: Test OpenJDK ${{ matrix.java }} on ${{ matrix.os }} strategy: fail-fast: false matrix: os: [ ubuntu-latest, windows-latest, macos-latest ] java: [ 8, 11, 17, 21, 25 ] exclude: - os: macos-latest java: 8 runs-on: ${{ matrix.os }} permissions: checks: write steps: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5.2.0 with: distribution: 'temurin' java-version: ${{ matrix.java }} java-package: jdk cache: 'maven' - name: Run Tests run: mvn --batch-mode --no-transfer-progress test - name: Publish Test Report uses: mikepenz/action-junit-report@74626db7353a25a20a72816467ebf035f674c5f8 # v5 if: ${{ !cancelled() }} with: report_paths: "**/target/surefire-reports/TEST*.xml" check_name: Unit Test Results for OpenJDK ${{ matrix.java }} on ${{ matrix.os }} test-jdk8-macos: name: Test OpenJDK 8 on macos-14 runs-on: macos-14 permissions: checks: write steps: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5.2.0 with: distribution: 'zulu' java-version: '8' java-package: jdk cache: 'maven' - name: Run Tests run: mvn --batch-mode --no-transfer-progress test - name: Publish Test Report uses: mikepenz/action-junit-report@74626db7353a25a20a72816467ebf035f674c5f8 # v5 if: ${{ !cancelled() }} with: report_paths: "**/target/surefire-reports/TEST*.xml" check_name: Unit Test Results for OpenJDK ${{ matrix.java }} on ${{ matrix.os }} test-oracle: name: Test Oracle JDK 8 with KCMS=${{ matrix.kcms }} runs-on: ubuntu-latest permissions: checks: write strategy: matrix: kcms: [ true, false ] steps: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - run: | download_url="https://javadl.oracle.com/webapps/download/AutoDL?BundleId=245038_d3c52aa6bfa54d3ca74e617f18309292" wget -O $RUNNER_TEMP/java_package.tar.gz $download_url - uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5.2.0 with: distribution: 'jdkfile' jdkFile: ${{ runner.temp }}/java_package.tar.gz java-version: '8' cache: 'maven' - name: Set MAVEN_OPTS if: ${{ matrix.kcms }} run: | echo "MAVEN_OPTS=-Dsun.java2d.cmm=sun.java2d.cmm.kcms.KcmsServiceProvider" >> $GITHUB_ENV - name: Display Java version run: java -version - name: Run Tests run: mvn --batch-mode --no-transfer-progress test - name: Publish Test Report uses: mikepenz/action-junit-report@74626db7353a25a20a72816467ebf035f674c5f8 # v5 if: ${{ !cancelled() }} with: report_paths: "**/target/surefire-reports/TEST*.xml" check_name: Unit Test Results for Oracle JDK 8 with KCMS=${{ matrix.kcms }} javadoc: name: Build JavaDoc on OpenJDK ${{ matrix.java }} runs-on: ubuntu-latest strategy: matrix: java: [8, 11, 25 ] # We only need a few versions here steps: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5.2.0 with: distribution: 'temurin' java-version: ${{ matrix.java }} java-package: jdk cache: 'maven' - name: Create JavaDoc run: mvn --batch-mode --no-transfer-progress -DskipTests package javadoc:javadoc release: name: Deploy needs: [ test, test-jdk8-macos, test-oracle, javadoc ] if: github.ref == 'refs/heads/master' # only perform on latest master runs-on: ubuntu-latest steps: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - name: Set up Maven Central uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5.2.0 with: # running setup-java again overwrites the settings.xml distribution: 'temurin' java-version: '8' java-package: jdk server-id: central # Value of the distributionManagement/repository/id field of the pom.xml server-username: MAVEN_CENTRAL_USERNAME # env variable for username in deploy (1) server-password: MAVEN_CENTRAL_PASSWORD # env variable for token in deploy (2) - name: Get Project Version run: | echo "PROJECT_VERSION=$(mvn --batch-mode help:evaluate -Dexpression=project.version -q -DforceStdout)" >> $GITHUB_ENV - name: Publish to Maven Central if: ${{ endsWith(env.PROJECT_VERSION, '-SNAPSHOT') }} run: mvn --batch-mode --no-transfer-progress deploy -P release -DskipTests -Dgpg.signer=bc env: MAVEN_CENTRAL_USERNAME: ${{ secrets.CENTRAL_USERNAME }} # must be the same env variable name as (1) MAVEN_CENTRAL_PASSWORD: ${{ secrets.CENTRAL_PASSWORD }} # must be the same env variable name as (2) MAVEN_GPG_KEY: ${{ secrets.GPG_KEY }} # Value of the GPG private key to import MAVEN_GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }}