Skip to content

feat(release): auto-publish into xlings ecosystem (res mirror + index bump PR)#349

Merged
Sunrisepeak merged 2 commits into
mainfrom
feat/release-ecosystem-publish
Jul 1, 2026
Merged

feat(release): auto-publish into xlings ecosystem (res mirror + index bump PR)#349
Sunrisepeak merged 2 commits into
mainfrom
feat/release-ecosystem-publish

Conversation

@Sunrisepeak

Copy link
Copy Markdown
Member

What

Closes the release→ecosystem gap. On release, xlings already mirrors binaries to xlings-res/xlings and publishes the index artifact — but nothing bumped the index source (pkgs/x/xlings.lua), so the artifact shipped stale (this is exactly how 0.4.61/0.4.62 stalled at 0.4.60; see openxlings/xim-pkgindex#336).

This adds the missing step + a reusable, project-generic toolset (shared with mcpp):

  • tools/mirror_res.sh <project> <version> — generic res mirror (xlings + mcpp asset lists, incl. mcpp .sha256 sidecars). mirror_xlings_res.sh is now a thin back-compat shim (release.yml still calls it by name).
  • tools/bump_index.sh <project> <version> — clones openxlings/xim-pkgindex, delegates the lua edit to the index repo's own version-check.py --apply --only <proj> (contract-agnostic: res_versionedXLINGS_RES, url_templateurl+sha256; bumps latest.ref), then opens a PR — no auto-merge. Idempotent (no-op if already current; force-push updates an open PR).
  • release.yml — new bump-index job (needs: create-release), parallel to publish-index/mirror-binaries, gated on XIM_PKGINDEX_TOKEN.

Design decision

Index git source is intentionally not on the release critical path — availability is guaranteed by the res binary mirror + index artifact. The bump is a PR a maintainer merges; on merge the index repo republishes its artifact and gitee-sync mirrors it.

Verification

  • version-check.py --apply --only xlings (res_versioned) → appends ["<ver>"]="XLINGS_RES" + bumps latest.ref (proven by bump(xlings): track 0.4.62 as latest (index stale at 0.4.60) xim-pkgindex#336).
  • bash -n clean on all three scripts; release.yml parses; bump-index wired to create-release.
  • Tokens configured: XIM_PKGINDEX_TOKEN (openxlings/xim-pkgindex, Contents+PR write) in this repo's Actions secrets.

Companion

mcpp side (vendored scripts + publish-ecosystem job) tracked separately. Full plan: .agents/docs/2026-07-01-release-ecosystem-publish-design.md.

… bump PR)

Close the release→ecosystem gap: on release, besides mirroring binaries and
publishing the index artifact, also bump the index SOURCE and open a PR.

- tools/mirror_res.sh: generic <project> <version> res mirror (xlings + mcpp),
  factored out of mirror_xlings_res.sh (now a thin back-compat shim).
- tools/bump_index.sh: clone openxlings/xim-pkgindex, delegate the lua edit to
  the index repo's own version-check.py --apply --only <proj> (contract-agnostic:
  res_versioned→XLINGS_RES, url_template→url+sha256), open a PR (no auto-merge).
- release.yml: new 'bump-index' job (needs create-release), parallel to
  publish-index/mirror-binaries, using XIM_PKGINDEX_TOKEN.
- design doc under .agents/docs/.

Rationale + cross-repo plan: .agents/docs/2026-07-01-release-ecosystem-publish-design.md
@Sunrisepeak Sunrisepeak merged commit ab193b9 into main Jul 1, 2026
7 checks passed
@Sunrisepeak Sunrisepeak deleted the feat/release-ecosystem-publish branch July 1, 2026 14:08
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.

2 participants