Update docs & opentiny.design PRs
发布 genui-sdk 新版本后,更新以下仓库并自动提 PR:
- opentiny/docs:submodule + 版本 + 侧栏 → 详见 docs.md
- opentiny/opentiny.design:仅 submodule → 详见 design.md
- 提 PR 后触发 Pages 部署并打开预览 → 详见 deploy.md
不要 clone 整仓。 一律用 gh api。禁止 force-push;后续修改在分支上追加 commit。
前置检查
- 依赖:需要
gh(GitHub CLI)、jq(解析 API 输出)、npm(docs 查 npm 最新版本用)。先检查:
缺失时给安装指引(macOS:command -v gh >/dev/null || { echo "gh 未安装,请先安装:brew install gh" >&2; exit 1; } command -v jq >/dev/null || { echo "jq 未安装,请先安装:brew install jq" >&2; exit 1; } command -v npm >/dev/null || { echo "npm 未安装,请先安装 Node.js(含 npm)" >&2; exit 1; }brew install gh jq;npm 随 Node.js 一起安装),不要当作未登录去提示gh auth login。 - 版本号:用户提供(如
1.3.0/v1.3.0),去前导v;须为非空 semver(含预发布/构建号),非法值直接退出。opentiny.design不写版本,只共用COMMIT。 - 鉴权:
gh auth status;未登录则提示gh auth login或提供对两仓有写权限的 token。
COMMIT = 用户指定,否则 opentiny/genui-sdk 远程 main tip
BRANCH = deploy/update-genui-{version}
基线分支(两仓)= dev
工作流
进度:
- [ ] 1. 确定 version 与 COMMIT
- [ ] 2. 更新 opentiny/docs 并提 PR → docs.md
- [ ] 3. 更新 opentiny/opentiny.design 并提 PR → design.md
- [ ] 4. 触发 Pages 部署,成功后打开预览 → deploy.md
- [ ] 5. 回报 PR URL、run URL、预览 URL
Step 1:确定 version 与 COMMIT
version="${version#v}"
if [ -z "${version}" ] || ! [[ "${version}" =~ ^[0-9]+\.[0-9]+\.[0-9]+(-[0-9A-Za-z.-]+)?(\+[0-9A-Za-z.-]+)?$ ]]; then
echo "version required (semver, e.g. 1.3.0)" >&2
exit 1
fi
if [ -n "${USER_COMMIT}" ]; then
COMMIT="${USER_COMMIT}"
else
COMMIT=$(gh api repos/opentiny/genui-sdk/git/ref/heads/main --jq .object.sha) || {
echo "获取 genui-sdk main tip 失败,请检查网络与鉴权" >&2
exit 1
}
fi
if ! [[ "${COMMIT}" =~ ^[0-9a-fA-F]{40}$ ]]; then
echo "COMMIT 无效:需为 40 位 hex SHA,当前为 ${COMMIT}" >&2
exit 1
fi
BRANCH="deploy/update-genui-${version}"
version:用户输入并去前导v;用于分支名与 PR 文案;docs 里各 genui 依赖分别取各自 npm 最新正式版(见 docs.md)COMMIT:优先用户指定;否则maintip;两仓共用;解析失败或非 40 位 hex SHA 直接退出;勿再用 tag 覆盖用户指定的 commit
Step 2–4
按顺序执行并阅读对应文件中的命令与规则:
- docs.md
- design.md
- deploy.md
Step 5:回报
返回 docs / design 的 PR URL、部署 run URL,以及:
一仓失败时尽量完成另一仓,并说明原因。
常见问题
| 情况 | 处理 |
|---|---|
| gh / jq / npm 未安装 | 按前置检查安装(macOS:brew install gh jq;npm 随 Node.js),不要当作未登录 |
| 未登录 / 无权限 | gh auth login 或提供覆盖两仓的 token |
| 分支已存在 / 改 PR | 以分支 tip 为 parent 追加 commit,无 force PATCH |
| 用户指定了 commit | 两仓都用该 commit |
| docs 无侧栏变更 | 跳过 config.mts |
| design | 只动 genui-sdk gitlink |
| 部署失败 | 回报 run URL,不要打开过期预览 |
| 打不开浏览器 | 把预览 URL 发给用户 |