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]

Reply via email to