jianguotian opened a new pull request, #9:
URL: https://github.com/apache/paimon-full-text/pull/9
## What
Add the complete release infrastructure to `paimon-full-text`, fully aligned
with `paimon-vector-index` and `paimon-mosaic`. Before this PR the repo only
had
`ci.yml`, `publish_snapshot.yml`, and `tools/update_branch_version.sh`; the
Rust/Java/Python release pipeline and the ASF release scaffolding were
missing.
## Why aligned against BOTH sibling repos
The two reference repos have diverged — neither is uniformly newer — so each
file
was taken from whichever sibling carries the fix, then adapted to full-text's
`paimon-ftindex` / `apache/paimon-full-text` naming:
- Release workflows & `create_source_release.sh`: from `paimon-vector-index`
(full-text follows its `python/paimon_ftindex/` package-dir layout).
- `update_branch_version.sh`: from `paimon-mosaic` (#57) — its version-bump
fix
is NOT in vector-index (see pitfall #2).
- `validate_asf_yaml.py`: from `paimon-vector-index` (lenient schema — does
not
false-reject newer ASF-infra keys, unlike mosaic's strict allow-list).
## Pitfalls fixed (each only surfaces at release time — the reason for this
PR)
1. **crates.io publish would fail** — `core/ffi/jni` Cargo.toml had no
`description`. crates.io rejects publish without it; `cargo publish
--dry-run`
on the RC tag does NOT catch this, so it only blows up on the final tag.
(Same failure paimon-vector-index hit and fixed in its #49.) → added
descriptions.
2. **`update_branch_version.sh` silently skipped Cargo.toml** on snapshot
bumps
(matched `$OLD_VERSION` incl. `-SNAPSHOT`, which Cargo.toml never
carries) →
version drift between pom and Cargo. → ported mosaic's
`OLD_VERSION_CLEAN` fix.
3. **Java staging deploy would fail** — `java/pom.xml` had no `release`
profile
(no gpg signing, no source/javadoc jars, no `nexus-staging-maven-plugin`).
`mvn deploy -Prelease` needs it. → added profile + ASF license header.
4. **Source release invalid** — no `LICENSE` / `NOTICE` at repo root (hard
ASF
vote requirement). → added Apache-2.0 LICENSE + NOTICE.
5. **No dependency-license compliance** — no `deny.toml` / `dependencies.py`
/
`cargo deny check licenses` in CI. → added the full unit (allow-list only,
no cbindgen exception since full-text doesn't use cbindgen).
## Changes
- `.github/workflows/`: add `release.yml`, `release-rust.yml`,
`release-java.yml`,
`release-python.yml`, `release-python-publish.yml`; `ci.yml` gains
`Validate .asf.yaml` + `cargo deny check licenses`.
- `tools/`: add `create_release_branch.sh`, `create_source_release.sh`,
`dependencies.py`, `validate_asf_yaml.py`; fix `update_branch_version.sh`.
- `core/ffi/jni/Cargo.toml`: add `description`.
- `java/pom.xml`: add ASF license header + `release` profile.
- Add `LICENSE`, `NOTICE`, `deny.toml`.
## Verified locally
- All 7 workflows parse as valid YAML.
- `cargo metadata` — 3 crates now carry descriptions.
- `java/pom.xml` well-formed; `release` profile present.
- `tools/*.sh` pass `bash -n`; `validate_asf_yaml.py` → `.asf.yaml is valid`.
- `cargo deny check licenses` → `licenses ok` (exit 0). Note: full-text's
`tantivy-jieba` stack pulls Zlib-licensed crates that the sibling
allow-lists
don't cover, so `Zlib` (ASF Category A) was added — verified locally.
- No leftover `vindex` / `vector-index` / `mosaic` strings anywhere.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]