开发、测试、发布

第 4 课 · 共 6 课 约 7 分钟

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

本课目标

读完这一课,你将能够

  • 用 init、dev、deploy、publish 四条命令,把一个应用从开发送到 Nexus
  • 解释「测过什么发什么」:内容寻址、版本号与两个通道
  • 出问题时,用 rollback 回到更早的已测版本

四条命令,一条路

一个应用从无到有,只走一条路:生成、本地预览、进 test 通道、发布到 Nexus。每一步是一条命令,同一个版本包从头走到尾;出了问题,再用一条命令退回去。

  1. 01开发init 生成应用,dev 在本机预览
  2. 02测试deploy 上传版本,进 test 通道
  3. 03发布publish 把测过的版本发到 Nexus
  4. 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 deployaidc 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 预览地址,确认无误再发布。

小测

选一个答案,马上看解析。

Q1一个文件都没改,又运行了一次 aidc app deploy,会怎样?

Q2改了 app.js,却忘了升清单里的 version,部署时会怎样?

Q3aidc app publish 做的是什么?

延伸阅读