Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
86 changes: 53 additions & 33 deletions .github/workflows/maven_central_release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -72,11 +72,11 @@ jobs:
ref: ${{ inputs.source_ref }}
fetch-depth: 0

- name: Set up Java 11
- name: Set up Java 8
uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5.2.0
with:
distribution: temurin
java-version: "11"
java-version: "8"
cache: maven

- name: Resolve versions and guard against re-release
Expand Down Expand Up @@ -168,11 +168,15 @@ jobs:
ref: ${{ needs.resolve.outputs.source_sha }}
submodules: true

- name: Set up Java 11
- name: Set up Java 8
uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5.2.0
with:
distribution: temurin
java-version: "11"
# Temurin publishes no macOS/aarch64 8u, which fails the darwin-aarch64
# (macos-14) leg; Zulu ships both macOS aarch64 and x64 8u. The macOS
# jni_md.h is ABI-identical across vendors, so building the native lib
# against Zulu's JDK 8 headers matches the artifact's Java 8 floor.
distribution: zulu
java-version: "8"

- name: Install toolchains
run: |
Expand Down Expand Up @@ -222,9 +226,16 @@ jobs:
timeout-minutes: 60
container:
image: quay.io/pypa/manylinux2014_x86_64
# GitHub's runner now forces JS actions (actions/checkout) onto Node 24, but
# Node 24 needs glibc >= 2.28 while this container is glibc 2.17 -- the stock
# /__e/node24 binary aborts with `GLIBC_2.27'/`GLIBC_2.28' not found`. There is
# no glibc-2.17 build of Node 24, so shadow BOTH /__e/node20 AND /__e/node24
# with the glibc-2.17 Node 20 binary installed below; checkout's JS runs fine
# on it regardless of the runtime the runner advertises.
volumes:
- /node20217:/node20217
- /node20217:/__e/node20
- /node20217:/__e/node24
steps:
- name: Install tools
run: |
Expand All @@ -238,11 +249,14 @@ jobs:
rpmbuild --rebuild ./nasm-2.16.03-0.fc39.src.rpm
rpm -i ~/rpmbuild/RPMS/x86_64/nasm-2.16.03-0.el7.x86_64.rpm

- name: Install Node.js 20 glibc2.17
- name: Install Node.js 20 glibc2.17 (shadows /__e/node20 and /__e/node24)
run: |
curl -LO https://unofficial-builds.nodejs.org/download/release/v20.9.0/node-v20.9.0-linux-x64-glibc-217.tar.xz
tar -xf node-v20.9.0-linux-x64-glibc-217.tar.xz --strip-components 1 -C /node20217
# The same /node20217 source is bind-mounted over both runtime paths, so the
# glibc-2.17 binary is what runs whether the runner picks node20 or node24.
ldd /__e/node20/bin/node
ldd /__e/node24/bin/node

- name: Check out release source
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1
Expand All @@ -256,13 +270,15 @@ jobs:
tar -zxf cmake-3.29.2-linux-x86_64.tar.gz
echo "PATH=$(pwd)/cmake-3.29.2-linux-x86_64/bin/:$PATH" >> "$GITHUB_ENV"

- name: Install GraalVM JDK 25
- name: Install Temurin JDK 8
run: |
# TODO(pin): replace /25/latest/ with an exact GraalVM build URL and verify a sha256.
wget -nv -O graalvm.tar.gz https://download.oracle.com/graalvm/25/latest/graalvm-jdk-25_linux-x64_bin.tar.gz
mkdir graalvm
tar xfz graalvm.tar.gz -C graalvm --strip-components=1
echo "JAVA_HOME=$(pwd)/graalvm" >> "$GITHUB_ENV"
# Build the native lib against the Java 8 JNI headers -- JDK 8 is the artifact's
# floor. The Adoptium "latest GA" redirect tracks the newest 8u release.
# TODO(pin): pin to an exact Temurin 8u build URL and verify a sha256.
wget -nv -O jdk8.tar.gz https://api.adoptium.net/v3/binary/latest/8/ga/linux/x64/jdk/hotspot/normal/eclipse
mkdir jdk8
tar xfz jdk8.tar.gz -C jdk8 --strip-components=1
echo "JAVA_HOME=$(pwd)/jdk8" >> "$GITHUB_ENV"

- name: Build native library
run: |
Expand Down Expand Up @@ -320,13 +336,15 @@ jobs:
yum update -y
yum install wget nasm zstd -y

- name: Install GraalVM JDK 25
- name: Install Temurin JDK 8
run: |
# TODO(pin): replace /25/latest/ with an exact GraalVM build URL and verify a sha256.
wget -v --timeout=180 -O graalvm.tar.gz https://download.oracle.com/graalvm/25/latest/graalvm-jdk-25_linux-aarch64_bin.tar.gz
mkdir graalvm
tar xfz graalvm.tar.gz -C graalvm --strip-components=1
echo "JAVA_HOME=$(pwd)/graalvm" >> "$GITHUB_ENV"
# Build the native lib against the Java 8 JNI headers -- JDK 8 is the artifact's
# floor. The Adoptium "latest GA" redirect tracks the newest 8u release.
# TODO(pin): pin to an exact Temurin 8u build URL and verify a sha256.
wget -v --timeout=180 -O jdk8.tar.gz https://api.adoptium.net/v3/binary/latest/8/ga/linux/aarch64/jdk/hotspot/normal/eclipse
mkdir jdk8
tar xfz jdk8.tar.gz -C jdk8 --strip-components=1
echo "JAVA_HOME=$(pwd)/jdk8" >> "$GITHUB_ENV"

- name: Build native library
run: |
Expand Down Expand Up @@ -382,19 +400,21 @@ jobs:
sudo apt-get update -y
sudo apt-get install -y nasm gcc-mingw-w64 g++-mingw-w64

- name: Install GraalVM JDK 25
- name: Install Temurin JDK 8
run: |
# TODO(pin): replace /25/latest/ with an exact GraalVM build URL and verify a sha256.
wget -nv -O graalvm.tar.gz https://download.oracle.com/graalvm/25/latest/graalvm-jdk-25_linux-x64_bin.tar.gz
mkdir graalvm
tar xfz graalvm.tar.gz -C graalvm --strip-components=1
echo "JAVA_HOME=$(pwd)/graalvm" >> "$GITHUB_ENV"
# Host JDK only supplies the shared JNI header (jni.h); the Windows-specific
# jni_md.h is fetched below. JDK 8 is the artifact's floor.
# TODO(pin): pin to an exact Temurin 8u build URL and verify a sha256.
wget -nv -O jdk8.tar.gz https://api.adoptium.net/v3/binary/latest/8/ga/linux/x64/jdk/hotspot/normal/eclipse
mkdir jdk8
tar xfz jdk8.tar.gz -C jdk8 --strip-components=1
echo "JAVA_HOME=$(pwd)/jdk8" >> "$GITHUB_ENV"

- name: Download Windows jni_md.h from JDK 25
- name: Download Windows jni_md.h from JDK 8
run: |
cd core
# TODO(pin): pin to a jdk25u tag/commit instead of the moving `master` branch.
curl -fsSL https://raw.githubusercontent.com/openjdk/jdk25u/master/src/java.base/windows/native/include/jni_md.h > "$JAVA_HOME/include/jni_md.h"
# TODO(pin): pin to a jdk8u tag/commit instead of the moving `master` branch.
curl -fsSL https://raw.githubusercontent.com/openjdk/jdk8u/master/jdk/src/windows/javavm/export/jni_md.h > "$JAVA_HOME/include/jni_md.h"

- name: Build native library
run: |
Expand Down Expand Up @@ -443,11 +463,11 @@ jobs:
with:
ref: ${{ needs.resolve.outputs.source_sha }}

- name: Set up Java 11
- name: Set up Java 8
uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5.2.0
with:
distribution: temurin
java-version: "11"
java-version: "8"
cache: maven

- name: Download native artifacts
Expand Down Expand Up @@ -537,11 +557,11 @@ jobs:
exit 1
fi

- name: Set up Java 11
- name: Set up Java 8
uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5.2.0
with:
distribution: temurin
java-version: "11"
java-version: "8"
cache: maven

- name: Download native artifacts
Expand Down Expand Up @@ -741,11 +761,11 @@ jobs:
ref: ${{ inputs.source_ref }}
fetch-depth: 0

- name: Set up Java 11
- name: Set up Java 8
uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5.2.0
with:
distribution: temurin
java-version: "11"
java-version: "8"
cache: maven

- name: Open next-development-version bump PR
Expand Down
Loading