Skip to content

[All] Reorganize CI/CD and Release Workflows#149

Open
teodordelibasic-db wants to merge 13 commits intomainfrom
reorganize-releases
Open

[All] Reorganize CI/CD and Release Workflows#149
teodordelibasic-db wants to merge 13 commits intomainfrom
reorganize-releases

Conversation

@teodordelibasic-db
Copy link
Contributor

@teodordelibasic-db teodordelibasic-db commented Mar 17, 2026

What changes are proposed in this pull request?

This PR restructures all CI and release workflows across the monorepo. The main goals are:

  • Add self-hosted macOS ARM64 runner to all CI and release pipelines.
  • Instead of committing binaries to Git, build native libraries in CI during release for JNI and TS.
  • Have tag-triggered releases for all SDKs.
  • Simplify Go release by removing force-push tag approach.
  • Slim CI matrices to reduce unnecessary job combinations.

Changes by SDK

Rust

  • New release-rust.yml: Tag-triggered (rust/v*), publishes to crates.io via OIDC trusted publishing (no API tokens), creates GitHub Release with changelog notes.

Java

  • Rewrote release-java.yml: Now builds JNI libraries for all 5 platforms (linux x86_64, linux aarch64, macOS x86_64, macOS aarch64, windows x86_64) in CI, publishes JAR to Maven Central, and creates GitHub Release with JNI tarball attached.
  • Deleted release-jni.yml: Fully replaced by the unified Java release workflow.
  • Removed committed JNI binaries from java/src/main/resources/native/ (~89MB). Added to .gitignore.
  • Updated ci-java.yml: Added macOS runner. Slimmed matrix to 5 jobs: Linux (Java 11/17/21), Windows (Java 11), macOS (Java 11).

Python

  • Updated release-python.yml: Added macOS wheel builds (arm64 native + x86_64 cross-compiled). Added GitHub Release with changelog notes (was missing). Renamed jobs for consistency.
  • Updated ci-python.yml: Added macOS runner. Slimmed matrix to 6 jobs: Linux (Python 3.9–3.12), Windows (3.9), macOS (3.9).

TypeScript

  • Updated release-typescript.yml: Added macOS builds on self-hosted runner. Removed cp prebuilt/*.node . — all 5 platform binaries now come from CI artifacts.
  • Removed prebuilt macOS binaries from typescript/prebuilt/ (~9MB). Updated .gitignore.
  • Updated ci-typescript.yml: Added macOS to build matrix (arm64 + x86_64) and test matrix. Slimmed test matrix to 5 jobs: Linux (Node 16/18/20), Windows (Node 16), macOS (Node 16).

Go

  • Simplified release-go.yml: Removed the force-push tag approach. Now just creates a GitHub Release with changelog notes. FFI binaries live on main (un-gitignored go/lib/).
  • Updated ci-go.yml: Added macOS to test and user-experience matrices.
  • Updated go/.gitignore: Un-gitignored lib/ directory so FFI static libraries can be committed.

FFI

  • Updated release-ffi.yml: Changed trigger from workflow_dispatch to ffi/v* tag. Added macOS targets (arm64 + x86_64). Now produces both static and dynamic libraries.
  • Updated rust/ffi/Cargo.toml: Added cdylib crate type alongside staticlib.
  • Added rust/ffi/CHANGELOG.md and rust/ffi/NEXT_CHANGELOG.md.

CI Matrix Summary

SDK Before After
Rust Linux, Windows Linux, Windows, macOS
Java Linux × 3 JDKs, Win × 3 JDKs Linux × 3 JDKs, Win × 1 JDK, macOS × 1 JDK
Python Linux × 4 Py, Win × 4 Py Linux × 4 Py, Win × 1 Py, macOS × 1 Py
TypeScript Linux × 3 Node, Win × 3 Node Linux × 3 Node, Win × 1 Node, macOS × 1 Node
Go Linux, Windows Linux, Windows, macOS

Release Flow Summary

SDK Trigger Publishes to GitHub Release
Rust rust/v* crates.io (OIDC) Yes
Java java/v* Maven Central Yes + JNI tarball
Python python/v* PyPI (OIDC) Yes
TypeScript typescript/v* npm Yes
Go go/v* Go module proxy Yes
FFI ffi/v* Yes + FFI tarball

How is this tested?

N/A

Signed-off-by: teodordelibasic-db <teodor.delibasic@databricks.com>
Signed-off-by: teodordelibasic-db <teodor.delibasic@databricks.com>
Signed-off-by: teodordelibasic-db <teodor.delibasic@databricks.com>
Signed-off-by: teodordelibasic-db <teodor.delibasic@databricks.com>
Signed-off-by: teodordelibasic-db <teodor.delibasic@databricks.com>
Signed-off-by: teodordelibasic-db <teodor.delibasic@databricks.com>
Signed-off-by: teodordelibasic-db <teodor.delibasic@databricks.com>
Signed-off-by: teodordelibasic-db <teodor.delibasic@databricks.com>
Signed-off-by: teodordelibasic-db <teodor.delibasic@databricks.com>
Signed-off-by: teodordelibasic-db <teodor.delibasic@databricks.com>
Signed-off-by: teodordelibasic-db <teodor.delibasic@databricks.com>
Signed-off-by: teodordelibasic-db <teodor.delibasic@databricks.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant