Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
19 commits
Select commit Hold shift + click to select a range
3601b3a
Open the zenoh-flat transition integration branch
milyin Jul 16, 2026
94c885a
Use receiver-style zenoh-flat-jni bindings (#481)
milyin Jul 16, 2026
aa2a8bd
Encoding as a pure JVM value + native publisher default + pinned per-…
milyin Jul 16, 2026
6731c28
Encoding: native handle where it is born, value where it is cheapest …
milyin Jul 16, 2026
3ec8f2e
Received preset encodings are value-only end to end (#488)
milyin Jul 17, 2026
6fa73b8
Receive path goes value-only: KeyExpr string-backed except declared, …
milyin Jul 17, 2026
2ae6e67
docs: align lifecycle KDoc with actual GC management (#490)
milyin Jul 17, 2026
ea88bf1
Session.undeclare: detach the key-expr handle even when undeclare fai…
milyin Jul 17, 2026
146d75d
Parameters becomes a thin facade over the shared string-backed implem…
milyin Jul 18, 2026
646a05f
Migrate to the split error-handler API (zenoh-flat-jni #45) (#495)
milyin Jul 21, 2026
3548122
Serialize via the shared pure-Kotlin SerializationCodec (no JNI) (#496)
milyin Jul 21, 2026
93c6f05
Realign with zenoh-flat HEAD; a timestamp carries its clock's id
milyin Jul 28, 2026
fe967f9
CI: pin zenoh-flat-jni to the merged realignment
milyin Jul 28, 2026
698af40
CI: build zenoh-flat-jni against published prebindgen (#511)
milyin Aug 7, 2026
6dc1275
Release preparation: repair the release path and document publishing …
milyin Aug 10, 2026
9a5a1ea
Merge origin/main into zenoh-flat-transition
Copilot Aug 10, 2026
102fb8c
Retire the transition scaffolding (#515)
milyin Aug 10, 2026
02bc03d
fix(ZBytes): publish the lazy byte cache safely (#517)
milyin Aug 10, 2026
1411fbd
CI: track zenoh-flat-jni main, and stop rebuilding it here (#520)
milyin Aug 10, 2026
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
82 changes: 41 additions & 41 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,42 +22,53 @@ jobs:
os: [ubuntu-latest, macos-latest]

steps:
- uses: actions/checkout@v4
- name: Check out zenoh-java
uses: actions/checkout@v4
with:
path: zenoh-java

- name: Check out zenoh-flat-jni
uses: actions/checkout@v4
with:
repository: eclipse-zenoh/zenoh-flat-jni
# No ref: track that repository's default branch. A pinned commit has
# to be hand-edited for every upstream fix, and this is the one hop
# in the chain no bot covers - zenoh-flat-jni's own Cargo.lock is
# kept aligned with zenoh for it, so following its main keeps the
# whole chain automatic. zenoh-flat is not checked out at all: it is
# resolved from git by that lockfile.
path: zenoh-flat-jni

- uses: actions/setup-java@v4
with:
distribution: temurin
java-version: 11

# zenoh-flat-jni pins its toolchain in rust-toolchain.toml. Install it
# from that directory, so a missing toolchain fails here rather than
# inside the Gradle build - and so this repo never has to name a version
# its dependency is free to change.
#
# Nothing else Rust runs here. Formatting, clippy, the feature-leak test
# and the native build are zenoh-flat-jni's own CI, on three platforms,
# for the very commit pinned above; re-running them from this repo only
# adds ways for the two toolchains to disagree.
- name: Install Rust toolchain
run: |
rustup show
rustup component add rustfmt clippy

- name: Cargo Format
working-directory: zenoh-jni
run: cargo fmt --all --check

- name: Clippy Check without Cargo.lock
working-directory: zenoh-jni
run: |
rm Cargo.lock
cargo clippy --all-targets --all-features -- -D warnings
git restore Cargo.lock

- name: Check for feature leaks
working-directory: zenoh-jni
run: cargo test --no-default-features

- name: Build Zenoh-JNI
working-directory: zenoh-jni
run: cargo build
working-directory: zenoh-flat-jni
run: rustup show

- name: Setup Gradle
uses: gradle/actions/setup-gradle@v4

- name: Gradle Test
run: ./gradlew jvmTest --info
working-directory: zenoh-java
# CI builds against the sibling checkout above, so it opts into the
# composite build explicitly. A release does not: it resolves
# zenoh-flat-jni from Maven Central like any other consumer.
#
# No cargo step precedes this: the composite build's test task depends
# on zenoh-flat-jni's own native build, so Gradle drives cargo.
run: ./gradlew jvmTest --info -PuseLocalFlatJni=true

markdown_lint:
runs-on: ubuntu-latest
Expand All @@ -82,25 +93,14 @@ jobs:
- name: Check whether all jobs pass
run: echo '${{ toJson(needs) }}' | jq -e 'all(.result == "success")'

# Publish snapshot packages. These jobs will only be triggered when the CI is executed on main.
publish_jvm_snapshot_package:
name: Publish JVM snapshot package
if: contains(fromJSON('["refs/heads/main"]'), github.ref)
needs: ci
uses: ./.github/workflows/publish-jvm.yml
permissions:
contents: read
packages: write
with:
snapshot: true
branch: ${{ github.ref_name }}
secrets: inherit

publish_android_snapshot_package:
name: Publish Android snapshot package
# Publish snapshot packages. Only triggered when CI runs on main.
# One job, because both publications now come from a single Gradle
# invocation — see .github/workflows/publish.yml.
publish_snapshot_package:
name: Publish snapshot package
if: contains(fromJSON('["refs/heads/main"]'), github.ref)
needs: ci
uses: ./.github/workflows/publish-android.yml
uses: ./.github/workflows/publish.yml
permissions:
contents: read
packages: write
Expand Down
196 changes: 0 additions & 196 deletions .github/workflows/publish-jvm.yml

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,4 +1,10 @@
name: Publish (Android)
name: Publish

# Both publications come from a *single* Gradle invocation, so they share one
# staging repository and one close/release: either both coordinates become public
# or neither does. That is only possible because zenoh-flat-jni is a Kotlin
# Multiplatform library — one dependency declaration resolves per target, so an
# Android-enabled build produces both publications correctly.

on:
workflow_call:
Expand All @@ -17,18 +23,20 @@ on:
required: false
default: true

env:
CARGO_TERM_COLOR: always

# The native libraries are not built here: they ship inside the
# org.eclipse.zenoh:zenoh-flat-jni artifact this SDK depends on, already
# cross-compiled and verified by that repository's release. This workflow only
# compiles Kotlin and publishes.
jobs:
publish_android_package:
name: Publish Android package
runs-on: ubuntu-latest
publish_package:
name: Publish to Maven Central
permissions:
contents: read
packages: write
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Checkout
uses: actions/checkout@v4
with:
ref: ${{ inputs.branch }}

Expand All @@ -37,28 +45,15 @@ jobs:
distribution: temurin
java-version: 11

- uses: nttld/setup-ndk@v1
id: setup-ndk
with:
ndk-version: r26
add-to-path: false
link-to-sdk: true

- name: Install Rust toolchain
run: |
rustup show
rustup component add rustfmt clippy

- name: Setup Rust toolchains
run: |
rustup target add armv7-linux-androideabi
rustup target add i686-linux-android
rustup target add aarch64-linux-android
rustup target add x86_64-linux-android

- name: Setup Gradle
uses: gradle/actions/setup-gradle@v4

# Assembles the artifact and generates its POM without uploading, so a
# `maven_publish: false` rehearsal actually proves something. Only the
# remote upload below is gated.
- name: Assemble and verify the publication
run: ./gradlew publishJvmPublicationToMavenLocal publishAndroidReleasePublicationToMavenLocal --info -Pandroid=true

- name: Set pub mode env var
# Note: This step is intended to allow publishing snapshot packages.
# It allows to optionally append the property -PSNAPSHOT to the gradle
Expand All @@ -72,9 +67,11 @@ jobs:
fi

- if: ${{ inputs.maven_publish == true }}
name: Gradle Publish Android Package to Maven Central repository
name: Gradle Publish JVM Package to Maven Central repository
run: |
./gradlew publishAndroidReleasePublicationToSonatypeRepository ${{ env.RELEASE }} --info -PremotePublication=true -Pandroid=true ${{ env.PUB_MODE }}
./gradlew publishJvmPublicationToSonatypeRepository \
publishAndroidReleasePublicationToSonatypeRepository \
${{ env.RELEASE }} --info -PremotePublication=true -Pandroid=true ${{ env.PUB_MODE }}
env:
CENTRAL_SONATYPE_TOKEN_USERNAME: ${{ secrets.CENTRAL_SONATYPE_TOKEN_USERNAME}}
CENTRAL_SONATYPE_TOKEN_PASSWORD: ${{ secrets.CENTRAL_SONATYPE_TOKEN_PASSWORD }}
Expand Down
Loading
Loading