create-dwy 0.19.0 → 0.20.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +21 -0
- package/package.json +1 -1
- package/src/cli-help.js +28 -2
- package/src/prompt-style.js +82 -0
- package/src/searchable-select.js +12 -29
- package/src/sync-all.js +95 -583
- package/src/sync-codex.js +14 -7
- package/src/sync-opencode.js +8 -22
- package/src/sync.js +60 -149
- package/src/tab-multiselect.js +21 -64
- package/templates/ai-tools/CHANGELOG.md +195 -0
- package/templates/ai-tools/CLAUDE.md +39 -58
- package/templates/ai-tools/VERSION +1 -1
- package/templates/ai-tools/hooks/Git/pre-git-commit-ai-signature-check.sh +5 -4
- package/templates/ai-tools/rules/Android/dwy-android-core.md +147 -13
- package/templates/ai-tools/rules/Android/dwy-android-layering.md +142 -0
- package/templates/ai-tools/rules/Android/dwy-android-mvp.md +55 -0
- package/templates/ai-tools/rules/Android/dwy-android-support-only.md +2 -0
- package/templates/ai-tools/rules/Docker/dwy-docker.md +23 -1
- package/templates/ai-tools/rules/Flutter/dwy-flutter-core.md +2 -0
- package/templates/ai-tools/rules/Flutter/dwy-flutter-testing.md +1 -1
- package/templates/ai-tools/rules/HarmonyOS/dwy-arkts-ui-build.md +12 -8
- package/templates/ai-tools/rules/Python/dwy-python-backend.md +4 -43
- package/templates/ai-tools/rules/Python/dwy-python-base-lib.md +1 -1
- package/templates/ai-tools/rules/Python/dwy-python-layering.md +169 -0
- package/templates/ai-tools/rules/Vue/dwy-vue-core.md +11 -49
- package/templates/ai-tools/rules/Vue/dwy-vue-layering.md +153 -0
- package/templates/ai-tools/rules/iOS/dwy-apple-layering.md +133 -0
- package/templates/ai-tools/rules/iOS/dwy-swift-core.md +2 -0
- package/templates/ai-tools/rules//345/274/200/345/217/221/346/265/201/347/250/213/dwy-code-craft.md +83 -0
- package/templates/ai-tools/rules//345/274/200/345/217/221/346/265/201/347/250/213/dwy-dependency-freshness.md +27 -66
- package/templates/ai-tools/rules//345/274/200/345/217/221/346/265/201/347/250/213/dwy-git-commit.md +8 -219
- package/templates/ai-tools/rules//345/274/200/345/217/221/346/265/201/347/250/213/dwy-oss-commercial-license.md +27 -123
- package/templates/ai-tools/rules//345/274/200/345/217/221/346/265/201/347/250/213/dwy-prod-branch.md +31 -0
- package/templates/ai-tools/rules//346/225/260/346/215/256/345/272/223/dwy-postgres.md +17 -10
- package/templates/ai-tools/rules//346/225/260/346/215/256/345/272/223/dwy-redis.md +6 -3
- package/templates/ai-tools/skills/Docker/dwy-deploy-first/SKILL.md +14 -14
- package/templates/ai-tools/skills/Docker/dwy-deploy-first/references/chapter-01-mirrors.md +2 -2
- package/templates/ai-tools/skills/Docker/dwy-docker/SKILL.md +21 -13
- package/templates/ai-tools/skills/Docker/dwy-docker/references/ask-templates.md +13 -12
- package/templates/ai-tools/skills/Docker/dwy-docker/references/templates.md +3 -1
- package/templates/ai-tools/skills/Docker/dwy-docker/references/version-rules.md +10 -6
- package/templates/ai-tools/skills/Docker/dwy-docker/scripts/query_dockerhub.py +21 -6
- package/templates/ai-tools/skills/Docker/dwy-docker/scripts/scan_images.sh +2 -2
- package/templates/ai-tools/skills/Docker/dwy-mirror-source/SKILL.md +44 -30
- package/templates/ai-tools/skills/Docker/dwy-mirror-source/references/dockerfile-snippets.md +2 -0
- package/templates/ai-tools/skills/Docker/dwy-mirror-source/references/mirror-providers.md +8 -8
- package/templates/ai-tools/skills/Docker/dwy-mirror-source/scripts/apply_mirrors.py +14 -1
- package/templates/ai-tools/skills/Docker/dwy-mirror-source/scripts/check_mirrors.py +4 -0
- package/templates/ai-tools/skills/DolphinDB/dwy-dolphindb/SKILL.md +8 -6
- package/templates/ai-tools/skills/DolphinDB/dwy-dolphindb/references/digest/python-sdk.md +3 -3
- package/templates/ai-tools/skills/DolphinDB/dwy-dolphindb/references/digest/stream-engine.md +2 -2
- package/templates/ai-tools/skills/DolphinDB/dwy-dolphindb/references/review-rules/anti-patterns.md +3 -1
- package/templates/ai-tools/skills/DolphinDB/dwy-dolphindb/references/review-rules/change-checklist.md +4 -4
- package/templates/ai-tools/skills/DolphinDB/dwy-dolphindb/references/review-rules/lethal-violations.md +5 -5
- package/templates/ai-tools/skills/DolphinDB/dwy-dolphindb/references/review-rules/perf-baselines.md +5 -5
- package/templates/ai-tools/skills/Python/dwy-eapi/SKILL.md +59 -200
- package/templates/ai-tools/skills/Python/dwy-eapi/shared/anticorruption.md +13 -0
- package/templates/ai-tools/skills/Python/dwy-eapi/shared/layering.md +5 -0
- package/templates/ai-tools/skills/Python/dwy-eapi/shared/response-envelope.md +20 -0
- package/templates/ai-tools/skills/Python/dwy-eapi/shared/timezone.md +7 -0
- package/templates/ai-tools/skills/Python/dwy-eapi/v0/breaking.md +15 -0
- package/templates/ai-tools/skills/Python/dwy-eapi/v0/email-canonical.md +43 -0
- package/templates/ai-tools/skills/Python/dwy-eapi/v0/index.md +103 -0
- package/templates/ai-tools/skills/Python/dwy-eapi/v0/providers-email.md +49 -0
- package/templates/ai-tools/skills/Python/dwy-eapi/versions.yml +13 -0
- package/templates/ai-tools/skills/Vue/dwy-eui/SKILL.md +62 -306
- package/templates/ai-tools/skills/Vue/dwy-eui/references/eui-design-guide.md +8 -1
- package/templates/ai-tools/skills/Vue/dwy-eui/references/eui-integration-guide.md +0 -31
- package/templates/ai-tools/skills/Vue/dwy-eui/shared/config-theme.md +8 -0
- package/templates/ai-tools/skills/Vue/dwy-eui/shared/form.md +6 -0
- package/templates/ai-tools/skills/Vue/dwy-eui/shared/overlay.md +6 -0
- package/templates/ai-tools/skills/Vue/dwy-eui/shared/reka.md +5 -0
- package/templates/ai-tools/skills/Vue/dwy-eui/v1/index.md +8 -0
- package/templates/ai-tools/skills/Vue/dwy-eui/v2/breaking.md +14 -0
- package/templates/ai-tools/skills/Vue/dwy-eui/v2/index.md +55 -0
- package/templates/ai-tools/skills/Vue/dwy-eui/v2/lookup.md +29 -0
- package/templates/ai-tools/skills/Vue/dwy-eui/versions.yml +12 -0
- package/templates/ai-tools/skills//344/272/247/345/223/2010/345/210/2601/dwy-architecture/SKILL.md +11 -14
- package/templates/ai-tools/skills//344/272/247/345/223/2010/345/210/2601/dwy-product-launcher/references/state-and-contract.md +1 -1
- package/templates/ai-tools/skills//344/272/247/345/223/2010/345/210/2601/dwy-prototype/SKILL.md +1 -1
- package/templates/ai-tools/skills//345/217/221/345/270/203/345/217/221/347/211/210/dwy-github-action-publish/SKILL.md +32 -15
- package/templates/ai-tools/skills//345/217/221/345/270/203/345/217/221/347/211/210/dwy-github-action-publish/references/electron-release-workflow-template.yml +3 -1
- package/templates/ai-tools/skills//345/217/221/345/270/203/345/217/221/347/211/210/dwy-github-action-publish/references/release-workflow-template.yml +8 -5
- package/templates/ai-tools/skills//345/217/221/345/270/203/345/217/221/347/211/210/dwy-ios-app-store-release/SKILL.md +1 -1
- package/templates/ai-tools/skills//345/217/221/345/270/203/345/217/221/347/211/210/dwy-ios-app-store-release/assets/appstore-submission.yaml +1 -1
- package/templates/ai-tools/skills//345/217/221/345/270/203/345/217/221/347/211/210/dwy-ios-app-store-release/references/aso.md +2 -0
- package/templates/ai-tools/skills//345/217/221/345/270/203/345/217/221/347/211/210/dwy-ios-app-store-release/references/in-app-purchase-review.md +1 -1
- package/templates/ai-tools/skills//345/217/221/345/270/203/345/217/221/347/211/210/dwy-publish/SKILL.md +4 -3
- package/templates/ai-tools/skills//345/217/221/345/270/203/345/217/221/347/211/210/dwy-publish/references/android.md +1 -1
- package/templates/ai-tools/skills//345/217/221/345/270/203/345/217/221/347/211/210/dwy-publish/references/backend-deploy.md +1 -1
- package/templates/ai-tools/skills//345/217/221/345/270/203/345/217/221/347/211/210/dwy-publish/references/changelog.md +45 -27
- package/templates/ai-tools/skills//345/217/221/345/270/203/345/217/221/347/211/210/dwy-publish/references/frontend-deploy.md +1 -1
- package/templates/ai-tools/skills//345/217/221/345/270/203/345/217/221/347/211/210/dwy-publish/references/generic-release.md +1 -1
- package/templates/ai-tools/skills//345/217/221/345/270/203/345/217/221/347/211/210/dwy-publish/references/git-tag.md +1 -1
- package/templates/ai-tools/skills//345/217/221/345/270/203/345/217/221/347/211/210/dwy-publish/references/harmony.md +1 -1
- package/templates/ai-tools/skills//345/217/221/345/270/203/345/217/221/347/211/210/dwy-publish/references/ios.md +1 -1
- package/templates/ai-tools/skills//345/217/221/345/270/203/345/217/221/347/211/210/dwy-semver/SKILL.md +8 -0
- package/templates/ai-tools/skills//345/256/211/345/205/250/dwy-deploy-audit/SKILL.md +7 -7
- package/templates/ai-tools/skills//345/256/211/345/205/250/dwy-deploy-audit/references/checks-runtime.md +63 -59
- package/templates/ai-tools/skills//345/256/211/345/205/250/dwy-deploy-audit/scripts/check_base.sh +10 -1
- package/templates/ai-tools/skills//345/256/211/345/205/250/dwy-deploy-audit/scripts/check_capacity.sh +21 -23
- package/templates/ai-tools/skills//345/256/211/345/205/250/dwy-deploy-audit/scripts/check_db.sh +9 -1
- package/templates/ai-tools/skills//345/256/211/345/205/250/dwy-deploy-audit/scripts/check_docker.sh +20 -24
- package/templates/ai-tools/skills//345/256/211/345/205/250/dwy-deploy-audit/scripts/check_logs.sh +3 -3
- package/templates/ai-tools/skills//350/207/252/345/252/222/344/275/223/dwy-doubao-tts/SKILL.md +4 -2
- package/templates/ai-tools/skills//350/207/252/345/252/222/344/275/223/dwy-doubao-tts/references/api.md +1 -1
- package/templates/ai-tools/skills//350/207/252/345/252/222/344/275/223/dwy-doubao-tts/scripts/synthesize.py +1 -0
- package/templates/ai-tools/skills//350/207/252/345/252/222/344/275/223/media-platform-packaging/SKILL.md +7 -5
- package/templates/ai-tools/skills//350/207/252/345/252/222/344/275/223/media-platform-packaging/references/platform-copy-examples.md +5 -3
- package/templates/ai-tools/skills//351/200/232/347/224/250/dwy-dependency-choice/SKILL.md +140 -0
- package/templates/ai-tools/skills//351/200/232/347/224/250/dwy-git-commit/SKILL.md +113 -0
- package/templates/ai-tools/skills//351/200/232/347/224/250/dwy-shared/SKILL.md +16 -13
- package/templates/ai-tools/skills//351/200/232/347/224/250/dwy-whiteboard-prototype/SKILL.md +1 -1
- package/src/sync-packs.js +0 -223
- package/src/sync-scene.js +0 -178
- package/templates/ai-tools/rules//345/274/200/345/217/221/346/265/201/347/250/213/dwy-tdd-development.md +0 -115
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
# @dwydev/eui 安装版本 → 文档线。匹配从上到下第一条。
|
|
2
|
+
# 大版本破坏才新开 vN/;2.x 内部 breaking 写 v2/breaking.md,细节 clone 对应 tag。
|
|
3
|
+
repo: https://github.com/danweiyuancircle/dwy-ai-experience.git
|
|
4
|
+
tag_prefix: "@dwydev/eui@"
|
|
5
|
+
sparse:
|
|
6
|
+
- frontend/eui/src
|
|
7
|
+
- frontend/eui/package.json
|
|
8
|
+
lines:
|
|
9
|
+
- match: ">=2.0.0"
|
|
10
|
+
dir: v2
|
|
11
|
+
- match: ">=1.0.0"
|
|
12
|
+
dir: v1
|
package/templates/ai-tools/skills//344/272/247/345/223/2010/345/210/2601/dwy-architecture/SKILL.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: dwy-architecture
|
|
3
|
-
description: "【dwy·技术架构】产品 0 到 1 设计与架构阶段。触发场景:用户说『设计架构 / 出技术方案 / 设计库表 / 定接口契约 / 技术架构 / architecture
|
|
3
|
+
description: "【dwy·技术架构】产品 0 到 1 设计与架构阶段。触发场景:用户说『设计架构 / 出技术方案 / 设计库表 / 定接口契约 / 技术架构 / architecture』,要在开发前定下技术架构、数据库设计和接口契约时。按对应栈 dwy-*-layering(四层 + 单向依赖)+ 统一选型(Python+FastAPI、Vue+Vite)产出。"
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
## 职责(单一)
|
|
@@ -37,24 +37,21 @@ description: "【dwy·技术架构】产品 0 到 1 设计与架构阶段。触
|
|
|
37
37
|
- **CI/CD 走 GitHub Actions + OIDC**(发布鉴权用 OIDC,禁长期静态凭据)
|
|
38
38
|
- **基线不适用就先确认**:任一项基线与上下文冲突(如纯前端无需 Docker/DB、要换其他 DB/MQ/中间件、不能用某项)→ 先 `AskUserQuestion` 跟用户确认,确认后在架构文档写明偏离基线的理由
|
|
39
39
|
|
|
40
|
-
###
|
|
40
|
+
### 四层架构
|
|
41
41
|
|
|
42
|
-
|
|
43
|
-
|---|---|---|---|
|
|
44
|
-
| **装配层 (Assembly)** | 实例化 / 依赖注入 / 路由挂载 / 生命周期,**零业务逻辑** | `src/app/`(main.py 装 Provider/Hook、factories) | `apps/web`(路由、stores、main.ts) |
|
|
45
|
-
| **Features (业务功能层)** | 各业务域领域逻辑,域内 router+service+schema+model **聚在同一目录** | `<域>/`(如 `factor/`、`plan/`、`quota/`) | `features/*`(如 auth、settings) |
|
|
46
|
-
| **业务基础层 (BizFoundation)** | 业务相关但跨业务域复用:鉴权、领域协议/Provider、领域设施 | `auth`、各包 `protocols.py`/`providers` | 跨域复用的业务 composable/store |
|
|
47
|
-
| **业务无关层 (Foundation)** | 与业务完全无关的 kernel | `shared`(DB/Redis/签名/中间件) | `core`(httpClient/格式化/常量) |
|
|
42
|
+
层名、依赖边、分包树以对应栈的 layering rule 为准,本 skill **不另定义目录**:
|
|
48
43
|
|
|
49
|
-
|
|
50
|
-
-
|
|
51
|
-
-
|
|
52
|
-
-
|
|
44
|
+
- Python → `dwy-python-layering`
|
|
45
|
+
- Vue → `dwy-vue-layering`
|
|
46
|
+
- Android → `dwy-android-layering`
|
|
47
|
+
- iOS / macOS → `dwy-apple-layering`
|
|
48
|
+
|
|
49
|
+
铁律(细节与正反例见上列 rule):依赖只许向下;`features/*` 互不依赖;具体实现只在 Assembly 注入;第三方版本只写在仓库根 catalog。
|
|
53
50
|
|
|
54
51
|
## 实现
|
|
55
52
|
[自写型]
|
|
56
53
|
1. 读项目 `.claude/rules/`,结合上方架构约束产出架构(项目 rules 优先,本约束兜底)
|
|
57
|
-
2.
|
|
54
|
+
2. 技术架构:**先读对应栈 `dwy-*-layering` 按四层归位模块、按业务域聚目录**,再写分层/模块边界/选型理由;选型不确定处走 `AskUserQuestion`
|
|
58
55
|
3. **判有无后端**(读选型/PRD:有 API / 持久化 / 账户体系 → 有后端):
|
|
59
56
|
- **有后端** → 必出数据库设计,且**建模到位**:库表清单 / 字段(类型·约束·默认·可空) / 主外键关系 / 索引 / 必要的范式或反范式说明,与接口契约 schema 对齐
|
|
60
57
|
- **纯前端**(无后端)→ 跳过数据库设计,在 `技术架构.md` 注明「无后端,不涉及库表」
|
|
@@ -64,7 +61,7 @@ description: "【dwy·技术架构】产品 0 到 1 设计与架构阶段。触
|
|
|
64
61
|
## 产出契约(硬约束)
|
|
65
62
|
- 落到:`.dwy/prod/[项目]/04-架构设计/技术架构.md`、`接口契约.md`,**有后端时**加 `数据库设计.md`
|
|
66
63
|
- 固定章节:
|
|
67
|
-
- 技术架构.md
|
|
64
|
+
- 技术架构.md:**按对应 `dwy-*-layering` 写四层划分 + 各业务域目录结构** / 模块边界 / 技术选型(按缺省基线写明 Python+FastAPI+uv+Alembic+pydantic-settings+JWT、前端 Vue+Vite+TS+Tailwind+pnpm+Pinia+axios+Playwright、CI/CD GitHub Actions OIDC;有 DB 写明 PostgreSQL+Redis+Docker+Nginx;偏离基线处写明原因)/ 选型不明或偏离基线处的 AskUserQuestion 确认记录 / 有无后端结论
|
|
68
65
|
- 数据库设计.md(**有后端必出**):库表清单 / 字段定义(类型·约束·默认·可空) / 主外键关系与索引 / 与接口契约对齐
|
|
69
66
|
- 接口契约.md:接口清单 / 请求响应 schema / 错误码
|
|
70
67
|
- 回写 state.json:`confirmed.architecture`
|
|
@@ -106,7 +106,7 @@
|
|
|
106
106
|
|
|
107
107
|
- 每个外部 skill 是**整个目录**(含 scripts/ 与配套 .md,不止 SKILL.md)
|
|
108
108
|
- 由 `dwy` 选「刷新全局外部 skill」安装/更新(clone 两仓库的指定 stable tag → 搬整目录 + LICENSE → 写 `VERSIONS.json`)
|
|
109
|
-
- `dwy
|
|
109
|
+
- `dwy` 日常同步自检:`~/.dwy/skills/` 缺失时自动装一次
|
|
110
110
|
- 当前 stable:pm-skills **v2.0.0** | superpowers **v6.0.3**(升级改 cli 的 `skills-install.js` 清单 tag)
|
|
111
111
|
- 原子 skill 运行时**只读** `~/.dwy/skills/<name>/`,缺失则提示用户先跑 `dwy`,选「刷新全局外部 skill」,不自己拉、不降级
|
|
112
112
|
|
package/templates/ai-tools/skills//344/272/247/345/223/2010/345/210/2601/dwy-prototype/SKILL.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: dwy-prototype
|
|
3
|
-
description: "【dwy·UI原型】产品 0 到 1
|
|
3
|
+
description: "【dwy·UI原型】产品 0 到 1 的静态原型。触发场景:用户说『产品流程出原型 / 线框初稿 / 高保真平面图 / 0到1 原型』。两轮串行门控:先低保真线框,用户通过后再做高保真平面图。可交互白板、状态跳转连线不走本 skill,走 dwy-whiteboard-prototype。"
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
## 职责(单一)
|
|
@@ -56,13 +56,26 @@ gh run view <run-id> --json jobs,conclusion
|
|
|
56
56
|
- PyPI Trusted Publisher 需要 `permissions: id-token: write`,并绑定 workflow 和 environment。
|
|
57
57
|
- artifact 名称必须包含平台和架构,避免多个 matrix 上传时互相覆盖。
|
|
58
58
|
|
|
59
|
+
## 模板里的 tag、runner、依赖下限是先验
|
|
60
|
+
|
|
61
|
+
`references/*.yml` 里的 `actions/*@v4`、`pypa/cibuildwheel@v3.4`、`ubuntu-24.04-arm`、`macos-15-intel`、`macos-14`、`manylinux_2_28`、`musllinux_1_2`、`setuptools>=77`、`packaging>=24.2`、`Cython>=3.0.10`、`node-version: 20` 是写作时能用的起点。
|
|
62
|
+
|
|
63
|
+
复制前核对:
|
|
64
|
+
|
|
65
|
+
- `uses:` 的 tag 在该 action 仓库里真实存在。没有 major alias(例如曾经的 `cibuildwheel@v3`)就换本次查到的 minor 或精确 tag。
|
|
66
|
+
- runner label 在 `actions/runner-images` 当前 supported 列表里。已知退役:`macos-13` / `macos-12` / `macos-11` / `ubuntu-20.04`。新退役的同样不能用。表里没写但还在支持的不要判死。
|
|
67
|
+
- manylinux / musllinux 按这次要装的 wheel 实际 platform tag 选。旧镜像装不上就换,不要把 `_2_28` 当成永远唯一。
|
|
68
|
+
- `setuptools` / `packaging` / `Cython` 的下限来自 PEP 639 把旧 packaging 打爆那次。license expression 仍缺 `packaging.licenses` 时,按这几个包当前 release 的依赖说明抬下限。数字对不上就换,不要把 77 / 24.2 写成唯一修复。
|
|
69
|
+
|
|
70
|
+
当次选出的 tag 和 label 不要写回本 skill 或模板,当成新的永远默认。
|
|
71
|
+
|
|
59
72
|
---
|
|
60
73
|
|
|
61
74
|
## 场景 1:Python Cython wheel + PyPI OIDC
|
|
62
75
|
|
|
63
76
|
适用:含 Cython 编译扩展的 Python 包、跨平台 wheel 分发(linux x86_64/aarch64 + macOS x86_64/arm64 + Windows AMD64)、GitHub Actions + cibuildwheel + PyPI Trusted Publisher OIDC 发版。
|
|
64
77
|
|
|
65
|
-
模板:复制 `./references/release-workflow-template.yml` 到目标项目 `.github/workflows/release.yml
|
|
78
|
+
模板:复制 `./references/release-workflow-template.yml` 到目标项目 `.github/workflows/release.yml`。action tag、runner label、manylinux 镜像先按上一节核对,再改:
|
|
66
79
|
|
|
67
80
|
1. `package-dir: <PACKAGE_DIR>`:实际 SDK 子目录;单包仓库填 `.` 或省略。
|
|
68
81
|
2. `CIBW_BUILD`:按需调整 Python 版本枚举。
|
|
@@ -75,13 +88,13 @@ rg -n "Cython|ext_modules|Extension|cibuildwheel|pypa/gh-action-pypi-publish|lic
|
|
|
75
88
|
|
|
76
89
|
检查点:
|
|
77
90
|
|
|
78
|
-
- `[build-system].requires`
|
|
79
|
-
- `pypa/cibuildwheel`
|
|
91
|
+
- `[build-system].requires` 要能通过当前的 license expression 检查。当时踩坑的下限是 `setuptools>=77`、`packaging>=24.2`、`wheel`、`Cython>=3.0.10`,以这几个包当前 release 说明为准。
|
|
92
|
+
- `pypa/cibuildwheel` 用仓库里真实存在的 minor tag 或精确 tag。`@v3.4` 是当时的例子,不要写不存在的 `@v3`。复制前再查一次 tag。
|
|
80
93
|
- monorepo 用 `with.package-dir`,测试命令使用 `{package}`,不要用 `{project}/tests`。
|
|
81
94
|
- 跨平台 shell 参数用外单内双:`'pytest {package}/tests -v -k "not requires_server"'`。
|
|
82
|
-
- Linux 依赖 pyarrow / pandas / numpy / scipy / lxml 时,manylinux
|
|
95
|
+
- Linux 依赖 pyarrow / pandas / numpy / scipy / lxml 时,manylinux 镜像按这些 wheel 当前的 platform tag 选。当时需要 `manylinux_2_28`。
|
|
83
96
|
- test 阶段大依赖用 binary-only 预装:`CIBW_BEFORE_TEST: "pip install --only-binary=:all: pyarrow pandas"`。
|
|
84
|
-
- macOS x86_64
|
|
97
|
+
- macOS x86_64 用当次 supported 的 intel label。写作时是 `macos-15-intel`。不要用已退役的 `macos-13`。
|
|
85
98
|
- 默认只发布 wheel。不要发布 sdist,避免 Cython 编译模块源码随 sdist 泄漏。
|
|
86
99
|
|
|
87
100
|
### Python 8 个高频坑
|
|
@@ -164,7 +177,9 @@ CIBW_TEST_COMMAND: "pytest {package}/tests -v -k 'not requires_server'"
|
|
|
164
177
|
CIBW_TEST_COMMAND: 'pytest {package}/tests -v -k "not requires_server"'
|
|
165
178
|
```
|
|
166
179
|
|
|
167
|
-
#### 坑 6:manylinux
|
|
180
|
+
#### 坑 6:manylinux 镜像低于 wheel 要求的 platform tag
|
|
181
|
+
|
|
182
|
+
当时 pyarrow 等需要 `manylinux_2_28`。以这次要装的 wheel 为准,不要把 `_2_28` 当成永远唯一。
|
|
168
183
|
|
|
169
184
|
```yaml
|
|
170
185
|
env:
|
|
@@ -181,7 +196,9 @@ env:
|
|
|
181
196
|
CIBW_TEST_COMMAND: 'pytest {package}/tests -v -k "not requires_server"'
|
|
182
197
|
```
|
|
183
198
|
|
|
184
|
-
#### 坑 8
|
|
199
|
+
#### 坑 8:退役 runner
|
|
200
|
+
|
|
201
|
+
`macos-13` 当时已退休。下面这组 label 是当时的 supported 先验,写之前再查 `actions/runner-images`。
|
|
185
202
|
|
|
186
203
|
```yaml
|
|
187
204
|
matrix:
|
|
@@ -212,17 +229,17 @@ rg -n "electron|electron-builder|electron-forge|pack|dist|dmg|AppImage|nsis|appx
|
|
|
212
229
|
检查点:
|
|
213
230
|
|
|
214
231
|
- `package.json` 明确 `electron` 和打包工具版本,例如 `electron-builder`。
|
|
215
|
-
- workflow
|
|
216
|
-
- Node
|
|
232
|
+
- workflow 用当前仍存在的 checkout tag(写作时常见 `actions/checkout@v4`)。项目依赖 submodule 时必须 `submodules: true`。tag 404 或已废弃就换本次查到的 tag。
|
|
233
|
+
- Node 版本按项目引擎固定到具体版本。`actions/setup-node@v4` + `node-version: 20` 只是当时的例子,不是唯一合法版本。
|
|
217
234
|
- 使用锁文件安装:npm 项目用 `npm ci`,pnpm 项目用 `pnpm install --frozen-lockfile`。
|
|
218
235
|
- 每个平台在对应 runner 上打包,不要指望一个 Linux runner 交叉产出 macOS / Windows 完整安装包。
|
|
219
|
-
- macOS x64 和 arm64
|
|
236
|
+
- macOS x64 和 arm64 分开。写作时 x64 是 `macos-15-intel`,arm64 是 `macos-latest` / `macos-14`。写之前再查 supported labels。
|
|
220
237
|
- Linux AppImage 需要系统依赖,常见为 `icnsutils graphicsmagick xz-utils`。
|
|
221
238
|
- Linux runner 上 `apt-get update` 前可移除易失效的 Microsoft / Azure apt source,避免第三方源拖死打包。
|
|
222
239
|
- 未配置证书但要产出 unsigned 包时,设置 `CSC_IDENTITY_AUTO_DISCOVERY: false`,避免 electron-builder 自动找证书导致 macOS job 失败。
|
|
223
240
|
- 产物命名必须包含 `${version}`、`${os}`、`${arch}`,避免 Release asset 覆盖。
|
|
224
241
|
- upload-artifact 只上传最终安装包:`*.dmg`、`*.exe`、`*.AppImage`;不要上传 `win-unpacked/`。
|
|
225
|
-
- GitHub Release job 需要 `permissions: contents: write
|
|
242
|
+
- GitHub Release job 需要 `permissions: contents: write`。汇总产物用当前仍存在的 `actions/download-artifact` tag(写作时常见 `@v4`)+ `merge-multiple: true`。
|
|
226
243
|
|
|
227
244
|
### Electron 推荐 workflow 形态
|
|
228
245
|
|
|
@@ -232,7 +249,7 @@ rg -n "electron|electron-builder|electron-forge|pack|dist|dmg|AppImage|nsis|appx
|
|
|
232
249
|
|
|
233
250
|
#### 坑 1:macOS x64 / arm64 不能混跑
|
|
234
251
|
|
|
235
|
-
macOS x64
|
|
252
|
+
macOS x64 用当次 supported 的 intel label(写作时是 `macos-15-intel`)。macOS arm64 用当次 arm label(写作时是 `macos-latest` / `macos-14`)。不要用已退役的 `macos-13`。
|
|
236
253
|
|
|
237
254
|
#### 坑 2:Linux 打 AppImage 缺系统依赖
|
|
238
255
|
|
|
@@ -353,12 +370,12 @@ git push origin v1.2.3
|
|
|
353
370
|
|---|---|---|
|
|
354
371
|
| YAML 解析 | env / run 含 `:` 未加引号,run 几秒 fail 且 jobs 为空 | 致命 |
|
|
355
372
|
| action tag | `pypa/cibuildwheel@v3` 等不存在 alias | 致命 |
|
|
356
|
-
| runner |
|
|
373
|
+
| runner | 不在当次 supported 列表里。已知退役:`macos-13` / `macos-12` / `ubuntu-20.04` | 致命 |
|
|
357
374
|
| artifact | matrix 上传同名产物或未带平台架构 | 高 |
|
|
358
|
-
| Python build-system |
|
|
375
|
+
| Python build-system | license expression 但构建环境缺 `packaging.licenses`(当时的下限是 `packaging>=24.2`) | 致命 |
|
|
359
376
|
| Python test path | monorepo 子目录用 `{project}/tests` | 高 |
|
|
360
377
|
| Python shell 引号 | Windows 跨平台命令里用单引号包参数 | 高 |
|
|
361
|
-
| Python manylinux |
|
|
378
|
+
| Python manylinux | 镜像低于这次 wheel 要求的 platform tag(当时常见仍停在 manylinux2014) | 高 |
|
|
362
379
|
| Electron macOS | x64 / arm64 未拆 runner | 高 |
|
|
363
380
|
| Electron Linux | AppImage 缺 `icnsutils graphicsmagick xz-utils` | 高 |
|
|
364
381
|
| Electron 签名 | unsigned 构建未设 `CSC_IDENTITY_AUTO_DISCOVERY: false` | 中 |
|
|
@@ -3,12 +3,14 @@
|
|
|
3
3
|
# 来源参考: 某 Electron 桌面应用多平台打包实战 (release.yml + pack.mjs)
|
|
4
4
|
#
|
|
5
5
|
# 使用前按项目实际情况替换:
|
|
6
|
-
# 1. node-version
|
|
6
|
+
# 1. node-version(模板里的 20 只是当时的例子)
|
|
7
7
|
# 2. 包管理器安装命令(npm ci / pnpm install --frozen-lockfile)
|
|
8
8
|
# 3. build / pack 命令
|
|
9
9
|
# 4. Linux 系统依赖
|
|
10
10
|
# 5. 签名 / 公证 secrets
|
|
11
11
|
# 6. artifact path 和文件命名
|
|
12
|
+
# 7. uses: 的 action tag 和 runs-on label。对照该 action 仓库的 tag 和 runner-images。
|
|
13
|
+
# 模板里的 @v4 / @v2、macos-14、ubuntu-latest 只是起点,不是必须版本。
|
|
12
14
|
|
|
13
15
|
name: Build and Release
|
|
14
16
|
|
|
@@ -1,13 +1,16 @@
|
|
|
1
1
|
# Python Cython SDK 跨平台 wheel + PyPI Trusted Publisher 发版 workflow 模板
|
|
2
2
|
#
|
|
3
|
-
#
|
|
4
|
-
#
|
|
3
|
+
# action tag、runner label、manylinux 镜像、setuptools/packaging/Cython 下限都是写作时的先验。
|
|
4
|
+
# 复制前对照 action 仓库的 tag 和 actions/runner-images 的 supported labels。
|
|
5
|
+
# tag 404、label 退役、wheel 的 platform tag 对不上,就换这次查到的值。不要把新值写回本模板。
|
|
6
|
+
#
|
|
7
|
+
# 复制到项目 .github/workflows/release.yml 后还要改:
|
|
5
8
|
# 1. package-dir: <PACKAGE_DIR> —— 实际 SDK 子目录(monorepo 必填,单包仓库填 . 或省略)
|
|
6
9
|
# 2. CIBW_BUILD —— 按需调整 Python 版本枚举
|
|
7
10
|
#
|
|
8
|
-
#
|
|
9
|
-
# 1.
|
|
10
|
-
#
|
|
11
|
+
# 配套:
|
|
12
|
+
# 1. license expression 仍缺 packaging.licenses 时,按当前 release 说明抬 setuptools/packaging 下限。
|
|
13
|
+
# 当时踩坑的起点是 "setuptools>=77", "packaging>=24.2", "wheel", "Cython>=3.0.10"
|
|
11
14
|
# 2. PyPI Trusted Publisher 已配(owner/repo/workflow=release.yml/environment=pypi)
|
|
12
15
|
# 3. GitHub Settings → Environments 存在名为 "pypi" 的 environment
|
|
13
16
|
|
|
@@ -34,7 +34,7 @@ description: "Use when 用户要上架、发 iOS/macOS 版本、填 App Store Co
|
|
|
34
34
|
|
|
35
35
|
## 每版本处理
|
|
36
36
|
|
|
37
|
-
1. **推广文本不向用户询问**。现网有内容则原样拷进 `promotional_text
|
|
37
|
+
1. **推广文本不向用户询问**。现网有内容则原样拷进 `promotional_text`。与本版卖点明显不符时自行改写,改前可上网核对卖点是否仍准确。双语各不超过 [aso.md](references/aso.md) 的推广文本上限(当前先验 170)。Connect 拒收后改用当前字段限制。首次无现网则按名称/副标题/描述生成。
|
|
38
38
|
2. **更新说明**:后续版本 `whats_new` 双语必填。给用户看的概览,写「新增某某功能」这类句子,机制细节不写,可用「等等」。禁止把 `dwy-publish` 的 git `CHANGELOG` 或实现细节贴进商店。首次上架可空。
|
|
39
39
|
3. **截图**:默认 `screenshots.update=false`,拷上一版本,不问。出现任一情况必须更新:新主界面、新核心能力、旧图已不能代表产品、**What's New 写了的能力在现网截图里看不到**。按 [screenshot-specs.yaml](references/screenshot-specs.yaml) 处理;已送审版本改图见 [screenshot-workflow.md](references/screenshot-workflow.md)「送审后锁死」。
|
|
40
40
|
4. **发布策略**:向用户确认二选一——过审即发(`AFTER_APPROVAL`),或过审后几天再发(`SCHEDULED` + `delay_days`)。选几天则再问天数。未选不得提交。
|
|
@@ -52,7 +52,7 @@ localizations:
|
|
|
52
52
|
screenshots:
|
|
53
53
|
ios: { zh-Hans: [], en-US: [] }
|
|
54
54
|
macos: { zh-Hans: [], en-US: [] }
|
|
55
|
-
# 每个内购条目必须带 `review_screenshot
|
|
55
|
+
# 每个内购条目必须带 `review_screenshot`。像素只读 references/screenshot-specs.yaml 的 macos_iap_review,不要在这里另写尺寸。
|
|
56
56
|
in_app_purchases: []
|
|
57
57
|
subscriptions: []
|
|
58
58
|
review:
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
## 采集与上传
|
|
8
8
|
|
|
9
9
|
1. 使用审核账号或 StoreKit 测试环境进入目标商品购买页。
|
|
10
|
-
2.
|
|
10
|
+
2. 按 [screenshot-specs.yaml](screenshot-specs.yaml) 的 `macos_iap_review.preferred` 导出 PNG 或 JPG,移除用户身份、支付凭据和生产数据。该条目当前先验是 `1280 × 800`。被拒后改那份规格,不要在这里另写像素。
|
|
11
11
|
3. 上传前校验精确像素、RGB、无透明通道和单张文件约束。
|
|
12
12
|
4. 通过 `inAppPurchaseAppStoreReviewScreenshots` 的预留、上传、提交流程写入对应内购;上传后读取资源状态确认成功。
|
|
13
13
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: dwy-publish
|
|
3
|
-
description: "发版/部署编排器。触发条件:用户说\"发版\"\"部署\"\"发布上线\"\"release\"\"publish\"\"走发版流程\"时。按应用目录确认发布方式并缓存,串起定版本→changelog→安全检查→打 tag→build
|
|
3
|
+
description: "发版/部署编排器。触发条件:用户说\"发版\"\"部署\"\"发布上线\"\"release\"\"publish\"\"走发版流程\"时。按应用目录确认发布方式并缓存,串起定版本→changelog→安全检查→打 tag→build/发布→监控→通知。工厂里有多个项目时,先查出哪些项目的前端或后端有变更,再分别写 changelog。每次更新版本必须打 git tag,tag 版本串与该份 changelog 新版本标题完全一致。版本号决策单独走 dwy-semver,GA 打包走 dwy-github-action-publish,发布前安全检查走 dwy-sdk-spec——本 skill 负责编排,按路径主动调它们。"
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# 发版编排器
|
|
@@ -14,7 +14,7 @@ description: "发版/部署编排器。触发条件:用户说\"发版\"\"部
|
|
|
14
14
|
| 1 | 确认发布方式 + 探测 build/publish 命令 | 项目步 | `scripts/release_config.sh` + `references/publish-config.md` |
|
|
15
15
|
| 2 | 写/校验发布配置(GA workflow / TestFlight 就绪) | 项目步 | `references/publish-config.md` |
|
|
16
16
|
| 3 | 定版本号 + 多文件同步 | 通用步 | `../dwy-semver` + `references/version-sync.md` |
|
|
17
|
-
| 4 | 写 changelog
|
|
17
|
+
| 4 | 写 changelog(先扫工厂内要发的项目,再按每个项目的前端/后端分别写) | 通用步 | `references/changelog.md` |
|
|
18
18
|
| 5 | 安全检查(闸门,未过不发) | 通用步 | `../dwy-sdk-spec` |
|
|
19
19
|
| 6 | commit 版本变更 + 打 tag 并推送 | 通用步 | `references/git-tag.md` |
|
|
20
20
|
| 7 | build + 触发发布 | 项目步 | `references/<平台>.md`;走 GA 引 `../dwy-github-action-publish` |
|
|
@@ -29,6 +29,7 @@ description: "发版/部署编排器。触发条件:用户说\"发版\"\"部
|
|
|
29
29
|
- 安全检查(第 5 步)是闸门,未过不进 tag / 发布。
|
|
30
30
|
- **每次更新版本必须打 tag**(第 6 步):tag 版本串与本次 changelog 新版本标题(`## x.y.z`)完全一致;细则见 `references/git-tag.md`。无 bump 的纯重发可不打新 tag。
|
|
31
31
|
- 若 GA workflow 由 tag 触发,第 6 步 push tag 即触发第 7 步发布。
|
|
32
|
-
-
|
|
32
|
+
- **正式环境分支**:只有 `develop` 和 `preview`。`develop` 发测试环境,版本只能是 `beta` 或 `rc`。正式版只从 `preview` 发。仓库没有这两条分支就先提醒,不自行建分支。用 `develop` 发正式版时,先按 `rules/开发流程/dwy-prod-branch.md` 问用户,未确认不发。
|
|
33
|
+
- 全程 AI 自动判断、自动跑,仅搞不定时才问用户(版本级别拿不准、命令探测不到、配置缺失、构建/发布失败、需删远端 tag)。用 `develop` 部署正式环境时除外,须先问用户。
|
|
33
34
|
- 编排时按文件路径主动加载子 skill(`../dwy-semver`、`../dwy-sdk-spec`、`../dwy-github-action-publish`);这些 skill 也可被用户独立触发。
|
|
34
35
|
- `.dwy/` 缓存提醒用户加进 `.gitignore`。
|
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
|
|
27
27
|
## changelog / tag / 安全检查 / 监控
|
|
28
28
|
|
|
29
|
-
- changelog → `changelog.md
|
|
29
|
+
- changelog → `changelog.md`(写该项目的 `android/CHANGELOG.md`;工厂里多个项目时每个项目各一份)
|
|
30
30
|
- tag → `git-tag.md`(每次 bump 必打;版本串与 changelog `##` 标题一致)
|
|
31
31
|
- 安全检查 → `../dwy-sdk-spec`
|
|
32
32
|
- 监控 + 结果 → `monitor-notify.md`
|
|
@@ -19,6 +19,6 @@
|
|
|
19
19
|
|
|
20
20
|
## changelog / tag / 监控
|
|
21
21
|
|
|
22
|
-
- changelog → `changelog.md
|
|
22
|
+
- changelog → `changelog.md`(写该项目的 `backend/CHANGELOG.md`;工厂里多个项目时每个项目各一份)
|
|
23
23
|
- tag → `git-tag.md`(每次 bump 必打;版本串与 changelog `##` 标题一致)
|
|
24
24
|
- 监控 + verify → `monitor-notify.md`(后端信号:健康检查 / 版本接口 / 运行日志 / 镜像 tag)
|
|
@@ -1,25 +1,41 @@
|
|
|
1
|
-
# CHANGELOG
|
|
1
|
+
# 发版时按项目写 CHANGELOG
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
只在发版写。不发版不写、不升版本。
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
工厂是这次发版的 git 仓库根。工厂下可以有多个项目。每个项目可以各自有前端和后端。changelog 写在那一端自己的目录里。
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
- `ios/CHANGELOG.md`
|
|
9
|
-
- `harmony/CHANGELOG.md`
|
|
10
|
-
- `frontend/CHANGELOG.md`
|
|
11
|
-
- `backend/CHANGELOG.md`
|
|
7
|
+
## 先列出要写的端
|
|
12
8
|
|
|
13
|
-
|
|
9
|
+
1. 找出项目。一个项目是含有可独立发版的前端和/或后端的目录。常见是 `<项目>/frontend` 与 `<项目>/backend`。仓库根下直接就是这两端时,根就是这一个项目。目录名按仓库实际结构认,不套死 `frontend` / `backend` 这两个词。
|
|
10
|
+
2. 一端算存在:该目录有自己的版本来源(前端看 `package.json` 的 `version`,后端看 `pyproject.toml` 的 `version`),或有该端的应用入口。没有这一端就不写。
|
|
11
|
+
3. 决定哪些端要写:
|
|
12
|
+
- 用户点名了项目或端:只写点名的。
|
|
13
|
+
- 没点名:该端目录自上次 release tag 以来有提交才写。没有上次 tag 时,看这次准备发布的提交是否改过该目录。
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
git log <该端上次 tag>..HEAD --oneline -- <项目>/<端>/
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
4. 没有提交的端不写、不升版本、不打 tag。
|
|
20
|
+
5. 写之前先列出清单:项目、端、changelog 路径、有没有变更。清单里该写的还没写完,不进入 tag。
|
|
21
|
+
|
|
22
|
+
该项目下若还有 android / ios / harmony,同样各算一端,不写进前后端的 changelog。
|
|
23
|
+
|
|
24
|
+
## 落点
|
|
25
|
+
|
|
26
|
+
- `<项目>/frontend/CHANGELOG.md`
|
|
27
|
+
- `<项目>/backend/CHANGELOG.md`
|
|
28
|
+
|
|
29
|
+
只有一端的项目只写存在的那一端。不要在工厂根再写一份总表。
|
|
14
30
|
|
|
15
31
|
## 版本标题格式(与 git tag 对齐)
|
|
16
32
|
|
|
17
|
-
|
|
33
|
+
新版本必须用二级标题,版本串单独成标题,供打 tag 原样取用:
|
|
18
34
|
|
|
19
35
|
```markdown
|
|
20
|
-
# <包标识> ←
|
|
36
|
+
# <包标识> ← 作为 tag 的包前缀(如 shop-frontend、@acme/api)
|
|
21
37
|
|
|
22
|
-
## 0.16.1 ←
|
|
38
|
+
## 0.16.1 ← 新版本标题;这一份 changelog 的 tag 版本串必须与此完全一致
|
|
23
39
|
|
|
24
40
|
### Patch Changes
|
|
25
41
|
|
|
@@ -28,30 +44,32 @@ monorepo 下一个仓库可能同时含 android / ios / harmony / frontend / bac
|
|
|
28
44
|
|
|
29
45
|
约束:
|
|
30
46
|
|
|
31
|
-
- 标题里只写 SemVer
|
|
32
|
-
-
|
|
47
|
+
- 标题里只写 SemVer 版本串,不要写 `v0.16.1`、日期或其它后缀
|
|
48
|
+
- 从 `develop` 发:标题是 `x.y.z-beta.N` 或 `x.y.z-rc.N`。从 `preview` 发正式版:标题是 `x.y.z`,不带预发布
|
|
49
|
+
- 该版本串 = 这一端版本来源文件里的 version = 这一份 changelog 即将打的 tag 中的版本部分(见 `git-tag.md`)
|
|
50
|
+
- 各端版本号各自维护。前端升了,不表示后端也要升
|
|
33
51
|
|
|
34
52
|
## 写法
|
|
35
53
|
|
|
36
|
-
1.
|
|
37
|
-
2.
|
|
38
|
-
|
|
39
|
-
```bash
|
|
40
|
-
git log <last-tag>..HEAD --oneline -- <平台子目录>/
|
|
41
|
-
```
|
|
42
|
-
|
|
54
|
+
1. 找这一端的上一个 release tag
|
|
55
|
+
2. 只取这一端目录里的 commit(命令见上)
|
|
43
56
|
3. 按 `feat` / `fix` / `refactor` / `chore` 分组
|
|
44
|
-
4.
|
|
57
|
+
4. 写入这一端的 `CHANGELOG.md`,用 `## <新版本号>` 标注
|
|
58
|
+
|
|
59
|
+
仓库已有自动生成命令(changelogen 等)时优先使用。仍然只覆盖这一端的目录,版本标题仍要满足上面的格式。
|
|
45
60
|
|
|
46
|
-
|
|
61
|
+
写了几份 changelog,就按 `git-tag.md` 各打一个 tag。不要合成一个工厂级 tag。
|
|
47
62
|
|
|
48
63
|
## 自动执行
|
|
49
64
|
|
|
50
|
-
changelog 由 AI
|
|
65
|
+
changelog 由 AI 生成并写入,不逐步确认。只有 commit 无法归类,或分不清项目边界时才问用户。
|
|
51
66
|
|
|
52
67
|
## 禁止
|
|
53
68
|
|
|
54
|
-
-
|
|
69
|
+
- 禁止在工厂根写一份总 CHANGELOG,把多个项目或前端后端混在一起
|
|
70
|
+
- 禁止只写了其中一个项目就进入 tag
|
|
71
|
+
- 禁止把 A 项目的 commit 写进 B 项目
|
|
72
|
+
- 禁止把前端的 commit 写进后端,或反过来
|
|
73
|
+
- 禁止给没有变更的端写一份空版本
|
|
55
74
|
- 禁止 changelog 未写完就进入 tag / 部署
|
|
56
|
-
-
|
|
57
|
-
- 禁止版本标题写成与即将打的 tag 版本串不一致的形式
|
|
75
|
+
- 禁止版本标题与这一份即将打的 tag 版本串不一致
|
|
@@ -19,6 +19,6 @@
|
|
|
19
19
|
|
|
20
20
|
## changelog / tag / 监控
|
|
21
21
|
|
|
22
|
-
- changelog → `changelog.md
|
|
22
|
+
- changelog → `changelog.md`(写该项目的 `frontend/CHANGELOG.md`;工厂里多个项目时每个项目各一份)
|
|
23
23
|
- tag → `git-tag.md`(每次 bump 必打;版本串与 changelog `##` 标题一致)
|
|
24
24
|
- 监控 + verify → `monitor-notify.md`(前端信号:页面访问 / 版本接口 / 产物 hash / CDN 刷新)
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
|
|
23
23
|
## changelog / tag / 安全检查 / 监控
|
|
24
24
|
|
|
25
|
-
- changelog → `changelog.md
|
|
25
|
+
- changelog → `changelog.md`(单包仓库根目录一份;应用工厂按每个项目的前端/后端分写)
|
|
26
26
|
- tag → `git-tag.md`(每次 bump 必打;版本串与 changelog `##` 标题一致;monorepo 例:`@dwydev/eui@2.2.3`、`create-dwy@0.16.1`)
|
|
27
27
|
- 安全检查 → `../dwy-sdk-spec`(对外包必查泄露/产物)
|
|
28
28
|
- 监控 + verify → `monitor-notify.md`(包仓库版本查询 / GitHub Release)
|
|
@@ -19,7 +19,7 @@ git push origin <tag>
|
|
|
19
19
|
|
|
20
20
|
## tag 与 changelog 版本对齐(硬规则)
|
|
21
21
|
|
|
22
|
-
tag
|
|
22
|
+
tag 中的**版本串**必须与这一份 CHANGELOG **新版本标题**完全一致,禁止改写。第 4 步写了几份,就各打一个 tag,版本串对应该份标题。
|
|
23
23
|
|
|
24
24
|
| CHANGELOG 写法 | 取出的版本串 |
|
|
25
25
|
|----------------|-------------|
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
|
|
21
21
|
## changelog / tag / 安全检查 / 监控
|
|
22
22
|
|
|
23
|
-
- changelog → `changelog.md
|
|
23
|
+
- changelog → `changelog.md`(写该项目的 `harmony/CHANGELOG.md`;工厂里多个项目时每个项目各一份)
|
|
24
24
|
- tag → `git-tag.md`(每次 bump 必打;版本串与 changelog `##` 标题一致)
|
|
25
25
|
- 安全检查 → `../dwy-sdk-spec`
|
|
26
26
|
- 监控 + 结果 → `monitor-notify.md`
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
|
|
28
28
|
## changelog / tag / 安全检查 / 监控
|
|
29
29
|
|
|
30
|
-
- changelog → `changelog.md
|
|
30
|
+
- changelog → `changelog.md`(写该项目的 `ios/CHANGELOG.md`;工厂里多个项目时每个项目各一份)
|
|
31
31
|
- tag → `git-tag.md`(每次 bump 必打;版本串与 changelog `##` 标题一致)
|
|
32
32
|
- 安全检查 → `../dwy-sdk-spec`(SDK 发布尤其要查泄露)
|
|
33
33
|
- 监控 + 结果 → `monitor-notify.md`
|
|
@@ -87,6 +87,14 @@ description: "语义化版本号(SemVer 2.0.0)决策助手。涉及以下任
|
|
|
87
87
|
|
|
88
88
|
预发布优先级排序、版本比较 11 条规则等细节见 [references/semver-spec.md](references/semver-spec.md)。
|
|
89
89
|
|
|
90
|
+
## 分支上用哪个号
|
|
91
|
+
|
|
92
|
+
只认两条长期分支,和 `rules/开发流程/dwy-prod-branch.md` 同一条。不在发版时不要为了这条去改版本号。
|
|
93
|
+
|
|
94
|
+
- 在 `develop` 发:必须带 `-beta` 或 `-rc`。还在改用 `beta`,准备进 `preview` 用 `rc`。
|
|
95
|
+
- 在 `preview` 发正式版:不带预发布。`rc` 收成正式号时用 `bump.py` 转到正式版。
|
|
96
|
+
- 仓库没有这两条分支:先告诉用户,不要改用 `main` 充当正式分支。
|
|
97
|
+
|
|
90
98
|
## 算出具体版本号
|
|
91
99
|
|
|
92
100
|
`scripts/bump.py` 按 SemVer 归零规则与 node-semver 预发布语义计算,避免手算出错:
|
|
@@ -278,9 +278,9 @@ bash {scripts}/check_db.sh <target> [ssh_opts...]
|
|
|
278
278
|
|
|
279
279
|
### 4.10 硬件识别与资源推荐 — `{scripts}/check_capacity.sh`
|
|
280
280
|
|
|
281
|
-
|
|
281
|
+
输出宿主硬件、容器硬限、`docker stats` 单帧、Postgres/Redis 参数、compose 声明。报告写「本次实测 vs 当前硬限」。冷启动先验表只在没有占用和日志增量时使用。
|
|
282
282
|
|
|
283
|
-
→
|
|
283
|
+
→ 判定见 `references/checks-runtime.md` §「4.10 硬件识别与资源」
|
|
284
284
|
|
|
285
285
|
### 4.11 凭证强度审计 — `{scripts}/check_secrets.sh`
|
|
286
286
|
|
|
@@ -392,8 +392,8 @@ bash {scripts}/check_db.sh <target> [ssh_opts...]
|
|
|
392
392
|
### 4.9 日志大小与防爆检查 (7/9 ✅)
|
|
393
393
|
[...]
|
|
394
394
|
|
|
395
|
-
### 4.10
|
|
396
|
-
|
|
395
|
+
### 4.10 硬件识别与资源 (容器资源 + 日志轮转)
|
|
396
|
+
**写「本次实测 vs 当前硬限」。没有实测才注明用了冷启动先验。不要因为没贴近先验表判失败。**
|
|
397
397
|
|
|
398
398
|
### 4.11 凭证强度审计 (12/15 ✅)
|
|
399
399
|
|
|
@@ -464,9 +464,9 @@ bash {scripts}/check_db.sh <target> [ssh_opts...]
|
|
|
464
464
|
|
|
465
465
|
根据本次失败项归纳的可执行后续动作:
|
|
466
466
|
|
|
467
|
-
- 镜像版本不固定 (4.6) → 跑 `/dwy-docker
|
|
468
|
-
- daemon 未配 registry-mirrors (4.6) → 跑 `/dwy-mirror-source
|
|
469
|
-
-
|
|
467
|
+
- 镜像版本不固定 (4.6) → 跑 `/dwy-docker`,按当次 tag 列表固定;N-1 只是偏好
|
|
468
|
+
- daemon 未配 registry-mirrors,或只是名单里有某个国内域名 (4.6) → 跑 `/dwy-mirror-source`。名单里有源不算通过。当次测延迟和内容。私有库不参加公网竞速
|
|
469
|
+
- 容器无内存硬限,或硬限低于实测占用 (4.10) → 按这次的 `docker stats` 和日志增速改 `mem_limit` / `maxmemory` / `log-opts`,不套用先验表数字
|
|
470
470
|
- ...
|
|
471
471
|
|
|
472
472
|
---
|