Hyukjin Kwon created SPARK-59077:
------------------------------------

             Summary: Make the spark-connect-rust release workflow safe for a 
direct release
                 Key: SPARK-59077
                 URL: https://issues.apache.org/jira/browse/SPARK-59077
             Project: Spark
          Issue Type: Improvement
          Components: Project Infra
    Affects Versions: 5.0.0
            Reporter: Hyukjin Kwon


The release workflow (.github/workflows/release.yml) can publish the Rust 
crates to crates.io and the Python wheel to PyPI, but a dry_run=true dispatch 
only builds wheels -- it never rehearses the crate publish, so the first proof 
that "cargo publish" works is the irreversible real release. Other gaps make a 
direct release risky:

- No idempotent recovery: a re-run after a partial publish aborts on "already 
exists" (crates) and on duplicate upload (PyPI).
- The single ubuntu-latest wheel's glibc floor tracks the runner, with no 
aarch64 build and no sdist fallback.
- No concurrency guard, so a tag push and a manual dispatch can publish at the 
same time.
- The published crates lack repository/homepage metadata (crates.io "manifest 
has no repository" warning).

Harden the workflow so a committer can cut a release directly:

- Rehearse the crate publish in dry-run via workspace-ordered "cargo publish 
--dry-run" (cargo >= 1.90 orders and verify-builds the crates against the local 
workspace, so it works even before anything is on crates.io).
- Make crate and wheel publishing idempotent (skip crates already on crates.io; 
twine upload --skip-existing).
- Build portable manylinux2014 (x86_64 + aarch64 via --zig) and macOS 
universal2 wheels, plus a source distribution.
- Add a concurrency guard that never cancels a publish in flight.
- Extend the version gate to also check the internal path-dependency version 
pins.
- Inherit repository/homepage/authors on the published crates from the 
workspace.

PR: https://github.com/apache/spark-connect-rust/pull/79




--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to