Files
2026-09-02 11:44:52 +08:00

59 lines
4.1 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 端到端链路(recipes)
dev 的端到端任务都是「定ä½åº”用,改容器æŸèŠ‚ç‚¹ï¼ŒæŒ‰å®¡æ‰¹éœ€è¦èµ°ç‰ˆæœ¬ç”Ÿæ•ˆï¼Œæœ€åŽå›žè¯»éªŒè¯ã€ã€‚æ¯æ­¥å…ˆ `--dry-run` ç¡®è®¤å† `--yes`ï¼Œå‚æ•°ç”¨å¯¹åº”命令的 `--help` 查询,¼Œç»†èŠ‚è¿›å¯¹åº” reference。
## 建一个钉钉里打开的网页应用
1. `dev app create --name <å>` 建应用,拿 unifiedAppId
2. `dev app webapp config` é…移动端/PC é¦–é¡µï¼ˆè§ webapp.md)
3. `dev app version create` 建版本
4. `dev app version check-approval` 预检是å¦éœ€å®¡æ‰¹
5. `dev app version publish` å‘布(需审批时让用户选审批人)
6. 回读 `dev app version status` 到 `RELEASE` æ‰ç®—生效
## æƒé™ä»Žç”³è¯·åˆ°ç”Ÿæ•ˆ
1. `dev app permission list` 选 `scopeValue`(选择顺åºè§ permission.md)
2. `dev app permission add --scope-values <值>` 申请
3. 若是 `requiredApproval` çš„æƒé™ï¼Œèµ°ç‰ˆæœ¬ï¼š`version create`ï¼Œå† `check-approval`ï¼Œå† `publish --approver-user-id <用户选的>`ï¼Œæœ€åŽ `version status`
4. å…审æƒé™ç›´æŽ¥å¼€é€šï¼Œä¸å¿…å‘版本
## åšä¸€ä¸ªç­”疑机器人并接到本地调试
1. `dev app create --name <å>` 创建应用,拿明确 `unifiedAppId`
2. `dev app robot config --unified-app-id <unifiedAppId>` é…置机器人能力;需è¦å¯ç”¨æ—¶å† `robot enable`
3. 线上使用闭环:`version create` → `check-approval` → `publish` → `version status`ï¼›`SELECT_APPROVER` 时必须等用户选择审批人,ä¸é»˜è®¤å–第一个
4. 本地调试/值守:`dev connect --unified-app-id <unifiedAppId>` 把机器人接到本地 agentï¼ˆè§ connect.md);注æ„订阅事件å‰è¦å…ˆå»ºè”é•¿è¿žï¼ˆè§ event.md)
5. 若走无绑定的 `robot submit/result`ï¼Œåªæœ‰ç»“果返回明确 `unifiedAppId` æ‰èƒ½ç»§ç»­ç‰ˆæœ¬å‘布
6. å®Œæˆæ€ä¸Žç¼º `unifiedAppId`ã€`SELECT_APPROVER` 等门ç¦åˆ¤å®šè§ [devapp.md](../devapp.md)「核心规则ã€ï¼šå»ºè”æˆåŠŸ + 版本进入 `RELEASE`/`AUDIT`/`UNDER_REVIEW` æ‰ç®—完æˆ
## é‡å¯å®ˆæŠ¤è¿›ç¨‹è¿žæŽ¥å™¨ï¼ˆä¸å­˜å¯†é’¥ï¼‰
守护进程被 stop / kill / 崩溃åŽï¼Œé€šè¿‡æŒä¹…化的 `unifiedAppId` 釿–°æ‹‰å–密钥并é‡å¯ï¼Œæ— éœ€æœ¬åœ°ä¿å­˜ AppSecret。
1. `dev connect --daemon --unified-app-id <id> --channel <channel>` 首次å¯åŠ¨ï¼ˆ`unifiedAppId` å’Œ `channel` 会写入 `~/.dws/connect/<key>/daemon.pid`)
2. `dev connect restart --unified-app-id <id>` é‡å¯ï¼šè‡ªåЍ stop 旧进程 → 从 dev 平尿‹‰å– AppKey/Secret → 釿–°å»ºè
3. `dev connect status --unified-app-id <id>` 确认æ¢å¤ `healthy`
4. è‹¥ daemon.pid 未æŒä¹…化 `unifiedAppId`(如用 `--robot-client-id` 直接å¯åŠ¨çš„ï¼‰ï¼Œrestart 会æç¤ºæ”¹ç”¨ `--unified-app-id` å¯åЍ
注æ„:密钥ä¸è½ç›˜ï¼Œæ¯æ¬¡ restart 动æ€ä»Žå¼€å‘者平å°èŽ·å–ï¼›`daemon.pid` åªå­˜ `unifiedAppId`ã€`channel`ã€`clientId`(公开值)。
## 上传图片拿 mediaId(应用图标 / 机器人图标)
åº”ç”¨å›¾æ ‡ã€æœºå™¨äººå›¾æ ‡éƒ½é  mediaId 指定,但 dev 命令集ä¸å«ä¸Šä¼ â€”—mediaId è¦è°ƒé’‰é’‰ OpenAPI 拿到:
1. 拿凭è¯ï¼š`dev app credentials get --unified-app-id <id>` å `appKey/appSecret`(secret æŒ‰æ•æ„Ÿå¤„ç†ï¼Œä¸å†™è¿›å›žç­”)
2. æ¢ access_token:`GET https://oapi.dingtalk.com/gettoken?appkey=<appKey>&appsecret=<appSecret>`,å–返回的 `access_token`(有效期约 7200 ç§’ã€gettoken 有频控,缓存å¤ç”¨åˆ«æ¯æ¬¡ä¸Šä¼ éƒ½æ¢ï¼‰
3. 上传图片:`POST https://oapi.dingtalk.com/media/upload?access_token=<token>&type=image`,multipart 表å•字段å `media`,返回 `media_id`(形如 `@lA...`)。图标用方形图(如 256×256 çš„ jpg/png)
```
curl -F "media=@/path/to/img.png;type=image/png" \
"https://oapi.dingtalk.com/media/upload?access_token=<token>&type=image"
```
4. 用 mediaId 更新:机器人图标 `dev app robot config --unified-app-id <id> --icon-media-id <media_id>`;应用图标 `dev app update --unified-app-id <id> --icon-media-id <media_id>`。写æ“作先 `--dry-run` å† `--yes`
5. 回读:`dev app robot get` 看 `iconMediaId` å˜ä¸ºæ–°å€¼ï¼ˆåº”用图标看 `app get` çš„ `icon`)
## 查「为什么没生效 / 机器人æœä¸åˆ° / æƒé™åŠ äº†è¿˜æŠ¥é”™ã€
å…ˆ `dev app version status`——改é…ç½®ä¸ç­‰äºŽç”Ÿæ•ˆï¼Œæœªå‘到 `RELEASE` å°±ä¸ç”Ÿæ•ˆã€‚