蓝鲸PaaS S-Mart应用完全指南:上传S-Mart包快速交付蓝鲸SaaS
【免费下载链接】blueking-paas蓝鲸智云 PaaS 平台是一个开放式的开发平台,让开发者可以方便快捷地创建、开发、部署和管理 SaaS 应用。它提供了完善的前后台开发框架、服务总线(ESB)、API Gateway、调度引擎、公共组件 等服务。旨在帮助用户快速、低成本的构建免运维运营系统与支撑工具。项目地址: https://gitcode.com/GitHub_Trending/bl/blueking-paas
蓝鲸智云 PaaS 平台(BlueKing PaaS)是腾讯开源的开放式 SaaS 应用开发平台,而S-Mart 应用是它提供的一种"免克隆、免配置"的快速交付方式:只需上传一个包含源码与描述文件的 S-Mart 包,就能在开发者中心一键完成蓝鲸 SaaS 应用的创建与部署。本文带你从概念到实操,完整掌握 S-Mart 应用包上传与构建的全流程。
一、什么是蓝鲸 PaaS 的 S-Mart 应用?
一句话理解:S-Mart 应用 = 源码压缩包 + 描述文件app_desc.yaml。
- 一个 S-Mart 应用由一个包含源码与描述文件的压缩包组成,可直接上传至开发者中心,完成应用创建和版本更新;
- 描述文件
app_desc.yaml存放在源码根目录,声明各模块的进程定义、开发语言、增强服务、服务发现等配置; - 与传统"代码仓库 + CI/CD"模式相比,S-Mart 包可以直接部署到其他环境,天然适合跨环境交付、版本分发与离线导入。
💡 官方设计笔记:apiserver/design_notes/s-mart-app-desc.md,其中详细说明了描述文件 v2 / v3 两种格式版本。
描述文件的两个版本
| 版本 | 命名风格 | 特点 |
|---|---|---|
| 版本 2 | 蛇形命名field_name | 启用较早,字段较少,常用于描述进程信息 |
| 版本 3 | 驼峰命名fieldName | 最新版,Spec 与平台应用模型 BkApp 规范几乎一致 |
无论哪个版本,平台在校验后都会将其统一转换为内部应用模型,开发者无需关心底层细节。
二、上传 S-Mart 包:三步完成蓝鲸 SaaS 创建
蓝鲸 PaaS 为 S-Mart 包提供了两类入口,覆盖"创建应用"和"工具化构建"两个场景:
- 开发者中心 → 创建应用(S-Mart 模式):上传即创建,适合首次交付;
- S-mart 打包工具:将源代码打包为标准 S-Mart 应用包并查看打包历史,适合持续产出与分发。
第 1 步:上传 S-Mart 包
进入创建应用页选择 S-Mart 模式后,将文件拖入上传区或点击上传。前端入口位于 smart.vue,注意事项如下:
- 仅支持蓝鲸 S-mart 包,支持的文件格式包括
.tar、.tgz和.tar.gz; - 上传成功后,平台会解析
app_desc.yaml,在页面上展示应用编码、模块、开发语言、增强服务等信息供确认; - 若应用编码已存在,系统会提示冲突,可修改后重新上传。
第 2 步:平台自动校验源码包
上传后,后端会执行一系列校验逻辑(见 views.py):
- 压缩包解压后必须在根目录找到
app_desc.yaml,否则报"解压后未找到 app_desc.yaml 文件"; - 描述文件内容必须通过格式校验(进程定义、语言等字段合法);
- 描述文件中必须包含应用版本信息(app version),缺失会直接拒绝;
- 校验通过后,源码包以 SHA256 签名方式暂存,供后续构建使用,防止文件被篡改。
相关 API 路由定义在 urls.py,包括上传(upload)、启动构建(build)、构建历史与日志查询等接口。
第 3 步:一键部署蓝鲸 SaaS 应用
信息确认无误后提交,平台随即自动执行:创建应用 → 构建镜像 → 部署上线。整个过程无需手工配置环境变量、探针和副本数——这些都已由app_desc.yaml声明并由平台自动落库。
三、S-mart 打包工具:持续构建 S-Mart 应用包
对于需要反复产出 S-Mart 包的团队,蓝鲸 PaaS 内置了S-mart 打包工具(前端页面见 smart-build-tool/index.vue,路由smart-build-tool),核心能力有 4 个:
- 构建 S-mart 包:上传源代码后一键构建标准应用包;
- 打包历史:按分支 / 包名搜索,查看每次构建的版本、状态、SHA256 签名;
- 构建日志:实时查看并下载完整构建日志;
- 制品下载:构建成功后下载标准命名的应用包,如
{应用编码}-{版本}_paas3_{打包版本}_{签名}.tar.gz(命名规则见 start.py)。
构建过程在背后发生了什么?
- 平台在 Kubernetes 集群中启动一个专用的S-Mart Builder Pod执行构建(Pod 模板与调度逻辑见 handler.py);
- 构建全程带超时保护:重复提交会被拒绝,超时的构建 Pod 会被自动清理重建;
- 制品缓存命中:若相同签名的制品已存在于对象存储,平台直接跳过构建、秒级返回成功,重复打包几乎零成本。
四、新手常见坑与最佳实践
| 常见问题 | 原因 | 解决建议 |
|---|---|---|
| 提示"未找到 app_desc.yaml" | 描述文件不在压缩包根目录 | 将app_desc.yaml放在打包根目录下,避免多套一层目录 |
| 提示"缺少 app version 信息" | 描述文件未声明版本号 | 在app_desc.yaml中补充应用版本字段 |
| 提示"文件签名不一致" | 包被二次修改或暂存已过期 | 重新上传最新源码包再构建 |
| 提示"正在构建中,请勿重复提交" | 同一应用已有构建任务在执行 | 等待当前构建结束,勿并发提交 |
最佳实践清单✅
- 优先使用版本 3的
app_desc.yaml,与平台应用模型对齐,字段能力最全; - 进程信息可保留
Procfile兜底,但冲突时以Procfile为准(兼容历史项目); - 增强服务只可新增、不可删除(平台侧会保留已绑定服务);
- 交付前务必下载构建日志核对一遍,并保存制品包的 SHA256 签名便于审计。
五、小结
蓝鲸 PaaS 的 S-Mart 应用让"交付一个蓝鲸 SaaS"简化为三步:准备包 → 上传校验 → 自动构建部署。配合 S-mart 打包工具的历史、日志与制品下载能力,以及构建缓存的秒级命中,无论是首次上线还是跨环境分发,都能以极低的运维成本完成交付。相关后端实现可进一步参考 apiserver/paasng/paasng/misc/tools/smart_app/ 目录,接口测试用例见 test_smart_app.py。
【免费下载链接】blueking-paas蓝鲸智云 PaaS 平台是一个开放式的开发平台,让开发者可以方便快捷地创建、开发、部署和管理 SaaS 应用。它提供了完善的前后台开发框架、服务总线(ESB)、API Gateway、调度引擎、公共组件 等服务。旨在帮助用户快速、低成本的构建免运维运营系统与支撑工具。项目地址: https://gitcode.com/GitHub_Trending/bl/blueking-paas
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考