Skip to content

Bump actions/setup-java from 4.9.1 to 6.0.0 #22

Bump actions/setup-java from 4.9.1 to 6.0.0

Bump actions/setup-java from 4.9.1 to 6.0.0 #22

Workflow file for this run

name: CI
on:
push:
branches:
- main
pull_request:
permissions:
contents: read
concurrency:
group: ci-${{ github.ref }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
jobs:
# Jars, plugins and tests. No GraalVM: the native image is gated out of the lifecycle
# tasks (see rootProject.build.gradle) so this job never needs a GraalVM toolchain.
build:
name: build
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4.4.0
with:
# gradle-git-version derives the project version from `git describe`,
# so it needs the full history and all tags.
fetch-depth: 0
# Everything the jars are built with. Gradle provisions no JDKs of its own —
# auto-download is off in gradle.properties — so JDK21_HOME is the toolchain it reads.
- name: Install JDK 21
uses: actions/setup-java@dd06d9cba3e5552c54d9f8ea23572deb30010f7c # v6.0.0
with:
distribution: temurin
java-version: '21'
- name: Point Gradle at the JDK
run: echo "JDK21_HOME=${JAVA_HOME_21_X64:-$JAVA_HOME_21_ARM64}" >> "$GITHUB_ENV"
- name: Build
run: ./gradlew --stacktrace build
- name: Upload jars and plugin distributions
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
with:
name: jars
path: |
*/build/libs/*.jar
idea-plugin/build/distributions/*.zip
if-no-files-found: error
- name: Upload test results
if: always()
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
with:
name: test-results-build
path: '**/build/test-results/**/*.xml'
if-no-files-found: warn
# One explicit job per target, so every binary we ship is traceable to a named run.
native:
name: native (${{ matrix.platform }})
needs: build
runs-on: ${{ matrix.runner }}
timeout-minutes: 90
strategy:
fail-fast: false
matrix:
include:
- platform: linux-x86-64
runner: ubuntu-latest
# The tests that drive the binary run once, on the cheapest runner, rather
# than on all four: they are TestKit suites and spawn a Gradle build each.
nativeTests: true
- platform: linux-aarch64
runner: ubuntu-24.04-arm
- platform: macos-aarch64
runner: macos-15
- platform: macos-x86-64
runner: macos-15-intel
steps:
- uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4.4.0
with:
fetch-depth: 0
# GraalVM 25 compiles the image and nothing else. The binary ships standalone, so it
# owes nobody backwards compatibility — which is what buys the newer compiler and
# --exact-reachability-metadata, a GraalVM 23+ option.
- name: Install GraalVM 25 for the image
uses: graalvm/setup-graalvm@5298d94fb55a4f185c602eeac5de1b553882abe2 # v1.6.4
with:
java-version: '25'
distribution: 'graalvm-community'
github-token: ${{ secrets.GITHUB_TOKEN }}
# After GraalVM, so JAVA_HOME — and the Gradle daemon — is 21 like everywhere else, and
# so the jars this job feeds into native-image are compiled at 21. GRAALVM_HOME survives.
- name: Install JDK 21 for the jars
uses: actions/setup-java@dd06d9cba3e5552c54d9f8ea23572deb30010f7c # v6.0.0
with:
distribution: temurin
java-version: '21'
- name: Point Gradle at the JDKs
run: echo "JDK21_HOME=${JAVA_HOME_21_X64:-$JAVA_HOME_21_ARM64}" >> "$GITHUB_ENV"
- name: Compile the native image
run: ./gradlew --stacktrace -PnativeImage=true :palantir-java-format-native:nativeCompile
# These reach the binary through a resolved configuration rather than a task dependency,
# so they only work with -PnativeImage=true. Excluded from the `build` job for that reason.
- name: Run the tests that drive the native binary
if: matrix.nativeTests
run: ./gradlew --stacktrace -PnativeImage=true :palantir-java-format-jdk-bootstrap:test :gradle-palantir-java-format:test
- name: Upload native image
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
with:
name: native-image-${{ matrix.platform }}
path: palantir-java-format-native/build/native/nativeCompile/*
if-no-files-found: error