mirror of
https://github.com/haraldk/TwelveMonkeys.git
synced 2026-03-17 00:00:06 -04:00
* #1234: Fixed JavaDoc for Java 21 + JavaDoc verification step * #1234: Simplify build matrix * #1234: Javadoc in parallell
144 lines
5.5 KiB
YAML
144 lines
5.5 KiB
YAML
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 }}
|