开发、测试、发布
同一个版本包先进 test 通道预览,确认后原样发布到 Nexus。

本课目标
读完这一课,你将能够
- 用 init、dev、deploy、publish 四条命令,把一个应用从开发送到 Nexus
- 解释「测过什么发什么」:内容寻址、版本号与两个通道
- 出问题时,用 rollback 回到更早的已测版本
四条命令,一条路
一个应用从无到有,只走一条路:生成、本地预览、进 test 通道、发布到 Nexus。每一步是一条命令,同一个版本包从头走到尾;出了问题,再用一条命令退回去。
- 01开发
init生成应用,dev在本机预览 - 02测试
deploy上传版本,进 test 通道 - 03发布
publish把测过的版本发到 Nexus - 04回滚
rollback切回更早的已测版本
aidc app init shelf-check --template camera
aidc app dev shelf-check
aidc app deploy shelf-check
aidc app publish shelf-check
开发:清单说了算
aidc app init 生成四个文件:清单 aidc.app.json、index.html、app.js 和 style.css。模板有 blank、camera、voice、data、semantic、workflow 几种;页面已经接好界面 SDK,style.css 只写这个应用自己的东西。
清单说明应用是谁、用哪些 SDK、模型和数据、要不要摄像头和麦克风、每天的额度,平台按它放行。Nexus 应用是无状态的:业务数据放在公司的语义层,应用自己不存东西。
版本包就是应用目录里的文件,不超过 200 个,解码后不超过 3 MB。包里一律写相对路径,平台会在入口页注入 <base>,所以同一个包挂在 Developer 和 Nexus 两个地址下都能用。
aidc app dev 在 localhost:5173 起一个本地预览,把 /api/* 转发到 AIDC,并在本机进程里替页面带上开发者 Key;预览期间的模型用量记在你的公司名下。部署之前可以先跑 aidc app check,它和服务端用的是同一份契约。
测试与发布:同一个包
aidc app deploy 上传一个版本、放进 test 通道,给本公司的开发者预览;aidc app publish 把 test 上测过的这个版本,原样晋升到 production 通道,也就是 Nexus。发布不重新打包,发出去的就是测过的那一个。
| test 通道 | production 通道 | |
|---|---|---|
| 怎么进来 | aidc app deploy | aidc app publish |
| 在哪里打开 | Developer 预览 | Nexus |
| 谁能打开 | 本公司的开发者 | 本公司的成员 |
| 版本状态 | 测试中 | 已上线 |
三条规矩保证这一点:
- 内容寻址:同样的文件重复部署,返回已有的版本,不产生新版本,所以重试永远安全。
- 一号一内容:清单里的
version是版本号;文件或清单改了任何东西就要升,否则部署会被拒绝。 - 测过什么发什么:production 只接受进过 test 的版本。
回滚与记录
上线后发现问题,一条命令回退:aidc app rollback 把 production 切回一个更早的已测版本。和发布一样,回退只是移动通道的指针,不重新打包。
aidc app status shelf-check
aidc app rollback shelf-check --version 1.1.0
aidc app history shelf-check
每个版本有两个编号:清单里的版本号,比如 1.2.0;以及记录第几次上传的构建序号。预览页和 Nexus 正式页都显示版本号,预览页还会标明「Developer 预览」。
通道每变一次,平台记一条发布记录:谁、什么时候、哪个通道、做了什么、从哪个版本到哪个版本,以及 --notes 写下的说明。aidc app status 看每个版本的状态,例如已上线、测试中、已回滚;aidc app history 看发布记录。
要点
- 四条命令走完一条路:init、dev、deploy、publish。
- deploy 进 test 通道给开发者预览,publish 把测过的同一个版本发到 Nexus。
- 同样的内容就是同一个版本,重试安全;内容变了就要升版本号。
- rollback 一条命令回到更早的已测版本,每次变动都留有发布记录。
- 应用卡片由平台自动生成,清单写对了,卡片才对。
练一练
发布你的第一个应用
用模板走一遍,重点看每一步返回了什么。
用 --template camera 生成一个应用,本地预览后部署到 test,打开返回的 Developer 预览地址,确认无误再发布。
改一行 app.js,不升 version 就部署,看看报错和退出码;升了版本号再部署一次。
发布第二个版本后,用 aidc app status 看两个版本的状态,回滚到第一个,再用 aidc app history 查发布记录。
小测
选一个答案,马上看解析。
Q1一个文件都没改,又运行了一次 aidc app deploy,会怎样?
版本按内容寻址:同样的内容就是同一个版本,所以重试永远安全。
Q2改了 app.js,却忘了升清单里的 version,部署时会怎样?
同一个应用里,一个版本号只对应一份内容;内容变了就要升版本号。
Q3aidc app publish 做的是什么?
发布不重新打包,只把 production 指向进过 test 的那个版本;没测过的版本发不出去。