From 50cec24cf2a8f57a567dbe91e91f98366f7cb73a Mon Sep 17 00:00:00 2001 From: elenagaljak-db Date: Mon, 16 Mar 2026 16:07:14 +0100 Subject: [PATCH 1/8] Workflow that runs all tests Signed-off-by: elenagaljak-db --- .github/workflows/ci-all-sdks.yml | 67 +++++++++++++++++++++++++++++ .github/workflows/ci-python.yml | 11 +++++ .github/workflows/ci-typescript.yml | 23 ++++++++++ 3 files changed, 101 insertions(+) create mode 100644 .github/workflows/ci-all-sdks.yml diff --git a/.github/workflows/ci-all-sdks.yml b/.github/workflows/ci-all-sdks.yml new file mode 100644 index 0000000..f427d7b --- /dev/null +++ b/.github/workflows/ci-all-sdks.yml @@ -0,0 +1,67 @@ +name: All SDK Integration Tests +run-name: "All SDK tests on ${{ github.ref_name }} by @${{ github.actor }}" + +# Manual trigger only — requires write access to the repository. +# Use this when changing Rust core to verify no SDK is broken before releasing +# a new FFI version. Each SDK's test job builds the Rust FFI from source so +# you are always testing against the current branch. +# +# For stricter admin-only enforcement, create a GitHub environment named +# "sdk-integration" with required reviewers and uncomment the `environment:` +# lines in each job below. +on: + workflow_dispatch: + +jobs: + rust: + uses: ./.github/workflows/ci-rust.yml + + go: + uses: ./.github/workflows/ci-go.yml + # environment: sdk-integration + + python: + uses: ./.github/workflows/ci-python.yml + with: + use_local_sdk: true + # environment: sdk-integration + + java: + uses: ./.github/workflows/ci-java.yml + # environment: sdk-integration + + typescript: + uses: ./.github/workflows/ci-typescript.yml + with: + use_local_sdk: true + # environment: sdk-integration + + gate: + runs-on: + group: databricks-protected-runner-group + labels: linux-ubuntu-latest + needs: [rust, go, python, java, typescript] + if: always() + steps: + - name: Check all SDKs passed + run: | + results=( + "rust=${{ needs.rust.result }}" + "go=${{ needs.go.result }}" + "python=${{ needs.python.result }}" + "java=${{ needs.java.result }}" + "typescript=${{ needs.typescript.result }}" + ) + failed=() + for r in "${results[@]}"; do + name="${r%%=*}" + result="${r##*=}" + if [[ "$result" == "failure" ]]; then + failed+=("$name") + fi + done + if [[ ${#failed[@]} -gt 0 ]]; then + echo "Failed SDKs: ${failed[*]}" + exit 1 + fi + echo "All SDKs passed" diff --git a/.github/workflows/ci-python.yml b/.github/workflows/ci-python.yml index eb2747b..5bb1a39 100644 --- a/.github/workflows/ci-python.yml +++ b/.github/workflows/ci-python.yml @@ -2,6 +2,11 @@ name: Python CI on: workflow_call: + inputs: + use_local_sdk: + description: 'Override databricks-zerobus-ingest-sdk with the local path dep (for integration testing unreleased Rust changes)' + type: boolean + default: false jobs: test: @@ -29,6 +34,12 @@ jobs: - name: Copy root LICENSE for maturin run: cp ../LICENSE LICENSE + - name: Patch Cargo.toml to use local Rust SDK + if: inputs.use_local_sdk + working-directory: python/rust + run: | + printf '\n[patch.crates-io]\ndatabricks-zerobus-ingest-sdk = { path = "../../rust/sdk" }\n' >> Cargo.toml + - name: Run tests run: make dev test diff --git a/.github/workflows/ci-typescript.yml b/.github/workflows/ci-typescript.yml index fd430ae..e18a9c0 100644 --- a/.github/workflows/ci-typescript.yml +++ b/.github/workflows/ci-typescript.yml @@ -2,6 +2,11 @@ name: TypeScript CI on: workflow_call: + inputs: + use_local_sdk: + description: 'Override databricks-zerobus-ingest-sdk with the local path dep (for integration testing unreleased Rust changes)' + type: boolean + default: false jobs: build: @@ -67,6 +72,15 @@ jobs: sudo apt-get update sudo apt-get install -y gcc-aarch64-linux-gnu g++-aarch64-linux-gnu + - name: Patch Cargo.toml to use local Rust SDK (Unix) + if: inputs.use_local_sdk && runner.os != 'Windows' + run: printf '\n[patch.crates-io]\ndatabricks-zerobus-ingest-sdk = { path = "../rust/sdk" }\n' >> Cargo.toml + + - name: Patch Cargo.toml to use local Rust SDK (Windows) + if: inputs.use_local_sdk && runner.os == 'Windows' + run: Add-Content -Path Cargo.toml -Value "`n[patch.crates-io]`ndatabricks-zerobus-ingest-sdk = { path = `"../rust/sdk`" }`n" + shell: powershell + - name: Install dependencies run: npm ci @@ -120,6 +134,15 @@ jobs: echo "$env:USERPROFILE\.cargo\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append shell: powershell + - name: Patch Cargo.toml to use local Rust SDK (Unix) + if: inputs.use_local_sdk && runner.os != 'Windows' + run: printf '\n[patch.crates-io]\ndatabricks-zerobus-ingest-sdk = { path = "../rust/sdk" }\n' >> Cargo.toml + + - name: Patch Cargo.toml to use local Rust SDK (Windows) + if: inputs.use_local_sdk && runner.os == 'Windows' + run: Add-Content -Path Cargo.toml -Value "`n[patch.crates-io]`ndatabricks-zerobus-ingest-sdk = { path = `"../rust/sdk`" }`n" + shell: powershell + - name: Install dependencies run: npm ci From 035c6d7c1775926625b9c0af47eaf931b77686dc Mon Sep 17 00:00:00 2001 From: elenagaljak-db Date: Mon, 16 Mar 2026 16:11:56 +0100 Subject: [PATCH 2/8] Fix Signed-off-by: elenagaljak-db --- .github/workflows/ci-all-sdks.yml | 67 ------------------------------- .github/workflows/push.yml | 11 ++++- rust/sdk/src/lib.rs | 2 +- 3 files changed, 10 insertions(+), 70 deletions(-) delete mode 100644 .github/workflows/ci-all-sdks.yml diff --git a/.github/workflows/ci-all-sdks.yml b/.github/workflows/ci-all-sdks.yml deleted file mode 100644 index f427d7b..0000000 --- a/.github/workflows/ci-all-sdks.yml +++ /dev/null @@ -1,67 +0,0 @@ -name: All SDK Integration Tests -run-name: "All SDK tests on ${{ github.ref_name }} by @${{ github.actor }}" - -# Manual trigger only — requires write access to the repository. -# Use this when changing Rust core to verify no SDK is broken before releasing -# a new FFI version. Each SDK's test job builds the Rust FFI from source so -# you are always testing against the current branch. -# -# For stricter admin-only enforcement, create a GitHub environment named -# "sdk-integration" with required reviewers and uncomment the `environment:` -# lines in each job below. -on: - workflow_dispatch: - -jobs: - rust: - uses: ./.github/workflows/ci-rust.yml - - go: - uses: ./.github/workflows/ci-go.yml - # environment: sdk-integration - - python: - uses: ./.github/workflows/ci-python.yml - with: - use_local_sdk: true - # environment: sdk-integration - - java: - uses: ./.github/workflows/ci-java.yml - # environment: sdk-integration - - typescript: - uses: ./.github/workflows/ci-typescript.yml - with: - use_local_sdk: true - # environment: sdk-integration - - gate: - runs-on: - group: databricks-protected-runner-group - labels: linux-ubuntu-latest - needs: [rust, go, python, java, typescript] - if: always() - steps: - - name: Check all SDKs passed - run: | - results=( - "rust=${{ needs.rust.result }}" - "go=${{ needs.go.result }}" - "python=${{ needs.python.result }}" - "java=${{ needs.java.result }}" - "typescript=${{ needs.typescript.result }}" - ) - failed=() - for r in "${results[@]}"; do - name="${r%%=*}" - result="${r##*=}" - if [[ "$result" == "failure" ]]; then - failed+=("$name") - fi - done - if [[ ${#failed[@]} -gt 0 ]]; then - echo "Failed SDKs: ${failed[*]}" - exit 1 - fi - echo "All SDKs passed" diff --git a/.github/workflows/push.yml b/.github/workflows/push.yml index 3b07d31..21d2430 100644 --- a/.github/workflows/push.yml +++ b/.github/workflows/push.yml @@ -47,12 +47,15 @@ jobs: - '.github/workflows/ci-java.yml' typescript: - 'typescript/**' + - 'rust/**' - '.github/workflows/ci-typescript.yml' python: - 'python/**' + - 'rust/**' - '.github/workflows/ci-python.yml' go: - 'go/**' + - 'rust/**' - '.github/workflows/ci-go.yml' rust: @@ -69,12 +72,16 @@ jobs: needs: changes if: needs.changes.outputs.typescript == 'true' uses: ./.github/workflows/ci-typescript.yml - + with: + use_local_sdk: ${{ needs.changes.outputs.rust == 'true' }} + python: needs: changes if: needs.changes.outputs.python == 'true' uses: ./.github/workflows/ci-python.yml - + with: + use_local_sdk: ${{ needs.changes.outputs.rust == 'true' }} + go: needs: changes if: needs.changes.outputs.go == 'true' diff --git a/rust/sdk/src/lib.rs b/rust/sdk/src/lib.rs index 6e51ddd..bc387a7 100644 --- a/rust/sdk/src/lib.rs +++ b/rust/sdk/src/lib.rs @@ -527,7 +527,7 @@ impl ZerobusSdk { match stream { Ok(stream) => { if let Some(stream_id) = stream.stream_id.as_ref() { - info!(stream_id = %stream_id, "Successfully created new ephemeral stream"); + info!(stream_id = %stream_id, "Successfully created new ephemeral stream. random line change"); } else { error!("Successfully created a stream but stream_id is None"); } From 4d959b2348ef2b5f17648dfb0388056bb7a3c42d Mon Sep 17 00:00:00 2001 From: elenagaljak-db Date: Mon, 16 Mar 2026 17:21:10 +0100 Subject: [PATCH 3/8] fix Signed-off-by: elenagaljak-db --- .github/workflows/ci-go.yml | 149 ++++++++++++++++++++++++++++++++++ .github/workflows/ci-java.yml | 10 +++ .github/workflows/push.yml | 40 +++++++-- rust/ffi/Cargo.toml | 2 +- rust/jni/Cargo.toml | 2 +- 5 files changed, 193 insertions(+), 10 deletions(-) diff --git a/.github/workflows/ci-go.yml b/.github/workflows/ci-go.yml index c6a369e..1d7c042 100644 --- a/.github/workflows/ci-go.yml +++ b/.github/workflows/ci-go.yml @@ -11,9 +11,158 @@ jobs: defaults: run: working-directory: go + steps:name: Go CI + +on: + workflow_call: + inputs: + use_local_sdk: + description: 'Override databricks-zerobus-ingest-sdk with the local path dep (for integration testing unreleased Rust changes)' + type: boolean + default: false + +jobs: + fmt: + runs-on: + group: databricks-protected-runner-group + labels: linux-ubuntu-latest + defaults: + run: + working-directory: go + steps: + - uses: actions/checkout@v4 + + - uses: actions/setup-go@v5 + with: + go-version: '1.21' + + - uses: dtolnay/rust-toolchain@stable + with: + components: rustfmt + + - name: Format all files + run: make fmt + + - name: Fail on differences + run: git diff --exit-code + + lint: + runs-on: + group: databricks-protected-runner-group + labels: linux-ubuntu-latest + defaults: + run: + working-directory: go + steps: + - uses: actions/checkout@v4 + + - uses: actions/setup-go@v5 + with: + go-version: '1.21' + + - uses: dtolnay/rust-toolchain@stable + with: + components: clippy + + - name: Lint code + run: make lint + + test: + strategy: + fail-fast: false + matrix: + os: [linux-ubuntu-latest, windows-server-latest] + runs-on: + group: databricks-protected-runner-group + labels: ${{ matrix.os }} + defaults: + run: + working-directory: go + shell: bash + steps: + - uses: actions/checkout@v4 + + - name: Unshallow + run: git fetch --prune --unshallow + + - uses: actions/setup-go@v5 + with: + go-version: '1.21' + + - uses: dtolnay/rust-toolchain@stable + with: + targets: x86_64-pc-windows-gnu + + - name: Patch Rust workspace to use local SDK + if: inputs.use_local_sdk + run: printf '\n[patch.crates-io]\ndatabricks-zerobus-ingest-sdk = { path = "sdk" }\n' >> ../rust/Cargo.toml + + - name: Build Rust FFI + run: make build-rust + + - name: Build Go SDK + run: make build-go + + - name: Run tests + run: make test + + - name: Build examples + run: make examples + + user-experience: + # Skip when testing local SDK — this job tests the published release download flow + if: ${{ !inputs.use_local_sdk }} + strategy: + fail-fast: false + matrix: + include: + - os: linux-ubuntu-latest + lib: lib/linux_amd64/libzerobus_ffi.a + - os: windows-server-latest + lib: lib/windows_amd64/libzerobus_ffi.a + runs-on: + group: databricks-protected-runner-group + labels: ${{ matrix.os }} + defaults: + run: + working-directory: go + shell: bash steps: - uses: actions/checkout@v4 + - uses: actions/setup-go@v5 + with: + go-version: '1.21' + + - uses: dtolnay/rust-toolchain@stable + + - name: Run go generate (user step 1) + run: go generate -v + + - name: Verify library built + run: test -f ${{ matrix.lib }} + + - name: Test go build works (user step 2) + run: go build -v + + - name: Test JSON single example builds + working-directory: go/examples/json/single + run: go build -v + + - name: Test JSON batch example builds + working-directory: go/examples/json/batch + run: go build -v + + - name: Test Proto single example builds + working-directory: go/examples/proto/single + run: go build -v + + - name: Test Proto batch example builds + working-directory: go/examples/proto/batch + run: go build -v + + - uses: actions/checkout@v4 + - uses: actions/setup-go@v5 with: go-version: '1.21' diff --git a/.github/workflows/ci-java.yml b/.github/workflows/ci-java.yml index dff7b00..88304f8 100644 --- a/.github/workflows/ci-java.yml +++ b/.github/workflows/ci-java.yml @@ -2,6 +2,11 @@ name: Java CI on: workflow_call: + inputs: + use_local_sdk: + description: 'Override databricks-zerobus-ingest-sdk with the local path dep (for integration testing unreleased Rust changes)' + type: boolean + default: false jobs: fmt: @@ -49,6 +54,11 @@ jobs: java-version: ${{ matrix.javaVersion }} distribution: 'temurin' cache: 'maven' + - name: Patch Rust workspace to use local SDK + if: inputs.use_local_sdk + shell: bash + run: printf '\n[patch.crates-io]\ndatabricks-zerobus-ingest-sdk = { path = "sdk" }\n' >> ../rust/Cargo.toml + - name: Build with Maven run: mvn clean compile - name: Run tests diff --git a/.github/workflows/push.yml b/.github/workflows/push.yml index 21d2430..72b3f6c 100644 --- a/.github/workflows/push.yml +++ b/.github/workflows/push.yml @@ -47,17 +47,15 @@ jobs: - '.github/workflows/ci-java.yml' typescript: - 'typescript/**' - - 'rust/**' - '.github/workflows/ci-typescript.yml' python: - 'python/**' - - 'rust/**' - '.github/workflows/ci-python.yml' go: - 'go/**' - - 'rust/**' - '.github/workflows/ci-go.yml' + # Blocking jobs — required for merge rust: needs: changes if: needs.changes.outputs.rust == 'true' @@ -72,18 +70,44 @@ jobs: needs: changes if: needs.changes.outputs.typescript == 'true' uses: ./.github/workflows/ci-typescript.yml - with: - use_local_sdk: ${{ needs.changes.outputs.rust == 'true' }} python: needs: changes if: needs.changes.outputs.python == 'true' uses: ./.github/workflows/ci-python.yml - with: - use_local_sdk: ${{ needs.changes.outputs.rust == 'true' }} go: needs: changes if: needs.changes.outputs.go == 'true' uses: ./.github/workflows/ci-go.yml - \ No newline at end of file + + # Non-blocking cross-SDK jobs — run all SDK tests against the local Rust + # source when rust/** changes, to catch breakage before a new FFI release. + # These are intentionally excluded from `gate` so they don't block merging. + cross-sdk-go: + needs: changes + if: needs.changes.outputs.rust == 'true' + uses: ./.github/workflows/ci-go.yml + with: + use_local_sdk: true + + cross-sdk-python: + needs: changes + if: needs.changes.outputs.rust == 'true' + uses: ./.github/workflows/ci-python.yml + with: + use_local_sdk: true + + cross-sdk-typescript: + needs: changes + if: needs.changes.outputs.rust == 'true' + uses: ./.github/workflows/ci-typescript.yml + with: + use_local_sdk: true + + cross-sdk-java: + needs: changes + if: needs.changes.outputs.rust == 'true' + uses: ./.github/workflows/ci-java.yml + with: + use_local_sdk: true diff --git a/rust/ffi/Cargo.toml b/rust/ffi/Cargo.toml index 762d58c..bc812dd 100644 --- a/rust/ffi/Cargo.toml +++ b/rust/ffi/Cargo.toml @@ -11,7 +11,7 @@ crate-type = ["staticlib"] [dependencies] # Core SDK logic - use local path dependency -databricks-zerobus-ingest-sdk = { path = "../sdk", features = ["arrow-flight", "testing"] } +databricks-zerobus-ingest-sdk = { version="1.0.1", features = ["arrow-flight", "testing"] } # Arrow IPC for serializing/deserializing RecordBatches across the FFI boundary arrow-ipc = { version = "56.2.0", default-features = false } diff --git a/rust/jni/Cargo.toml b/rust/jni/Cargo.toml index 75f8af4..c4c67e4 100644 --- a/rust/jni/Cargo.toml +++ b/rust/jni/Cargo.toml @@ -14,7 +14,7 @@ crate-type = ["cdylib"] name = "zerobus_jni" [dependencies] -databricks-zerobus-ingest-sdk = { path = "../sdk", features = ["arrow-flight"] } +databricks-zerobus-ingest-sdk = { version = "1.0.1", features = ["arrow-flight"] } jni = "0.21" tokio = { version = "1.42", features = ["rt-multi-thread", "sync"] } prost = "0.13" From 6e8b258a9e807fb59aabba84eae14a58a04bcf66 Mon Sep 17 00:00:00 2001 From: elenagaljak-db Date: Mon, 16 Mar 2026 17:28:43 +0100 Subject: [PATCH 4/8] fix Signed-off-by: elenagaljak-db --- .github/workflows/ci-go.yml | 138 ------------------------------------ 1 file changed, 138 deletions(-) diff --git a/.github/workflows/ci-go.yml b/.github/workflows/ci-go.yml index 1d7c042..b177bc6 100644 --- a/.github/workflows/ci-go.yml +++ b/.github/workflows/ci-go.yml @@ -1,18 +1,5 @@ name: Go CI -on: - workflow_call: - -jobs: - fmt: - runs-on: - group: databricks-protected-runner-group - labels: linux-ubuntu-latest - defaults: - run: - working-directory: go - steps:name: Go CI - on: workflow_call: inputs: @@ -160,128 +147,3 @@ jobs: - name: Test Proto batch example builds working-directory: go/examples/proto/batch run: go build -v - - - uses: actions/checkout@v4 - - - uses: actions/setup-go@v5 - with: - go-version: '1.21' - - - uses: dtolnay/rust-toolchain@stable - with: - components: rustfmt - - - name: Format all files - run: make fmt - - - name: Fail on differences - run: git diff --exit-code - - lint: - runs-on: - group: databricks-protected-runner-group - labels: linux-ubuntu-latest - defaults: - run: - working-directory: go - steps: - - uses: actions/checkout@v4 - - - uses: actions/setup-go@v5 - with: - go-version: '1.21' - - - uses: dtolnay/rust-toolchain@stable - with: - components: clippy - - - name: Lint code - run: make lint - - test: - strategy: - fail-fast: false - matrix: - os: [linux-ubuntu-latest, windows-server-latest] - runs-on: - group: databricks-protected-runner-group - labels: ${{ matrix.os }} - defaults: - run: - working-directory: go - shell: bash - steps: - - uses: actions/checkout@v4 - - - name: Unshallow - run: git fetch --prune --unshallow - - - uses: actions/setup-go@v5 - with: - go-version: '1.21' - - - uses: dtolnay/rust-toolchain@stable - with: - targets: x86_64-pc-windows-gnu - - - name: Build Rust FFI - run: make build-rust - - - name: Build Go SDK - run: make build-go - - - name: Run tests - run: make test - - - name: Build examples - run: make examples - - user-experience: - strategy: - fail-fast: false - matrix: - include: - - os: linux-ubuntu-latest - lib: lib/linux_amd64/libzerobus_ffi.a - - os: windows-server-latest - lib: lib/windows_amd64/libzerobus_ffi.a - runs-on: - group: databricks-protected-runner-group - labels: ${{ matrix.os }} - defaults: - run: - working-directory: go - shell: bash - steps: - - uses: actions/checkout@v4 - - - uses: actions/setup-go@v5 - with: - go-version: '1.21' - - - uses: dtolnay/rust-toolchain@stable - - - name: Run go generate (user step 1) - run: go generate -v - - - name: Verify library built - run: test -f ${{ matrix.lib }} - - - name: Test go build works (user step 2) - run: go build -v - - - name: Test JSON single example builds - working-directory: go/examples/json/single - run: go build -v - - - name: Test JSON batch example builds - working-directory: go/examples/json/batch - run: go build -v - - - name: Test Proto single example builds - working-directory: go/examples/proto/single - run: go build -v - - - name: Test Proto batch example builds - working-directory: go/examples/proto/batch - run: go build -v From a303941058bef4ff2b759dd48967c6cd69668bf2 Mon Sep 17 00:00:00 2001 From: elenagaljak-db Date: Mon, 16 Mar 2026 17:47:03 +0100 Subject: [PATCH 5/8] fix Signed-off-by: elenagaljak-db --- .github/workflows/ci-java.yml | 6 +++++- .github/workflows/ci-typescript.yml | 6 +++++- .github/workflows/push.yml | 20 +++++++++++++------- 3 files changed, 23 insertions(+), 9 deletions(-) diff --git a/.github/workflows/ci-java.yml b/.github/workflows/ci-java.yml index 88304f8..80afab3 100644 --- a/.github/workflows/ci-java.yml +++ b/.github/workflows/ci-java.yml @@ -7,6 +7,10 @@ on: description: 'Override databricks-zerobus-ingest-sdk with the local path dep (for integration testing unreleased Rust changes)' type: boolean default: false + artifact_suffix: + description: 'Suffix to append to artifact names to avoid conflicts when called multiple times in one workflow run' + type: string + default: '' jobs: fmt: @@ -67,7 +71,7 @@ jobs: if: always() uses: actions/upload-artifact@v4 with: - name: test-results-${{ matrix.os }}-java-${{ matrix.javaVersion }} + name: test-results-${{ matrix.os }}-java-${{ matrix.javaVersion }}${{ inputs.artifact_suffix }} path: | java/target/surefire-reports/ java/target/test-classes/ diff --git a/.github/workflows/ci-typescript.yml b/.github/workflows/ci-typescript.yml index e18a9c0..c41e004 100644 --- a/.github/workflows/ci-typescript.yml +++ b/.github/workflows/ci-typescript.yml @@ -7,6 +7,10 @@ on: description: 'Override databricks-zerobus-ingest-sdk with the local path dep (for integration testing unreleased Rust changes)' type: boolean default: false + artifact_suffix: + description: 'Suffix to append to artifact names to avoid conflicts when called multiple times in one workflow run' + type: string + default: '' jobs: build: @@ -92,7 +96,7 @@ jobs: - name: Upload artifact uses: actions/upload-artifact@v4 with: - name: bindings-${{ matrix.settings.target }} + name: bindings-${{ matrix.settings.target }}${{ inputs.artifact_suffix }} path: 'typescript/*.node' if-no-files-found: error diff --git a/.github/workflows/push.yml b/.github/workflows/push.yml index 72b3f6c..d299190 100644 --- a/.github/workflows/push.yml +++ b/.github/workflows/push.yml @@ -15,13 +15,17 @@ jobs: if: always() steps: - run: | - if [[ "${{ needs.rust.result }}" == "failure" ]] || \ - [[ "${{ needs.java.result }}" == "failure" ]] || \ - [[ "${{ needs.typescript.result }}" == "failure" ]] || \ - [[ "${{ needs.python.result }}" == "failure" ]] || \ - [[ "${{ needs.go.result }}" == "failure" ]]; then - exit 1 - fi + for result in \ + "${{ needs.rust.result }}" \ + "${{ needs.java.result }}" \ + "${{ needs.typescript.result }}" \ + "${{ needs.python.result }}" \ + "${{ needs.go.result }}"; do + if [[ "$result" != "success" && "$result" != "skipped" ]]; then + echo "Job failed or was cancelled: $result" + exit 1 + fi + done changes: runs-on: @@ -104,6 +108,7 @@ jobs: uses: ./.github/workflows/ci-typescript.yml with: use_local_sdk: true + artifact_suffix: '-local-sdk' cross-sdk-java: needs: changes @@ -111,3 +116,4 @@ jobs: uses: ./.github/workflows/ci-java.yml with: use_local_sdk: true + artifact_suffix: '-local-sdk' From 613744006775484b06ef91839be1a9a7420ba09b Mon Sep 17 00:00:00 2001 From: elenagaljak-db Date: Tue, 17 Mar 2026 13:59:28 +0100 Subject: [PATCH 6/8] testing python change Signed-off-by: elenagaljak-db --- python/examples/async_example_proto.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/python/examples/async_example_proto.py b/python/examples/async_example_proto.py index f467f10..034e79f 100644 --- a/python/examples/async_example_proto.py +++ b/python/examples/async_example_proto.py @@ -118,7 +118,7 @@ def on_ack(self, offset): async def main(): - print("Starting asynchronous ingestion example (Protobuf)...") + print("Starting asynchronous ingestion example (Protobuf)... random line change") print("=" * 60) # Check if credentials are configured From 63325b25c462c5b7283aff5d31bb1938bfc14e26 Mon Sep 17 00:00:00 2001 From: elenagaljak-db Date: Tue, 17 Mar 2026 14:08:11 +0100 Subject: [PATCH 7/8] add to gitignore Signed-off-by: elenagaljak-db --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index e31a805..e40addc 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,6 @@ # IDE .idea/ +*/flycheck* *.iml *.iws *.ipr From 1bd97ab4d98c439c87c66c8b4bea44d06c83ebc8 Mon Sep 17 00:00:00 2001 From: elenagaljak-db Date: Tue, 17 Mar 2026 16:06:48 +0100 Subject: [PATCH 8/8] remove testing lines --- python/examples/async_example_proto.py | 2 +- rust/sdk/src/lib.rs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/python/examples/async_example_proto.py b/python/examples/async_example_proto.py index 034e79f..f467f10 100644 --- a/python/examples/async_example_proto.py +++ b/python/examples/async_example_proto.py @@ -118,7 +118,7 @@ def on_ack(self, offset): async def main(): - print("Starting asynchronous ingestion example (Protobuf)... random line change") + print("Starting asynchronous ingestion example (Protobuf)...") print("=" * 60) # Check if credentials are configured diff --git a/rust/sdk/src/lib.rs b/rust/sdk/src/lib.rs index bc387a7..6e51ddd 100644 --- a/rust/sdk/src/lib.rs +++ b/rust/sdk/src/lib.rs @@ -527,7 +527,7 @@ impl ZerobusSdk { match stream { Ok(stream) => { if let Some(stream_id) = stream.stream_id.as_ref() { - info!(stream_id = %stream_id, "Successfully created new ephemeral stream. random line change"); + info!(stream_id = %stream_id, "Successfully created new ephemeral stream"); } else { error!("Successfully created a stream but stream_id is None"); }