Skip to content

Remove Continue-As-New and InternalHandlerTimeout; rename FlowExecutionID to FlowRunID #425

Remove Continue-As-New and InternalHandlerTimeout; rename FlowExecutionID to FlowRunID

Remove Continue-As-New and InternalHandlerTimeout; rename FlowExecutionID to FlowRunID #425

name: Java examples CI
on:
push:
branches: [main]
paths:
- "examples/java/**"
- "examples/entity-store/**"
- ".github/workflows/examples-java-ci.yml"
pull_request:
paths:
- "examples/java/**"
- "examples/entity-store/**"
- ".github/workflows/examples-java-ci.yml"
workflow_dispatch:
permissions:
contents: read
concurrency:
group: examples-java-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
unit:
name: Build + unit tests (Java ${{ matrix.java-version }})
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
java-version: ["17", "21", "25", "26"]
defaults:
run:
working-directory: examples/java
steps:
- uses: actions/checkout@v7
# Gradle 9 needs JDK 17+; matrix JDKs are auto-provisioned toolchains.
- uses: actions/setup-java@v5
with:
distribution: zulu
java-version: "25"
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v6
- name: Build and unit tests
run: ./gradlew test --tests 'io.superdurable.dex.products.*' --tests 'io.superdurable.dex.patterns.*' --refresh-dependencies "-PjavaVersion=${{ matrix.java-version }}"
- name: Verify published SDK coordinate
run: |
./gradlew dependencyInsight --dependency dex-sdk --configuration compileClasspath \
| tee /tmp/dex-sdk-insight.txt
# Assert Maven Central coordinate (group:artifact), not a composite/project dep.
# Version lives only in build.gradle — do not pin it here.
grep -qE 'io\.superdurable:dex-sdk:[0-9]' /tmp/dex-sdk-insight.txt
if grep -E 'project :|ProjectDependency' /tmp/dex-sdk-insight.txt; then
echo "examples/java must depend on published dex-sdk, not a Gradle project"
exit 1
fi
integ:
name: Integration tests (zd)
runs-on: ubuntu-latest
env:
DEX_INTEG_ENGINE: zd
DEX_SERVER_ZD_BINARY: ${{ github.workspace }}/server-zd/target/debug/dex-server-zd
# These CARGO_* and RUST* values match Server ZD CI, so its main cache restores here.
CARGO_TERM_COLOR: always
CARGO_INCREMENTAL: "0"
RUST_BACKTRACE: "1"
RUSTUP_TOOLCHAIN: "1.97.1"
CARGO_BUILD_JOBS: "4"
defaults:
run:
working-directory: examples/java
steps:
- uses: actions/checkout@v7
- name: Install Rust
run: rustup toolchain install 1.97.1 --profile minimal
- name: Install libclang for RocksDB
run: sudo apt-get update && sudo apt-get install -y libclang-dev
- uses: Swatinem/rust-cache@v2
with:
workspaces: server-zd
shared-key: server-zd-paradedb
# Restore-only: the Server ZD CI ParadeDB job owns this key.
save-if: false
- name: Build dex-server-zd
working-directory: server-zd
run: cargo build --locked -p dexzd-server --bin dex-server-zd
- uses: actions/setup-node@v6
with:
node-version: 22
cache: npm
cache-dependency-path: web/package-lock.json
- uses: actions/setup-go@v7
with:
go-version-file: cli/go.mod
cache-dependency-path: |
cli/go.sum
web/go.sum
- uses: actions/setup-java@v5
with:
distribution: zulu
java-version: "25"
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v6
- name: Integration tests with dexcli dev
run: ./run-integration-tests.sh
- name: Upload service logs
if: always()
uses: actions/upload-artifact@v7
with:
name: java-examples-integration-services-zd
path: /tmp/test-java-examples-integration-services.log
if-no-files-found: ignore