Skip to content

ci(java): parallelize macOS build, split publish; scope release lock updates#7341

Open
wjones127 wants to merge 1 commit into
lance-format:mainfrom
wjones127:ci/java-publish-parallel-macos
Open

ci(java): parallelize macOS build, split publish; scope release lock updates#7341
wjones127 wants to merge 1 commit into
lance-format:mainfrom
wjones127:ci/java-publish-parallel-macos

Conversation

@wjones127

Copy link
Copy Markdown
Contributor

The Java publish workflow built the macOS native lib and published the multi-platform JAR in a single job, so the macOS build was gated behind the Linux builds (needs: [linux-arm64, linux-x86]) even though only the publish step depends on the Linux artifacts.

Workflow restructure (java-publish.yml)

  • build-linux — the two near-identical Debian 10 builds collapsed into a matrix (x86-64, arm64).
  • build-macos — build-only, no needs, runs concurrently with the Linux builds.
  • publish — a separate ubuntu-latest job that gathers all three native libs and packages/deploys with -Dskip.build.jni=true. No longer holds the expensive macOS runner during publish.

Critical path goes from linux → (macos build + publish) to max(linux, macos) → publish.

Drop no-op -P shade-jar

That profile doesn't exist; shading is an always-on plugin bound to the package phase. The flag only produced a could not be activated warning.

cargo update --workspace in release scripts

The release scripts ran bare cargo update after the version bump, which refreshed all transitive dependencies rather than just the local crates being re-versioned. This swept incidental dependency bumps into release commits — see this run, where the lock update pulled in brotli, hyper, jiff, zerocopy, and ~14 others on top of the intended lance-* version changes. --workspace re-pins only the workspace crates whose versions changed. Applied to all three release scripts (create_release_branch.sh, release_common.sh, publish_beta.sh) for consistency.

Note

The PR's pull_request trigger exercises the full build + dry-run path. The cargo update --workspace change only takes effect on the next release-tooling run.

🤖 Generated with Claude Code

…updates

The Java publish workflow built the macOS native lib and published the
multi-platform JAR in a single job, so the macOS build was gated behind the
Linux builds even though only the publish step depends on them.

- Collapse the two near-identical Debian 10 Linux builds into a matrix.
- Make the macOS job build-only and run it concurrently with the Linux builds.
- Add a separate `publish` job on ubuntu-latest that gathers all three native
  libs and packages/deploys with `-Dskip.build.jni=true`. This no longer holds
  the macOS runner during publish.

Also:
- Drop the no-op `-P shade-jar` profile from the deploy command. Shading is an
  always-on plugin bound to the `package` phase; the flag only logged a
  "could not be activated" warning.
- Use `cargo update --workspace` in the release scripts. Bare `cargo update`
  after the version bump refreshed all transitive dependencies, sweeping
  incidental bumps into release commits (e.g. brotli, hyper, jiff, zerocopy in
  https://github.com/lance-format/lance/actions/runs/26624032632/job/78456375994#step:5:2496).
  `--workspace` re-pins only the local crates whose versions changed.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@github-actions github-actions Bot added A-ci CI / build workflows ci Github Action or Test issues labels Jun 17, 2026
@wjones127 wjones127 marked this pull request as ready for review June 17, 2026 21:01
@wjones127 wjones127 requested a review from jackye1995 June 17, 2026 21:01
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

A-ci CI / build workflows ci Github Action or Test issues

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants